From 55d9d4e2e95f55c7cfdb282b8680613c0b96c63c Mon Sep 17 00:00:00 2001 From: hackerman <3372410+aeneasr@users.noreply.github.com> Date: Wed, 9 Feb 2022 21:03:10 +0100 Subject: [PATCH] refactor: move documentation to ory/docs and move to OAS3.0 generator (#833) Co-authored-by: zepatrik --- .github/workflows/buf.yml | 36 - .github/workflows/ci.yaml | 79 +- .schema/openapi/gen.go.yml | 6 + .schema/openapi/gen.typescript.yml | 7 + .schema/openapi/patches/health.yaml | 94 + .schema/openapi/patches/meta.yaml | 12 + .schema/openapi/templates/go/.travis.yml | 8 + .schema/openapi/templates/go/README.mustache | 221 + .schema/openapi/templates/go/api.mustache | 377 + .schema/openapi/templates/go/api_doc.mustache | 92 + .schema/openapi/templates/go/client.mustache | 583 + .../templates/go/configuration.mustache | 303 + .../openapi/templates/go/git_push.sh.mustache | 58 + .../openapi/templates/go/gitignore.mustache | 24 + .schema/openapi/templates/go/go.mod.mustache | 10 + .schema/openapi/templates/go/go.sum | 13 + .schema/openapi/templates/go/model.mustache | 20 + .../openapi/templates/go/model_anyof.mustache | 76 + .../openapi/templates/go/model_doc.mustache | 97 + .../openapi/templates/go/model_enum.mustache | 71 + .../openapi/templates/go/model_oneof.mustache | 114 + .../templates/go/model_simple.mustache | 391 + .../templates/go/nullable_model.mustache | 35 + .schema/openapi/templates/go/openapi.mustache | 1 + .../templates/go/partial_header.mustache | 18 + .../openapi/templates/go/response.mustache | 38 + .schema/openapi/templates/go/signing.mustache | 415 + .schema/openapi/templates/go/utils.mustache | 326 + Makefile | 35 +- buf.gen.yaml | 4 +- doc_swagger.go | 19 +- docs/.editorconfig | 8 - docs/.generated/.gitignore | 1 + docs/.gitignore | 24 - 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 | 118 - docs/.widdershins/templates/operation.dot | 184 - docs/.widdershins/templates/parameters.def | 42 - docs/.widdershins/templates/responses.def | 94 - docs/.widdershins/templates/security.def | 16 - docs/.widdershins/templates/translations.dot | 16 - docs/README.md | 29 +- docs/config.js | 59 - docs/contrib/api.swagger.json | 4 - docs/contrib/config.js | 28 - docs/contrib/docs/index.md | 5 - docs/contrib/sidebar.js | 93 - docs/contrib/sidebar.json | 22 - docs/contrib/theme.css | 13 - docs/docs/.gitkeep | 0 docs/docs/.static/api.json | 1112 - docs/docs/CHANGELOG.md | 0 docs/docs/cli/keto-check.md | 45 - docs/docs/cli/keto-expand.md | 44 - docs/docs/cli/keto-migrate-down.md | 43 - docs/docs/cli/keto-migrate-status.md | 42 - docs/docs/cli/keto-migrate-up.md | 51 - docs/docs/cli/keto-migrate.md | 39 - docs/docs/cli/keto-namespace-migrate-down.md | 20 - .../docs/cli/keto-namespace-migrate-legacy.md | 50 - .../docs/cli/keto-namespace-migrate-status.md | 21 - docs/docs/cli/keto-namespace-migrate-up.md | 20 - docs/docs/cli/keto-namespace-migrate.md | 33 - docs/docs/cli/keto-namespace-validate.md | 41 - docs/docs/cli/keto-namespace.md | 34 - docs/docs/cli/keto-relation-tuple-create.md | 46 - .../cli/keto-relation-tuple-delete-all.md | 54 - docs/docs/cli/keto-relation-tuple-delete.md | 47 - docs/docs/cli/keto-relation-tuple-get.md | 51 - docs/docs/cli/keto-relation-tuple-parse.md | 44 - docs/docs/cli/keto-relation-tuple.md | 40 - docs/docs/cli/keto-serve.md | 49 - docs/docs/cli/keto-status.md | 45 - docs/docs/cli/keto-version.md | 35 - docs/docs/cli/keto.md | 36 - docs/docs/concepts/api-overview.mdx | 96 - docs/docs/concepts/graph-of-relations.mdx | 92 - docs/docs/concepts/internal-algorithms.mdx | 9 - docs/docs/concepts/namespaces.mdx | 70 - docs/docs/concepts/objects.mdx | 63 - docs/docs/concepts/relation-tuples.mdx | 45 - .../snaptokens-evaluation-consistency.mdx | 6 - docs/docs/concepts/subjects.mdx | 83 - docs/docs/contributing.md | 268 - docs/docs/examples/olymp-file-sharing.mdx | 73 - .../guides/access-control-inheritance.mdx | 7 - ...ess-control-list-design-best-practices.mdx | 11 - .../expand-api-display-who-has-access.mdx | 100 - docs/docs/guides/list-api-display-objects.mdx | 129 - docs/docs/guides/production.md | 27 - docs/docs/guides/rbac.mdx | 7 - .../docs/guides/simple-access-check-guide.mdx | 144 - docs/docs/guides/v0.7-migration.mdx | 70 - docs/docs/implemented-planned-features.mdx | 36 - docs/docs/index.md | 33 - docs/docs/install.md | 84 - docs/docs/milestones.md | 457 - docs/docs/performance.mdx | 76 - docs/docs/quickstart.mdx | 151 - docs/docs/reference/configuration.md | 744 - docs/docs/reference/proto-api.mdx | 296 - docs/docs/reference/rest-api.mdx | 12 - docs/docs/sdk/index.md | 42 - docs/docs/secure.md | 15 - docs/docusaurus.config.js | 205 - docs/package-lock.json | 29869 ---------------- docs/package.json | 67 - docs/scripts/config.js | 266 - docs/scripts/docker-tag.js | 51 - docs/scripts/fix-api.js | 55 - docs/scripts/gen-faq.js | 105 - docs/scripts/rerelease.js | 15 - docs/sidebar.json | 76 - docs/src/css/.gitkeep | 0 docs/src/css/theme.css | 18 - docs/src/pages/http-api.js | 27 - docs/src/pages/versions.js | 107 - .../docusaurus-plugin-matamo/analytics.js | 36 - .../plugins/docusaurus-plugin-matamo/index.js | 47 - .../docusaurus-plugin-matamo/package.json | 4 - docs/src/plugins/ory-scripts-loader/index.js | 16 - .../ory-scripts-loader/ory-scripts-loader.js | 23 - .../plugins/ory-scripts-loader/package.json | 3 - docs/src/theme/API.js | 9 - docs/src/theme/API.module.css | 19 - docs/src/theme/CodeFromRemote.js | 100 - docs/src/theme/CodeFromRemote.module.css | 3 - docs/src/theme/CodeTabs/index.js | 45 - docs/src/theme/Faq.js | 54 - docs/src/theme/Footer/index.js | 123 - docs/src/theme/Footer/styles.module.css | 15 - docs/src/theme/Mermaid.js | 73 - docs/src/theme/RoutedDocPage/index.tsx | 7 - .../src/theme/RoutedDocPage/styles.module.css | 80 - docs/src/theme/faq.module.css | 83 - docs/src/theme/ketoRelationTuplesPrism.js | 57 - docs/src/theme/mermaid.module.css | 44 - docs/src/theme/prism-include-languages.js | 27 - docs/static/img/favico.png | Bin 6784 -> 0 bytes docs/static/img/logo-docs.svg | 8 - docs/static/img/logo-docusaurus-template.svg | 8 - docs/static/img/logo-hydra.svg | 9 - docs/static/img/logo-keto.svg | 9 - docs/static/img/logo-kratos.svg | 9 - docs/static/img/logo-oathkeeper.svg | 9 - docs/versioned_docs/version-v0.5/.gitkeep | 0 .../version-v0.5/configure-deploy.md | 166 - .../version-v0.5/engines/acl.md | 47 - .../version-v0.5/engines/acp-aws.md | 11 - .../version-v0.5/engines/acp-ory.md | 600 - .../version-v0.5/engines/images/rbac.png | Bin 34841 -> 0 bytes .../version-v0.5/engines/images/rbac.xml | 1 - .../version-v0.5/engines/index.md | 18 - .../version-v0.5/engines/rbac.md | 59 - docs/versioned_docs/version-v0.5/index.md | 31 - docs/versioned_docs/version-v0.5/install.md | 83 - .../version-v0.5/reference/api.md | 3107 -- .../version-v0.5/reference/configuration.md | 431 - docs/versioned_docs/version-v0.5/sdk/index.md | 29 - docs/versioned_docs/version-v0.5/secure.md | 15 - docs/versioned_docs/version-v0.6/.gitkeep | 0 .../version-v0.6/cli/keto-check.md | 44 - .../version-v0.6/cli/keto-expand.md | 43 - .../version-v0.6/cli/keto-migrate-down.md | 44 - .../version-v0.6/cli/keto-migrate-status.md | 42 - .../version-v0.6/cli/keto-migrate-up.md | 44 - .../version-v0.6/cli/keto-migrate.md | 39 - .../cli/keto-namespace-migrate-down.md | 44 - .../cli/keto-namespace-migrate-status.md | 43 - .../cli/keto-namespace-migrate-up.md | 44 - .../cli/keto-namespace-migrate.md | 37 - .../cli/keto-namespace-validate.md | 40 - .../version-v0.6/cli/keto-namespace.md | 33 - .../cli/keto-relation-tuple-create.md | 46 - .../cli/keto-relation-tuple-delete.md | 47 - .../cli/keto-relation-tuple-get.md | 49 - .../cli/keto-relation-tuple-parse.md | 44 - .../version-v0.6/cli/keto-relation-tuple.md | 38 - .../version-v0.6/cli/keto-serve.md | 49 - .../version-v0.6/cli/keto-status.md | 45 - .../version-v0.6/cli/keto-version.md | 35 - docs/versioned_docs/version-v0.6/cli/keto.md | 36 - .../version-v0.6/concepts/api-overview.mdx | 89 - .../concepts/graph-of-relations.mdx | 92 - .../concepts/internal-algorithms.mdx | 9 - .../version-v0.6/concepts/namespaces.mdx | 79 - .../version-v0.6/concepts/objects.mdx | 63 - .../version-v0.6/concepts/relation-tuples.mdx | 45 - .../snaptokens-evaluation-consistency.mdx | 6 - .../version-v0.6/concepts/subjects.mdx | 83 - .../version-v0.6/contributing.md | 260 - .../examples/olymp-file-sharing.mdx | 73 - .../guides/access-control-inheritance.mdx | 7 - ...ess-control-list-design-best-practices.mdx | 11 - .../expand-api-display-who-has-access.mdx | 100 - .../guides/list-api-display-objects.mdx | 129 - .../version-v0.6/guides/production.md | 27 - .../version-v0.6/guides/rbac.mdx | 7 - .../guides/simple-access-check-guide.mdx | 144 - .../implemented-planned-features.mdx | 36 - docs/versioned_docs/version-v0.6/index.md | 33 - docs/versioned_docs/version-v0.6/install.md | 84 - .../versioned_docs/version-v0.6/milestones.md | 401 - .../version-v0.6/performance.mdx | 76 - .../version-v0.6/quickstart.mdx | 151 - .../version-v0.6/reference/api.mdx | 2105 -- .../version-v0.6/reference/configuration.md | 698 - .../version-v0.6/reference/proto-api.mdx | 275 - .../version-v0.6/reference/rest-api.mdx | 2105 -- docs/versioned_docs/version-v0.6/sdk/index.md | 41 - docs/versioned_docs/version-v0.6/secure.md | 15 - docs/versioned_docs/version-v0.7/.gitkeep | 0 .../version-v0.7/.static/api.json | 1110 - docs/versioned_docs/version-v0.7/CHANGELOG.md | 0 .../version-v0.7/cli/keto-check.md | 44 - .../version-v0.7/cli/keto-expand.md | 44 - .../version-v0.7/cli/keto-migrate-down.md | 43 - .../version-v0.7/cli/keto-migrate-status.md | 42 - .../version-v0.7/cli/keto-migrate-up.md | 51 - .../version-v0.7/cli/keto-migrate.md | 39 - .../cli/keto-namespace-migrate-down.md | 20 - .../cli/keto-namespace-migrate-legacy.md | 50 - .../cli/keto-namespace-migrate-status.md | 21 - .../cli/keto-namespace-migrate-up.md | 20 - .../cli/keto-namespace-migrate.md | 33 - .../cli/keto-namespace-validate.md | 41 - .../version-v0.7/cli/keto-namespace.md | 34 - .../cli/keto-relation-tuple-create.md | 46 - .../cli/keto-relation-tuple-delete.md | 47 - .../cli/keto-relation-tuple-get.md | 50 - .../cli/keto-relation-tuple-parse.md | 44 - .../version-v0.7/cli/keto-relation-tuple.md | 38 - .../version-v0.7/cli/keto-serve.md | 49 - .../version-v0.7/cli/keto-status.md | 45 - .../version-v0.7/cli/keto-version.md | 35 - docs/versioned_docs/version-v0.7/cli/keto.md | 36 - .../version-v0.7/concepts/api-overview.mdx | 89 - .../concepts/graph-of-relations.mdx | 92 - .../concepts/internal-algorithms.mdx | 9 - .../version-v0.7/concepts/namespaces.mdx | 70 - .../version-v0.7/concepts/objects.mdx | 63 - .../version-v0.7/concepts/relation-tuples.mdx | 45 - .../snaptokens-evaluation-consistency.mdx | 6 - .../version-v0.7/concepts/subjects.mdx | 83 - .../version-v0.7/contributing.md | 268 - .../examples/olymp-file-sharing.mdx | 73 - .../guides/access-control-inheritance.mdx | 7 - ...ess-control-list-design-best-practices.mdx | 11 - .../expand-api-display-who-has-access.mdx | 100 - .../guides/list-api-display-objects.mdx | 129 - .../version-v0.7/guides/production.md | 27 - .../version-v0.7/guides/rbac.mdx | 7 - .../guides/simple-access-check-guide.mdx | 144 - .../version-v0.7/guides/v0.7-migration.mdx | 70 - .../implemented-planned-features.mdx | 36 - docs/versioned_docs/version-v0.7/index.md | 33 - docs/versioned_docs/version-v0.7/install.md | 84 - .../versioned_docs/version-v0.7/milestones.md | 93 - .../version-v0.7/performance.mdx | 76 - .../version-v0.7/quickstart.mdx | 151 - .../version-v0.7/reference/configuration.md | 744 - .../version-v0.7/reference/proto-api.mdx | 275 - .../version-v0.7/reference/rest-api.mdx | 12 - docs/versioned_docs/version-v0.7/sdk/index.md | 42 - docs/versioned_docs/version-v0.7/secure.md | 15 - .../version-v0.5-sidebars.json | 145 - .../version-v0.6-sidebars.json | 1540 - .../version-v0.7-sidebars.json | 1759 - docs/versions.json | 1 - go.mod | 4 +- go.sum | 8 +- internal/httpclient-next/.gitignore | 24 + .../httpclient-next/.openapi-generator-ignore | 23 + .../httpclient-next/.openapi-generator/FILES | 80 + .../.openapi-generator/VERSION | 1 + internal/httpclient-next/.travis.yml | 8 + internal/httpclient-next/README.md | 153 + internal/httpclient-next/api/openapi.yaml | 1267 + internal/httpclient-next/api_metadata.go | 434 + internal/httpclient-next/api_read.go | 787 + internal/httpclient-next/api_write.go | 492 + internal/httpclient-next/client.go | 547 + internal/httpclient-next/configuration.go | 230 + .../docs/CreateRelationTupleBadRequestBody.md | 186 + ...ateRelationTupleInternalServerErrorBody.md | 186 + .../DeleteRelationTuplesBadRequestBody.md | 186 + ...teRelationTuplesInternalServerErrorBody.md | 186 + internal/httpclient-next/docs/ExpandTree.md | 129 + internal/httpclient-next/docs/GenericError.md | 186 + .../docs/GetCheckBadRequestBody.md | 186 + .../docs/GetCheckInternalServerErrorBody.md | 186 + .../httpclient-next/docs/GetCheckResponse.md | 51 + .../docs/GetExpandBadRequestBody.md | 186 + .../docs/GetExpandInternalServerErrorBody.md | 186 + .../docs/GetExpandNotFoundBody.md | 186 + ...etRelationTuplesInternalServerErrorBody.md | 186 + .../docs/GetRelationTuplesNotFoundBody.md | 186 + .../docs/GetRelationTuplesResponse.md | 82 + .../docs/HealthNotReadyStatus.md | 56 + internal/httpclient-next/docs/HealthStatus.md | 56 + .../httpclient-next/docs/InlineResponse200.md | 51 + .../docs/InlineResponse2001.md | 51 + .../httpclient-next/docs/InlineResponse503.md | 51 + .../docs/InternalRelationTuple.md | 145 + .../IsInstanceAliveInternalServerErrorBody.md | 186 + internal/httpclient-next/docs/MetadataApi.md | 194 + internal/httpclient-next/docs/PatchDelta.md | 82 + .../docs/PatchRelationTuplesBadRequestBody.md | 186 + ...chRelationTuplesInternalServerErrorBody.md | 186 + .../docs/PatchRelationTuplesNotFoundBody.md | 186 + .../docs/PostCheckBadRequestBody.md | 186 + .../docs/PostCheckInternalServerErrorBody.md | 186 + internal/httpclient-next/docs/ReadApi.md | 314 + .../httpclient-next/docs/RelationQuery.md | 160 + internal/httpclient-next/docs/SubjectSet.md | 93 + internal/httpclient-next/docs/Version.md | 56 + internal/httpclient-next/docs/WriteApi.md | 217 + internal/httpclient-next/git_push.sh | 58 + internal/httpclient-next/go.mod | 7 + internal/httpclient-next/go.sum | 13 + ..._create_relation_tuple_bad_request_body.go | 300 + ...lation_tuple_internal_server_error_body.go | 300 + ...delete_relation_tuples_bad_request_body.go | 300 + ...ation_tuples_internal_server_error_body.go | 300 + internal/httpclient-next/model_expand_tree.go | 217 + .../httpclient-next/model_generic_error.go | 300 + .../model_get_check_bad_request_body.go | 300 + ...el_get_check_internal_server_error_body.go | 300 + .../model_get_check_response.go | 108 + .../model_get_expand_bad_request_body.go | 300 + ...l_get_expand_internal_server_error_body.go | 300 + .../model_get_expand_not_found_body.go | 300 + ...ation_tuples_internal_server_error_body.go | 300 + ...odel_get_relation_tuples_not_found_body.go | 300 + .../model_get_relation_tuples_response.go | 152 + .../model_health_not_ready_status.go | 115 + .../httpclient-next/model_health_status.go | 115 + .../model_inline_response_200.go | 108 + .../model_inline_response_200_1.go | 108 + .../model_inline_response_503.go | 108 + .../model_internal_relation_tuple.go | 241 + ...stance_alive_internal_server_error_body.go | 300 + internal/httpclient-next/model_patch_delta.go | 151 + ..._patch_relation_tuples_bad_request_body.go | 300 + ...ation_tuples_internal_server_error_body.go | 300 + ...el_patch_relation_tuples_not_found_body.go | 300 + .../model_post_check_bad_request_body.go | 300 + ...l_post_check_internal_server_error_body.go | 300 + .../httpclient-next/model_relation_query.go | 262 + internal/httpclient-next/model_subject_set.go | 168 + internal/httpclient-next/model_version.go | 115 + internal/httpclient-next/response.go | 48 + internal/httpclient-next/utils.go | 329 + .../health/is_instance_alive_responses.go | 62 +- .../client/read/get_check_responses.go | 122 +- .../client/read/get_expand_responses.go | 182 +- .../read/get_relation_tuples_responses.go | 122 +- .../client/read/post_check_responses.go | 122 +- .../write/create_relation_tuple_responses.go | 122 +- .../write/delete_relation_tuples_responses.go | 124 +- .../write/patch_relation_tuples_responses.go | 184 +- .../create_relation_tuple_bad_request_body.go | 65 + ...lation_tuple_internal_server_error_body.go | 65 + ...delete_relation_tuples_bad_request_body.go | 65 + ...ation_tuples_internal_server_error_body.go | 65 + internal/httpclient/models/generic_error.go | 65 + .../models/get_check_bad_request_body.go | 65 + .../get_check_internal_server_error_body.go | 65 + .../httpclient/models/get_check_response.go | 2 +- .../models/get_expand_bad_request_body.go | 65 + .../get_expand_internal_server_error_body.go | 65 + .../models/get_expand_not_found_body.go | 65 + ...ation_tuples_internal_server_error_body.go | 65 + .../get_relation_tuples_not_found_body.go | 65 + .../models/get_relation_tuples_response.go | 2 +- internal/httpclient/models/health_status.go | 2 +- ...stance_alive_internal_server_error_body.go | 65 + internal/httpclient/models/patch_delta.go | 13 +- .../patch_relation_tuples_bad_request_body.go | 65 + ...ation_tuples_internal_server_error_body.go | 65 + .../patch_relation_tuples_not_found_body.go | 65 + .../models/post_check_bad_request_body.go | 65 + .../post_check_internal_server_error_body.go | 65 + internal/httpclient/models/relation_query.go | 2 +- internal/httpclient/models/subject.go | 11 + internal/httpclient/models/uuid.go | 38 + openapitools.json | 7 + package-lock.json | 2660 +- package.json | 4 +- proto/ory/keto/acl/v1alpha1/acl.pb.go | 2 +- proto/ory/keto/acl/v1alpha1/acl_pb.js | 11 +- .../ory/keto/acl/v1alpha1/check_service.pb.go | 2 +- .../ory/keto/acl/v1alpha1/check_service_pb.js | 11 +- .../keto/acl/v1alpha1/expand_service.pb.go | 2 +- .../keto/acl/v1alpha1/expand_service_pb.js | 11 +- .../ory/keto/acl/v1alpha1/read_service.pb.go | 2 +- .../ory/keto/acl/v1alpha1/read_service_pb.js | 11 +- proto/ory/keto/acl/v1alpha1/version.pb.go | 2 +- proto/ory/keto/acl/v1alpha1/version_pb.js | 11 +- .../ory/keto/acl/v1alpha1/write_service.pb.go | 2 +- .../ory/keto/acl/v1alpha1/write_service_pb.js | 11 +- spec/api.json | 2231 +- spec/swagger.json | 1210 +- 421 files changed, 26304 insertions(+), 61883 deletions(-) delete mode 100644 .github/workflows/buf.yml create mode 100644 .schema/openapi/gen.go.yml create mode 100644 .schema/openapi/gen.typescript.yml create mode 100644 .schema/openapi/patches/health.yaml create mode 100644 .schema/openapi/patches/meta.yaml create mode 100644 .schema/openapi/templates/go/.travis.yml create mode 100644 .schema/openapi/templates/go/README.mustache create mode 100644 .schema/openapi/templates/go/api.mustache create mode 100644 .schema/openapi/templates/go/api_doc.mustache create mode 100644 .schema/openapi/templates/go/client.mustache create mode 100644 .schema/openapi/templates/go/configuration.mustache create mode 100755 .schema/openapi/templates/go/git_push.sh.mustache create mode 100644 .schema/openapi/templates/go/gitignore.mustache create mode 100644 .schema/openapi/templates/go/go.mod.mustache create mode 100644 .schema/openapi/templates/go/go.sum create mode 100644 .schema/openapi/templates/go/model.mustache create mode 100644 .schema/openapi/templates/go/model_anyof.mustache create mode 100644 .schema/openapi/templates/go/model_doc.mustache create mode 100644 .schema/openapi/templates/go/model_enum.mustache create mode 100644 .schema/openapi/templates/go/model_oneof.mustache create mode 100644 .schema/openapi/templates/go/model_simple.mustache create mode 100644 .schema/openapi/templates/go/nullable_model.mustache create mode 100644 .schema/openapi/templates/go/openapi.mustache create mode 100644 .schema/openapi/templates/go/partial_header.mustache create mode 100644 .schema/openapi/templates/go/response.mustache create mode 100644 .schema/openapi/templates/go/signing.mustache create mode 100644 .schema/openapi/templates/go/utils.mustache delete mode 100644 docs/.editorconfig create mode 100644 docs/.generated/.gitignore delete mode 100644 docs/.gitignore delete mode 100644 docs/.prettierignore delete mode 100644 docs/.prettierrc delete mode 100644 docs/.widdershins/config.json delete mode 100644 docs/.widdershins/templates/README.md delete mode 100644 docs/.widdershins/templates/authentication.def delete mode 100644 docs/.widdershins/templates/authentication_none.def delete mode 100644 docs/.widdershins/templates/callbacks.def delete mode 100644 docs/.widdershins/templates/code_go.dot delete mode 100644 docs/.widdershins/templates/code_http.dot delete mode 100644 docs/.widdershins/templates/code_java.dot delete mode 100644 docs/.widdershins/templates/code_javascript.dot delete mode 100644 docs/.widdershins/templates/code_nodejs.dot delete mode 100644 docs/.widdershins/templates/code_python.dot delete mode 100644 docs/.widdershins/templates/code_ruby.dot delete mode 100644 docs/.widdershins/templates/code_shell.dot delete mode 100644 docs/.widdershins/templates/debug.def delete mode 100644 docs/.widdershins/templates/discovery.def delete mode 100644 docs/.widdershins/templates/footer.def delete mode 100644 docs/.widdershins/templates/links.def delete mode 100644 docs/.widdershins/templates/main.dot delete mode 100644 docs/.widdershins/templates/operation.dot delete mode 100644 docs/.widdershins/templates/parameters.def delete mode 100644 docs/.widdershins/templates/responses.def delete mode 100644 docs/.widdershins/templates/security.def delete mode 100644 docs/.widdershins/templates/translations.dot delete mode 100644 docs/config.js delete mode 100755 docs/contrib/api.swagger.json delete mode 100644 docs/contrib/config.js delete mode 100644 docs/contrib/docs/index.md delete mode 100644 docs/contrib/sidebar.js delete mode 100644 docs/contrib/sidebar.json delete mode 100644 docs/contrib/theme.css delete mode 100644 docs/docs/.gitkeep delete mode 100644 docs/docs/.static/api.json delete mode 100644 docs/docs/CHANGELOG.md delete mode 100644 docs/docs/cli/keto-check.md delete mode 100644 docs/docs/cli/keto-expand.md delete mode 100644 docs/docs/cli/keto-migrate-down.md delete mode 100644 docs/docs/cli/keto-migrate-status.md delete mode 100644 docs/docs/cli/keto-migrate-up.md delete mode 100644 docs/docs/cli/keto-migrate.md delete mode 100644 docs/docs/cli/keto-namespace-migrate-down.md delete mode 100644 docs/docs/cli/keto-namespace-migrate-legacy.md delete mode 100644 docs/docs/cli/keto-namespace-migrate-status.md delete mode 100644 docs/docs/cli/keto-namespace-migrate-up.md delete mode 100644 docs/docs/cli/keto-namespace-migrate.md delete mode 100644 docs/docs/cli/keto-namespace-validate.md delete mode 100644 docs/docs/cli/keto-namespace.md delete mode 100644 docs/docs/cli/keto-relation-tuple-create.md delete mode 100644 docs/docs/cli/keto-relation-tuple-delete-all.md delete mode 100644 docs/docs/cli/keto-relation-tuple-delete.md delete mode 100644 docs/docs/cli/keto-relation-tuple-get.md delete mode 100644 docs/docs/cli/keto-relation-tuple-parse.md delete mode 100644 docs/docs/cli/keto-relation-tuple.md delete mode 100644 docs/docs/cli/keto-serve.md delete mode 100644 docs/docs/cli/keto-status.md delete mode 100644 docs/docs/cli/keto-version.md delete mode 100644 docs/docs/cli/keto.md delete mode 100644 docs/docs/concepts/api-overview.mdx delete mode 100644 docs/docs/concepts/graph-of-relations.mdx delete mode 100644 docs/docs/concepts/internal-algorithms.mdx delete mode 100644 docs/docs/concepts/namespaces.mdx delete mode 100644 docs/docs/concepts/objects.mdx delete mode 100644 docs/docs/concepts/relation-tuples.mdx delete mode 100644 docs/docs/concepts/snaptokens-evaluation-consistency.mdx delete mode 100644 docs/docs/concepts/subjects.mdx delete mode 100644 docs/docs/contributing.md delete mode 100644 docs/docs/examples/olymp-file-sharing.mdx delete mode 100644 docs/docs/guides/access-control-inheritance.mdx delete mode 100644 docs/docs/guides/access-control-list-design-best-practices.mdx delete mode 100644 docs/docs/guides/expand-api-display-who-has-access.mdx delete mode 100644 docs/docs/guides/list-api-display-objects.mdx delete mode 100644 docs/docs/guides/production.md delete mode 100644 docs/docs/guides/rbac.mdx delete mode 100644 docs/docs/guides/simple-access-check-guide.mdx delete mode 100644 docs/docs/guides/v0.7-migration.mdx delete mode 100644 docs/docs/implemented-planned-features.mdx delete mode 100644 docs/docs/index.md delete mode 100644 docs/docs/install.md delete mode 100644 docs/docs/milestones.md delete mode 100644 docs/docs/performance.mdx delete mode 100644 docs/docs/quickstart.mdx delete mode 100644 docs/docs/reference/configuration.md delete mode 100644 docs/docs/reference/proto-api.mdx delete mode 100644 docs/docs/reference/rest-api.mdx delete mode 100644 docs/docs/sdk/index.md delete mode 100644 docs/docs/secure.md delete mode 100644 docs/docusaurus.config.js delete mode 100644 docs/package-lock.json delete mode 100644 docs/package.json delete mode 100644 docs/scripts/config.js delete mode 100644 docs/scripts/docker-tag.js delete mode 100644 docs/scripts/fix-api.js delete mode 100644 docs/scripts/gen-faq.js delete mode 100644 docs/scripts/rerelease.js delete mode 100644 docs/sidebar.json delete mode 100644 docs/src/css/.gitkeep delete mode 100644 docs/src/css/theme.css delete mode 100644 docs/src/pages/http-api.js delete mode 100644 docs/src/pages/versions.js delete mode 100644 docs/src/plugins/docusaurus-plugin-matamo/analytics.js delete mode 100644 docs/src/plugins/docusaurus-plugin-matamo/index.js delete mode 100644 docs/src/plugins/docusaurus-plugin-matamo/package.json delete mode 100644 docs/src/plugins/ory-scripts-loader/index.js delete mode 100644 docs/src/plugins/ory-scripts-loader/ory-scripts-loader.js delete mode 100644 docs/src/plugins/ory-scripts-loader/package.json delete mode 100644 docs/src/theme/API.js delete mode 100644 docs/src/theme/API.module.css delete mode 100644 docs/src/theme/CodeFromRemote.js delete mode 100644 docs/src/theme/CodeFromRemote.module.css delete mode 100644 docs/src/theme/CodeTabs/index.js delete mode 100644 docs/src/theme/Faq.js delete mode 100644 docs/src/theme/Footer/index.js delete mode 100644 docs/src/theme/Footer/styles.module.css delete mode 100644 docs/src/theme/Mermaid.js delete mode 100644 docs/src/theme/RoutedDocPage/index.tsx delete mode 100644 docs/src/theme/RoutedDocPage/styles.module.css delete mode 100644 docs/src/theme/faq.module.css delete mode 100644 docs/src/theme/ketoRelationTuplesPrism.js delete mode 100644 docs/src/theme/mermaid.module.css delete mode 100644 docs/src/theme/prism-include-languages.js delete mode 100644 docs/static/img/favico.png delete mode 100644 docs/static/img/logo-docs.svg delete mode 100644 docs/static/img/logo-docusaurus-template.svg delete mode 100644 docs/static/img/logo-hydra.svg delete mode 100644 docs/static/img/logo-keto.svg delete mode 100644 docs/static/img/logo-kratos.svg delete mode 100644 docs/static/img/logo-oathkeeper.svg delete mode 100644 docs/versioned_docs/version-v0.5/.gitkeep delete mode 100644 docs/versioned_docs/version-v0.5/configure-deploy.md delete mode 100644 docs/versioned_docs/version-v0.5/engines/acl.md delete mode 100644 docs/versioned_docs/version-v0.5/engines/acp-aws.md delete mode 100644 docs/versioned_docs/version-v0.5/engines/acp-ory.md delete mode 100644 docs/versioned_docs/version-v0.5/engines/images/rbac.png delete mode 100644 docs/versioned_docs/version-v0.5/engines/images/rbac.xml delete mode 100644 docs/versioned_docs/version-v0.5/engines/index.md delete mode 100644 docs/versioned_docs/version-v0.5/engines/rbac.md delete mode 100644 docs/versioned_docs/version-v0.5/index.md delete mode 100644 docs/versioned_docs/version-v0.5/install.md delete mode 100644 docs/versioned_docs/version-v0.5/reference/api.md delete mode 100644 docs/versioned_docs/version-v0.5/reference/configuration.md delete mode 100644 docs/versioned_docs/version-v0.5/sdk/index.md delete mode 100644 docs/versioned_docs/version-v0.5/secure.md delete mode 100644 docs/versioned_docs/version-v0.6/.gitkeep delete mode 100644 docs/versioned_docs/version-v0.6/cli/keto-check.md delete mode 100644 docs/versioned_docs/version-v0.6/cli/keto-expand.md delete mode 100644 docs/versioned_docs/version-v0.6/cli/keto-migrate-down.md delete mode 100644 docs/versioned_docs/version-v0.6/cli/keto-migrate-status.md delete mode 100644 docs/versioned_docs/version-v0.6/cli/keto-migrate-up.md delete mode 100644 docs/versioned_docs/version-v0.6/cli/keto-migrate.md delete mode 100644 docs/versioned_docs/version-v0.6/cli/keto-namespace-migrate-down.md delete mode 100644 docs/versioned_docs/version-v0.6/cli/keto-namespace-migrate-status.md delete mode 100644 docs/versioned_docs/version-v0.6/cli/keto-namespace-migrate-up.md delete mode 100644 docs/versioned_docs/version-v0.6/cli/keto-namespace-migrate.md delete mode 100644 docs/versioned_docs/version-v0.6/cli/keto-namespace-validate.md delete mode 100644 docs/versioned_docs/version-v0.6/cli/keto-namespace.md delete mode 100644 docs/versioned_docs/version-v0.6/cli/keto-relation-tuple-create.md delete mode 100644 docs/versioned_docs/version-v0.6/cli/keto-relation-tuple-delete.md delete mode 100644 docs/versioned_docs/version-v0.6/cli/keto-relation-tuple-get.md delete mode 100644 docs/versioned_docs/version-v0.6/cli/keto-relation-tuple-parse.md delete mode 100644 docs/versioned_docs/version-v0.6/cli/keto-relation-tuple.md delete mode 100644 docs/versioned_docs/version-v0.6/cli/keto-serve.md delete mode 100644 docs/versioned_docs/version-v0.6/cli/keto-status.md delete mode 100644 docs/versioned_docs/version-v0.6/cli/keto-version.md delete mode 100644 docs/versioned_docs/version-v0.6/cli/keto.md delete mode 100644 docs/versioned_docs/version-v0.6/concepts/api-overview.mdx delete mode 100644 docs/versioned_docs/version-v0.6/concepts/graph-of-relations.mdx delete mode 100644 docs/versioned_docs/version-v0.6/concepts/internal-algorithms.mdx delete mode 100644 docs/versioned_docs/version-v0.6/concepts/namespaces.mdx delete mode 100644 docs/versioned_docs/version-v0.6/concepts/objects.mdx delete mode 100644 docs/versioned_docs/version-v0.6/concepts/relation-tuples.mdx delete mode 100644 docs/versioned_docs/version-v0.6/concepts/snaptokens-evaluation-consistency.mdx delete mode 100644 docs/versioned_docs/version-v0.6/concepts/subjects.mdx delete mode 100644 docs/versioned_docs/version-v0.6/contributing.md delete mode 100644 docs/versioned_docs/version-v0.6/examples/olymp-file-sharing.mdx delete mode 100644 docs/versioned_docs/version-v0.6/guides/access-control-inheritance.mdx delete mode 100644 docs/versioned_docs/version-v0.6/guides/access-control-list-design-best-practices.mdx delete mode 100644 docs/versioned_docs/version-v0.6/guides/expand-api-display-who-has-access.mdx delete mode 100644 docs/versioned_docs/version-v0.6/guides/list-api-display-objects.mdx delete mode 100644 docs/versioned_docs/version-v0.6/guides/production.md delete mode 100644 docs/versioned_docs/version-v0.6/guides/rbac.mdx delete mode 100644 docs/versioned_docs/version-v0.6/guides/simple-access-check-guide.mdx delete mode 100644 docs/versioned_docs/version-v0.6/implemented-planned-features.mdx delete mode 100644 docs/versioned_docs/version-v0.6/index.md delete mode 100644 docs/versioned_docs/version-v0.6/install.md delete mode 100644 docs/versioned_docs/version-v0.6/milestones.md delete mode 100644 docs/versioned_docs/version-v0.6/performance.mdx delete mode 100644 docs/versioned_docs/version-v0.6/quickstart.mdx delete mode 100644 docs/versioned_docs/version-v0.6/reference/api.mdx delete mode 100644 docs/versioned_docs/version-v0.6/reference/configuration.md delete mode 100644 docs/versioned_docs/version-v0.6/reference/proto-api.mdx delete mode 100644 docs/versioned_docs/version-v0.6/reference/rest-api.mdx delete mode 100644 docs/versioned_docs/version-v0.6/sdk/index.md delete mode 100644 docs/versioned_docs/version-v0.6/secure.md delete mode 100644 docs/versioned_docs/version-v0.7/.gitkeep delete mode 100644 docs/versioned_docs/version-v0.7/.static/api.json delete mode 100644 docs/versioned_docs/version-v0.7/CHANGELOG.md delete mode 100644 docs/versioned_docs/version-v0.7/cli/keto-check.md delete mode 100644 docs/versioned_docs/version-v0.7/cli/keto-expand.md delete mode 100644 docs/versioned_docs/version-v0.7/cli/keto-migrate-down.md delete mode 100644 docs/versioned_docs/version-v0.7/cli/keto-migrate-status.md delete mode 100644 docs/versioned_docs/version-v0.7/cli/keto-migrate-up.md delete mode 100644 docs/versioned_docs/version-v0.7/cli/keto-migrate.md delete mode 100644 docs/versioned_docs/version-v0.7/cli/keto-namespace-migrate-down.md delete mode 100644 docs/versioned_docs/version-v0.7/cli/keto-namespace-migrate-legacy.md delete mode 100644 docs/versioned_docs/version-v0.7/cli/keto-namespace-migrate-status.md delete mode 100644 docs/versioned_docs/version-v0.7/cli/keto-namespace-migrate-up.md delete mode 100644 docs/versioned_docs/version-v0.7/cli/keto-namespace-migrate.md delete mode 100644 docs/versioned_docs/version-v0.7/cli/keto-namespace-validate.md delete mode 100644 docs/versioned_docs/version-v0.7/cli/keto-namespace.md delete mode 100644 docs/versioned_docs/version-v0.7/cli/keto-relation-tuple-create.md delete mode 100644 docs/versioned_docs/version-v0.7/cli/keto-relation-tuple-delete.md delete mode 100644 docs/versioned_docs/version-v0.7/cli/keto-relation-tuple-get.md delete mode 100644 docs/versioned_docs/version-v0.7/cli/keto-relation-tuple-parse.md delete mode 100644 docs/versioned_docs/version-v0.7/cli/keto-relation-tuple.md delete mode 100644 docs/versioned_docs/version-v0.7/cli/keto-serve.md delete mode 100644 docs/versioned_docs/version-v0.7/cli/keto-status.md delete mode 100644 docs/versioned_docs/version-v0.7/cli/keto-version.md delete mode 100644 docs/versioned_docs/version-v0.7/cli/keto.md delete mode 100644 docs/versioned_docs/version-v0.7/concepts/api-overview.mdx delete mode 100644 docs/versioned_docs/version-v0.7/concepts/graph-of-relations.mdx delete mode 100644 docs/versioned_docs/version-v0.7/concepts/internal-algorithms.mdx delete mode 100644 docs/versioned_docs/version-v0.7/concepts/namespaces.mdx delete mode 100644 docs/versioned_docs/version-v0.7/concepts/objects.mdx delete mode 100644 docs/versioned_docs/version-v0.7/concepts/relation-tuples.mdx delete mode 100644 docs/versioned_docs/version-v0.7/concepts/snaptokens-evaluation-consistency.mdx delete mode 100644 docs/versioned_docs/version-v0.7/concepts/subjects.mdx delete mode 100644 docs/versioned_docs/version-v0.7/contributing.md delete mode 100644 docs/versioned_docs/version-v0.7/examples/olymp-file-sharing.mdx delete mode 100644 docs/versioned_docs/version-v0.7/guides/access-control-inheritance.mdx delete mode 100644 docs/versioned_docs/version-v0.7/guides/access-control-list-design-best-practices.mdx delete mode 100644 docs/versioned_docs/version-v0.7/guides/expand-api-display-who-has-access.mdx delete mode 100644 docs/versioned_docs/version-v0.7/guides/list-api-display-objects.mdx delete mode 100644 docs/versioned_docs/version-v0.7/guides/production.md delete mode 100644 docs/versioned_docs/version-v0.7/guides/rbac.mdx delete mode 100644 docs/versioned_docs/version-v0.7/guides/simple-access-check-guide.mdx delete mode 100644 docs/versioned_docs/version-v0.7/guides/v0.7-migration.mdx delete mode 100644 docs/versioned_docs/version-v0.7/implemented-planned-features.mdx delete mode 100644 docs/versioned_docs/version-v0.7/index.md delete mode 100644 docs/versioned_docs/version-v0.7/install.md delete mode 100644 docs/versioned_docs/version-v0.7/milestones.md delete mode 100644 docs/versioned_docs/version-v0.7/performance.mdx delete mode 100644 docs/versioned_docs/version-v0.7/quickstart.mdx delete mode 100644 docs/versioned_docs/version-v0.7/reference/configuration.md delete mode 100644 docs/versioned_docs/version-v0.7/reference/proto-api.mdx delete mode 100644 docs/versioned_docs/version-v0.7/reference/rest-api.mdx delete mode 100644 docs/versioned_docs/version-v0.7/sdk/index.md delete mode 100644 docs/versioned_docs/version-v0.7/secure.md delete mode 100644 docs/versioned_sidebars/version-v0.5-sidebars.json delete mode 100644 docs/versioned_sidebars/version-v0.6-sidebars.json delete mode 100644 docs/versioned_sidebars/version-v0.7-sidebars.json delete mode 100644 docs/versions.json create mode 100644 internal/httpclient-next/.gitignore create mode 100644 internal/httpclient-next/.openapi-generator-ignore create mode 100644 internal/httpclient-next/.openapi-generator/FILES create mode 100644 internal/httpclient-next/.openapi-generator/VERSION create mode 100644 internal/httpclient-next/.travis.yml create mode 100644 internal/httpclient-next/README.md create mode 100644 internal/httpclient-next/api/openapi.yaml create mode 100644 internal/httpclient-next/api_metadata.go create mode 100644 internal/httpclient-next/api_read.go create mode 100644 internal/httpclient-next/api_write.go create mode 100644 internal/httpclient-next/client.go create mode 100644 internal/httpclient-next/configuration.go create mode 100644 internal/httpclient-next/docs/CreateRelationTupleBadRequestBody.md create mode 100644 internal/httpclient-next/docs/CreateRelationTupleInternalServerErrorBody.md create mode 100644 internal/httpclient-next/docs/DeleteRelationTuplesBadRequestBody.md create mode 100644 internal/httpclient-next/docs/DeleteRelationTuplesInternalServerErrorBody.md create mode 100644 internal/httpclient-next/docs/ExpandTree.md create mode 100644 internal/httpclient-next/docs/GenericError.md create mode 100644 internal/httpclient-next/docs/GetCheckBadRequestBody.md create mode 100644 internal/httpclient-next/docs/GetCheckInternalServerErrorBody.md create mode 100644 internal/httpclient-next/docs/GetCheckResponse.md create mode 100644 internal/httpclient-next/docs/GetExpandBadRequestBody.md create mode 100644 internal/httpclient-next/docs/GetExpandInternalServerErrorBody.md create mode 100644 internal/httpclient-next/docs/GetExpandNotFoundBody.md create mode 100644 internal/httpclient-next/docs/GetRelationTuplesInternalServerErrorBody.md create mode 100644 internal/httpclient-next/docs/GetRelationTuplesNotFoundBody.md create mode 100644 internal/httpclient-next/docs/GetRelationTuplesResponse.md create mode 100644 internal/httpclient-next/docs/HealthNotReadyStatus.md create mode 100644 internal/httpclient-next/docs/HealthStatus.md create mode 100644 internal/httpclient-next/docs/InlineResponse200.md create mode 100644 internal/httpclient-next/docs/InlineResponse2001.md create mode 100644 internal/httpclient-next/docs/InlineResponse503.md create mode 100644 internal/httpclient-next/docs/InternalRelationTuple.md create mode 100644 internal/httpclient-next/docs/IsInstanceAliveInternalServerErrorBody.md create mode 100644 internal/httpclient-next/docs/MetadataApi.md create mode 100644 internal/httpclient-next/docs/PatchDelta.md create mode 100644 internal/httpclient-next/docs/PatchRelationTuplesBadRequestBody.md create mode 100644 internal/httpclient-next/docs/PatchRelationTuplesInternalServerErrorBody.md create mode 100644 internal/httpclient-next/docs/PatchRelationTuplesNotFoundBody.md create mode 100644 internal/httpclient-next/docs/PostCheckBadRequestBody.md create mode 100644 internal/httpclient-next/docs/PostCheckInternalServerErrorBody.md create mode 100644 internal/httpclient-next/docs/ReadApi.md create mode 100644 internal/httpclient-next/docs/RelationQuery.md create mode 100644 internal/httpclient-next/docs/SubjectSet.md create mode 100644 internal/httpclient-next/docs/Version.md create mode 100644 internal/httpclient-next/docs/WriteApi.md create mode 100644 internal/httpclient-next/git_push.sh create mode 100644 internal/httpclient-next/go.mod create mode 100644 internal/httpclient-next/go.sum create mode 100644 internal/httpclient-next/model_create_relation_tuple_bad_request_body.go create mode 100644 internal/httpclient-next/model_create_relation_tuple_internal_server_error_body.go create mode 100644 internal/httpclient-next/model_delete_relation_tuples_bad_request_body.go create mode 100644 internal/httpclient-next/model_delete_relation_tuples_internal_server_error_body.go create mode 100644 internal/httpclient-next/model_expand_tree.go create mode 100644 internal/httpclient-next/model_generic_error.go create mode 100644 internal/httpclient-next/model_get_check_bad_request_body.go create mode 100644 internal/httpclient-next/model_get_check_internal_server_error_body.go create mode 100644 internal/httpclient-next/model_get_check_response.go create mode 100644 internal/httpclient-next/model_get_expand_bad_request_body.go create mode 100644 internal/httpclient-next/model_get_expand_internal_server_error_body.go create mode 100644 internal/httpclient-next/model_get_expand_not_found_body.go create mode 100644 internal/httpclient-next/model_get_relation_tuples_internal_server_error_body.go create mode 100644 internal/httpclient-next/model_get_relation_tuples_not_found_body.go create mode 100644 internal/httpclient-next/model_get_relation_tuples_response.go create mode 100644 internal/httpclient-next/model_health_not_ready_status.go create mode 100644 internal/httpclient-next/model_health_status.go create mode 100644 internal/httpclient-next/model_inline_response_200.go create mode 100644 internal/httpclient-next/model_inline_response_200_1.go create mode 100644 internal/httpclient-next/model_inline_response_503.go create mode 100644 internal/httpclient-next/model_internal_relation_tuple.go create mode 100644 internal/httpclient-next/model_is_instance_alive_internal_server_error_body.go create mode 100644 internal/httpclient-next/model_patch_delta.go create mode 100644 internal/httpclient-next/model_patch_relation_tuples_bad_request_body.go create mode 100644 internal/httpclient-next/model_patch_relation_tuples_internal_server_error_body.go create mode 100644 internal/httpclient-next/model_patch_relation_tuples_not_found_body.go create mode 100644 internal/httpclient-next/model_post_check_bad_request_body.go create mode 100644 internal/httpclient-next/model_post_check_internal_server_error_body.go create mode 100644 internal/httpclient-next/model_relation_query.go create mode 100644 internal/httpclient-next/model_subject_set.go create mode 100644 internal/httpclient-next/model_version.go create mode 100644 internal/httpclient-next/response.go create mode 100644 internal/httpclient-next/utils.go create mode 100644 internal/httpclient/models/create_relation_tuple_bad_request_body.go create mode 100644 internal/httpclient/models/create_relation_tuple_internal_server_error_body.go create mode 100644 internal/httpclient/models/delete_relation_tuples_bad_request_body.go create mode 100644 internal/httpclient/models/delete_relation_tuples_internal_server_error_body.go create mode 100644 internal/httpclient/models/generic_error.go create mode 100644 internal/httpclient/models/get_check_bad_request_body.go create mode 100644 internal/httpclient/models/get_check_internal_server_error_body.go create mode 100644 internal/httpclient/models/get_expand_bad_request_body.go create mode 100644 internal/httpclient/models/get_expand_internal_server_error_body.go create mode 100644 internal/httpclient/models/get_expand_not_found_body.go create mode 100644 internal/httpclient/models/get_relation_tuples_internal_server_error_body.go create mode 100644 internal/httpclient/models/get_relation_tuples_not_found_body.go create mode 100644 internal/httpclient/models/is_instance_alive_internal_server_error_body.go create mode 100644 internal/httpclient/models/patch_relation_tuples_bad_request_body.go create mode 100644 internal/httpclient/models/patch_relation_tuples_internal_server_error_body.go create mode 100644 internal/httpclient/models/patch_relation_tuples_not_found_body.go create mode 100644 internal/httpclient/models/post_check_bad_request_body.go create mode 100644 internal/httpclient/models/post_check_internal_server_error_body.go create mode 100644 internal/httpclient/models/subject.go create mode 100644 internal/httpclient/models/uuid.go create mode 100644 openapitools.json diff --git a/.github/workflows/buf.yml b/.github/workflows/buf.yml deleted file mode 100644 index 60b87533c..000000000 --- a/.github/workflows/buf.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: Generate and Lint buf - -on: - push: - branches: - - '*' - workflow_dispatch: - -jobs: - lint: - name: buf check lint - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-go@v2 - with: - go-version: '1.17' - - uses: actions/setup-node@v2 - with: - node-version: '15' - - uses: arduino/setup-protoc@v1 - with: - version: '3.12.x' - - name: Lint and Build - run: make buf - - name: Format Docs (required because buf generates the proto docs) - run: | - cd docs - npm ci - npm run format - - name: Push build - run: | - git config --local user.email "zepatrik@users.noreply.github.com" - git config --local user.name "zepatrik" - git add proto - git commit -a -m "autogen: build buf" && git push "https://${GITHUB_ACTOR}:${GITHUB_TOKEN}@github.com/${GITHUB_REPOSITORY}.git" HEAD:${GITHUB_REF#"refs/heads/"} || true diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 59f84dddb..a04cfd467 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -7,6 +7,10 @@ on: - '*' pull_request: +# Cancel in-progress runs in current workflow. +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true jobs: validate: @@ -22,12 +26,6 @@ jobs: - run: go list -json > go.list - name: Run nancy uses: sonatype-nexus-community/nancy-github-action@v1.0.2 - - name: Run prettier - uses: ory/ci/prettier@master - - name: Run prettier (docs) - uses: ory/ci/prettier@master - with: - dir: docs - name: Run golangci-lint uses: golangci/golangci-lint-action@v2 env: @@ -97,17 +95,28 @@ jobs: docs-build: runs-on: ubuntu-latest - name: Build and publish docs + name: Synchronize autogenerated files to docs if: ${{ startsWith(github.ref, 'refs/tags/v') || github.ref_name == 'master' }} needs: - test - test-race - validate steps: - - uses: ory/ci/docs/build@master + - uses: ory/ci/docs/sync@master with: token: ${{ secrets.ORY_BOT_PAT }} - swag-spec-location: spec/api.json + api-spec-location: spec/api.json + config-spec-location: .schema/config.schema.json + - env: + GITHUB_TOKEN: ${{ inputs.token }} + run: | + cp "current-repo/docs/.generated/proto-api.mdx" "docs/docs/keto/reference/proto-api.mdx" + cd docs + git add -A + git commit -a -m "autogen(docs): generate and bump docs for $repo" || true + git pull origin master --rebase || true + git push origin HEAD:master || true + shell: bash docs-cli: runs-on: ubuntu-latest @@ -117,9 +126,10 @@ jobs: - test-race - validate steps: - - uses: ory/ci/docs/cli@master + - uses: ory/ci/docs/cli-next@master with: token: ${{ secrets.ORY_BOT_PAT }} + output-dir: docs/keto/cli changelog: name: Generate changelog @@ -244,3 +254,52 @@ jobs: mailchimp_api_key: ${{ secrets.MAILCHIMP_API_KEY }} draft: 'false' ssh_key: ${{ secrets.ORY_BOT_SSH_KEY }} + + buf: + name: Run buf actions + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + path: current-repo + - uses: actions/setup-go@v2 + with: + go-version: '1.17' + - uses: actions/setup-node@v2 + with: + node-version: '15' + - uses: arduino/setup-protoc@v1 + with: + version: '3.12.x' + - name: Lint and Build + run: make buf + working-directory: current-repo + - name: Format Docs (required because buf generates the proto docs) + run: | + make format + working-directory: current-repo + - name: Push build + run: | + git config --local user.email "60093411+ory-bot@users.noreply.github.com" + git config --local user.name "ory-bot" + git add proto + git commit -a -m "autogen: build buf" && git push "https://${GITHUB_ACTOR}:${ORY_BOT_PAT}@github.com/${GITHUB_REPOSITORY}.git" HEAD:${GITHUB_REF#"refs/heads/"} || true + working-directory: current-repo + - name: Push docs to master + run: | + git config --local user.email "60093411+ory-bot@users.noreply.github.com" + git config --local user.name "ory-bot" + git add proto + git commit -a -m "autogen: build buf" && git push "https://${GITHUB_ACTOR}:${ORY_BOT_PAT}@github.com/${GITHUB_REPOSITORY}.git" HEAD:${GITHUB_REF#"refs/heads/"} || true + working-directory: current-repo + - if: ${{ github.ref_name == 'master' || github.ref_type == 'tag' }} + name: Push build to docs + env: + GITHUB_TOKEN: ${{ inputs.token || github.token }} + run: | + cd docs + git stash || true + git pull --rebase origin ${{ inputs.docs-branch }} || true + git stash apply || true + git push origin HEAD:${{ inputs.docs-branch }} || true + shell: bash diff --git a/.schema/openapi/gen.go.yml b/.schema/openapi/gen.go.yml new file mode 100644 index 000000000..48cee4db3 --- /dev/null +++ b/.schema/openapi/gen.go.yml @@ -0,0 +1,6 @@ +disallowAdditionalPropertiesIfNotPresent: true +packageName: client +generateInterfaces: true +isGoSubmodule: false +structPrefix: true +enumClassPrefix: true diff --git a/.schema/openapi/gen.typescript.yml b/.schema/openapi/gen.typescript.yml new file mode 100644 index 000000000..8030dff4e --- /dev/null +++ b/.schema/openapi/gen.typescript.yml @@ -0,0 +1,7 @@ +npmName: "@ory/kratos-client" +npmVersion: 0.0.0 +# typescriptThreePlus: true +#npmRepository: https://github.com/ory/sdk.git +supportsES6: true +ensureUniqueParams: true +modelPropertyNaming: original diff --git a/.schema/openapi/patches/health.yaml b/.schema/openapi/patches/health.yaml new file mode 100644 index 000000000..1d42a1d63 --- /dev/null +++ b/.schema/openapi/patches/health.yaml @@ -0,0 +1,94 @@ +- op: replace + path: /paths/~1health~1alive + value: + get: + description: |- + This endpoint returns a HTTP 200 status code when {{.ProjectHumanName}} is accepting incoming + HTTP requests. 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. + operationId: isAlive + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/healthStatus" + description: {{.ProjectHumanName}} is ready to accept connections. + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/genericError" + description: genericError + summary: Check HTTP Server Status + tags: {{ .HealthPathTags | toJson }} +- op: replace + path: /paths/~1health~1ready + value: + get: + operationId: isReady + description: |- + This endpoint returns a HTTP 200 status code when {{.ProjectHumanName}} 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 {{.ProjectHumanName}}, the health status will never + refer to the cluster state, only to a single instance. + responses: + '200': + content: + application/json: + schema: + type: object + properties: + status: + description: Always "ok". + type: string + description: {{.ProjectHumanName}} is ready to accept requests. + '503': + content: + application/json: + schema: + properties: + errors: + additionalProperties: + type: string + description: Errors contains a list of errors that caused the not ready status. + type: object + type: object + description: Ory Kratos is not yet ready to accept requests. + summary: Check HTTP Server and Database Status + tags: {{ .HealthPathTags | toJson }} +- op: replace + path: /paths/~1version + value: + get: + description: |- + This endpoint returns the version of {{.ProjectHumanName}}. + + 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 version will never + refer to the cluster state, only to a single instance. + operationId: getVersion + responses: + '200': + content: + application/json: + schema: + type: object + properties: + version: + description: The version of {{.ProjectHumanName}}. + type: string + description: Returns the {{.ProjectHumanName}} version. + summary: Return Running Software Version. + tags: {{ .HealthPathTags | toJson }} diff --git a/.schema/openapi/patches/meta.yaml b/.schema/openapi/patches/meta.yaml new file mode 100644 index 000000000..fd6d1fe18 --- /dev/null +++ b/.schema/openapi/patches/meta.yaml @@ -0,0 +1,12 @@ +- op: replace + path: /info + value: + title: Ory Oathkeeper API + description: | + Documentation for all of Ory Oathkeeper's APIs. + version: >- + {{ getenv "CIRCLE_TAG" }} + license: + name: Apache 2.0 + contact: + email: "hi@ory.sh" diff --git a/.schema/openapi/templates/go/.travis.yml b/.schema/openapi/templates/go/.travis.yml new file mode 100644 index 000000000..f5cb2ce9a --- /dev/null +++ b/.schema/openapi/templates/go/.travis.yml @@ -0,0 +1,8 @@ +language: go + +install: + - go get -d -v . + +script: + - go build -v ./ + diff --git a/.schema/openapi/templates/go/README.mustache b/.schema/openapi/templates/go/README.mustache new file mode 100644 index 000000000..b75fa1bb4 --- /dev/null +++ b/.schema/openapi/templates/go/README.mustache @@ -0,0 +1,221 @@ +# Go API client for {{packageName}} + +{{#appDescriptionWithNewLines}} +{{{appDescriptionWithNewLines}}} +{{/appDescriptionWithNewLines}} + +## Overview +This API client was generated by the [OpenAPI Generator](https://openapi-generator.tech) project. By using the [OpenAPI-spec](https://www.openapis.org/) from a remote server, you can easily generate an API client. + +- API version: {{appVersion}} +- Package version: {{packageVersion}} +{{^hideGenerationTimestamp}} +- Build date: {{generatedDate}} +{{/hideGenerationTimestamp}} +- Build package: {{generatorClass}} +{{#infoUrl}} +For more information, please visit [{{{infoUrl}}}]({{{infoUrl}}}) +{{/infoUrl}} + +## Installation + +Install the following dependencies: + +```shell +go get github.com/stretchr/testify/assert +go get golang.org/x/oauth2 +go get golang.org/x/net/context +``` + +Put the package under your project folder and add the following in import: + +```golang +import {{packageName}} "{{gitHost}}/{{gitUserId}}/{{gitRepoId}}{{#isGoSubmodule}}/{{packageName}}{{/isGoSubmodule}}" +``` + +To use a proxy, set the environment variable `HTTP_PROXY`: + +```golang +os.Setenv("HTTP_PROXY", "http://proxy_name:proxy_port") +``` + +## Configuration of Server URL + +Default configuration comes with `Servers` field that contains server objects as defined in the OpenAPI specification. + +### Select Server Configuration + +For using other server than the one defined on index 0 set context value `sw.ContextServerIndex` of type `int`. + +```golang +ctx := context.WithValue(context.Background(), {{packageName}}.ContextServerIndex, 1) +``` + +### Templated Server URL + +Templated server URL is formatted using default variables from configuration or from context value `sw.ContextServerVariables` of type `map[string]string`. + +```golang +ctx := context.WithValue(context.Background(), {{packageName}}.ContextServerVariables, map[string]string{ + "basePath": "v2", +}) +``` + +Note, enum values are always validated and all unused variables are silently ignored. + +### URLs Configuration per Operation + +Each operation can use different server URL defined using `OperationServers` map in the `Configuration`. +An operation is uniquely identifield by `"{classname}Service.{nickname}"` string. +Similar rules for overriding default operation server index and variables applies by using `sw.ContextOperationServerIndices` and `sw.ContextOperationServerVariables` context maps. + +``` +ctx := context.WithValue(context.Background(), {{packageName}}.ContextOperationServerIndices, map[string]int{ + "{classname}Service.{nickname}": 2, +}) +ctx = context.WithValue(context.Background(), {{packageName}}.ContextOperationServerVariables, map[string]map[string]string{ + "{classname}Service.{nickname}": { + "port": "8443", + }, +}) +``` + +## Documentation for API Endpoints + +All URIs are relative to *{{basePath}}* + +Class | Method | HTTP request | Description +------------ | ------------- | ------------- | ------------- +{{#apiInfo}}{{#apis}}{{#operations}}{{#operation}}*{{classname}}* | [**{{operationId}}**]({{apiDocPath}}{{classname}}.md#{{operationIdLowerCase}}) | **{{httpMethod}}** {{path}} | {{#summary}}{{summary}}{{/summary}} +{{/operation}}{{/operations}}{{/apis}}{{/apiInfo}} + +## Documentation For Models + +{{#models}}{{#model}} - [{{{classname}}}]({{modelDocPath}}{{{classname}}}.md) +{{/model}}{{/models}} + +## Documentation For Authorization + +{{^authMethods}} Endpoints do not require authorization. +{{/authMethods}}{{#authMethods}}{{#last}} Authentication schemes defined for the API:{{/last}}{{/authMethods}} +{{#authMethods}} + +### {{{name}}} + +{{#isApiKey}} +- **Type**: API key +- **API key parameter name**: {{{keyParamName}}} +- **Location**: {{#isKeyInQuery}}URL query string{{/isKeyInQuery}}{{#isKeyInHeader}}HTTP header{{/isKeyInHeader}} + +Note, each API key must be added to a map of `map[string]APIKey` where the key is: {{keyParamName}} and passed in as the auth context for each request. + +{{/isApiKey}} +{{#isBasic}} +{{#isBasicBearer}} +- **Type**: HTTP Bearer token authentication + +Example + +```golang +auth := context.WithValue(context.Background(), sw.ContextAccessToken, "BEARER_TOKEN_STRING") +r, err := client.Service.Operation(auth, args) +``` + +{{/isBasicBearer}} +{{#isBasicBasic}} +- **Type**: HTTP basic authentication + +Example + +```golang +auth := context.WithValue(context.Background(), sw.ContextBasicAuth, sw.BasicAuth{ + UserName: "username", + Password: "password", +}) +r, err := client.Service.Operation(auth, args) +``` + +{{/isBasicBasic}} +{{#isHttpSignature}} +- **Type**: HTTP signature authentication + +Example + +```golang + authConfig := client.HttpSignatureAuth{ + KeyId: "my-key-id", + PrivateKeyPath: "rsa.pem", + Passphrase: "my-passphrase", + SigningScheme: sw.HttpSigningSchemeHs2019, + SignedHeaders: []string{ + sw.HttpSignatureParameterRequestTarget, // The special (request-target) parameter expresses the HTTP request target. + sw.HttpSignatureParameterCreated, // Time when request was signed, formatted as a Unix timestamp integer value. + "Host", // The Host request header specifies the domain name of the server, and optionally the TCP port number. + "Date", // The date and time at which the message was originated. + "Content-Type", // The Media type of the body of the request. + "Digest", // A cryptographic digest of the request body. + }, + SigningAlgorithm: sw.HttpSigningAlgorithmRsaPSS, + SignatureMaxValidity: 5 * time.Minute, + } + var authCtx context.Context + var err error + if authCtx, err = authConfig.ContextWithValue(context.Background()); err != nil { + // Process error + } + r, err = client.Service.Operation(auth, args) + +``` +{{/isHttpSignature}} +{{/isBasic}} +{{#isOAuth}} + +- **Type**: OAuth +- **Flow**: {{{flow}}} +- **Authorization URL**: {{{authorizationUrl}}} +- **Scopes**: {{^scopes}}N/A{{/scopes}} +{{#scopes}} - **{{{scope}}}**: {{{description}}} +{{/scopes}} + +Example + +```golang +auth := context.WithValue(context.Background(), sw.ContextAccessToken, "ACCESSTOKENSTRING") +r, err := client.Service.Operation(auth, args) +``` + +Or via OAuth2 module to automatically refresh tokens and perform user authentication. + +```golang +import "golang.org/x/oauth2" + +/* Perform OAuth2 round trip request and obtain a token */ + +tokenSource := oauth2cfg.TokenSource(createContext(httpClient), &token) +auth := context.WithValue(oauth2.NoContext, sw.ContextOAuth2, tokenSource) +r, err := client.Service.Operation(auth, args) +``` + +{{/isOAuth}} +{{/authMethods}} + +## Documentation for Utility Methods + +Due to the fact that model structure members are all pointers, this package contains +a number of utility functions to easily obtain pointers to values of basic types. +Each of these functions takes a value of the given basic type and returns a pointer to it: + +* `PtrBool` +* `PtrInt` +* `PtrInt32` +* `PtrInt64` +* `PtrFloat` +* `PtrFloat32` +* `PtrFloat64` +* `PtrString` +* `PtrTime` + +## Author + +{{#apiInfo}}{{#apis}}{{#-last}}{{infoEmail}} +{{/-last}}{{/apis}}{{/apiInfo}} diff --git a/.schema/openapi/templates/go/api.mustache b/.schema/openapi/templates/go/api.mustache new file mode 100644 index 000000000..63f93b1b8 --- /dev/null +++ b/.schema/openapi/templates/go/api.mustache @@ -0,0 +1,377 @@ +{{>partial_header}} +package {{packageName}} + +{{#operations}} +import ( + "bytes" + "context" + "io/ioutil" + "net/http" + "net/url" +{{#imports}} "{{import}}" +{{/imports}} +) + +// Linger please +var ( + _ context.Context +) +{{#generateInterfaces}} + +type {{classname}} interface { + {{#operation}} + + /* + * {{operationId}}{{#summary}} {{{.}}}{{/summary}}{{^summary}} Method for {{operationId}}{{/summary}} + {{#notes}} + * {{{unescapedNotes}}} + {{/notes}} + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().{{#pathParams}} + * @param {{paramName}}{{#description}} {{{.}}}{{/description}}{{/pathParams}} + * @return {{#structPrefix}}{{&classname}}{{/structPrefix}}Api{{operationId}}Request + */ + {{{nickname}}}(ctx context.Context{{#pathParams}}, {{paramName}} {{{dataType}}}{{/pathParams}}) {{#structPrefix}}{{&classname}}{{/structPrefix}}Api{{operationId}}Request + + /* + * {{nickname}}Execute executes the request{{#returnType}} + * @return {{{.}}}{{/returnType}} + */ + {{nickname}}Execute(r {{#structPrefix}}{{&classname}}{{/structPrefix}}Api{{operationId}}Request) ({{#returnType}}{{^isArray}}{{^returnTypeIsPrimitive}}*{{/returnTypeIsPrimitive}}{{/isArray}}{{{.}}}, {{/returnType}}*http.Response, error) + {{/operation}} +} +{{/generateInterfaces}} + +// {{classname}}Service {{classname}} service +type {{classname}}Service service +{{#operation}} + +type {{#structPrefix}}{{&classname}}{{/structPrefix}}Api{{operationId}}Request struct { + ctx context.Context{{#generateInterfaces}} + ApiService {{classname}} +{{/generateInterfaces}}{{^generateInterfaces}} + ApiService *{{classname}}Service +{{/generateInterfaces}} +{{#allParams}} + {{paramName}} {{^isPathParam}}*{{/isPathParam}}{{{dataType}}} +{{/allParams}} +} +{{#allParams}}{{^isPathParam}} +func (r {{#structPrefix}}{{&classname}}{{/structPrefix}}Api{{operationId}}Request) {{vendorExtensions.x-export-param-name}}({{paramName}} {{{dataType}}}) {{#structPrefix}}{{&classname}}{{/structPrefix}}Api{{operationId}}Request { + r.{{paramName}} = &{{paramName}} + return r +}{{/isPathParam}}{{/allParams}} + +func (r {{#structPrefix}}{{&classname}}{{/structPrefix}}Api{{operationId}}Request) Execute() ({{#returnType}}{{^isArray}}{{^returnTypeIsPrimitive}}*{{/returnTypeIsPrimitive}}{{/isArray}}{{{.}}}, {{/returnType}}*http.Response, error) { + return r.ApiService.{{nickname}}Execute(r) +} + +/* + * {{operationId}}{{#summary}} {{{.}}}{{/summary}}{{^summary}} Method for {{operationId}}{{/summary}} +{{#notes}} + * {{{unescapedNotes}}} +{{/notes}} + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().{{#pathParams}} + * @param {{paramName}}{{#description}} {{{.}}}{{/description}}{{/pathParams}} + * @return {{#structPrefix}}{{&classname}}{{/structPrefix}}Api{{operationId}}Request + */ +func (a *{{{classname}}}Service) {{{nickname}}}(ctx context.Context{{#pathParams}}, {{paramName}} {{{dataType}}}{{/pathParams}}) {{#structPrefix}}{{&classname}}{{/structPrefix}}Api{{operationId}}Request { + return {{#structPrefix}}{{&classname}}{{/structPrefix}}Api{{operationId}}Request{ + ApiService: a, + ctx: ctx,{{#pathParams}} + {{paramName}}: {{paramName}},{{/pathParams}} + } +} + +/* + * Execute executes the request{{#returnType}} + * @return {{{.}}}{{/returnType}} + */ +func (a *{{{classname}}}Service) {{nickname}}Execute(r {{#structPrefix}}{{&classname}}{{/structPrefix}}Api{{operationId}}Request) ({{#returnType}}{{^isArray}}{{^returnTypeIsPrimitive}}*{{/returnTypeIsPrimitive}}{{/isArray}}{{{.}}}, {{/returnType}}*http.Response, error) { + var ( + localVarHTTPMethod = http.Method{{httpMethod}} + localVarPostBody interface{} + localVarFormFileName string + localVarFileName string + localVarFileBytes []byte + {{#returnType}} + localVarReturnValue {{^isArray}}{{^returnTypeIsPrimitive}}*{{/returnTypeIsPrimitive}}{{/isArray}}{{{.}}} + {{/returnType}} + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "{{{classname}}}Service.{{{nickname}}}") + if err != nil { + return {{#returnType}}localVarReturnValue, {{/returnType}}nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "{{{path}}}"{{#pathParams}} + localVarPath = strings.Replace(localVarPath, "{"+"{{baseName}}"+"}", url.PathEscape(parameterToString(r.{{paramName}}, "{{#collectionFormat}}{{collectionFormat}}{{/collectionFormat}}")), -1){{/pathParams}} + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + {{#allParams}} + {{#required}} + {{^isPathParam}} + if r.{{paramName}} == nil { + return {{#returnType}}localVarReturnValue, {{/returnType}}nil, reportError("{{paramName}} is required and must be specified") + } + {{/isPathParam}} + {{#minItems}} + if len({{^isPathParam}}*{{/isPathParam}}r.{{paramName}}) < {{minItems}} { + return {{#returnType}}localVarReturnValue, {{/returnType}}nil, reportError("{{paramName}} must have at least {{minItems}} elements") + } + {{/minItems}} + {{#maxItems}} + if len({{^isPathParam}}*{{/isPathParam}}r.{{paramName}}) > {{maxItems}} { + return {{#returnType}}localVarReturnValue, {{/returnType}}nil, reportError("{{paramName}} must have less than {{maxItems}} elements") + } + {{/maxItems}} + {{#minLength}} + if strlen({{^isPathParam}}*{{/isPathParam}}r.{{paramName}}) < {{minLength}} { + return {{#returnType}}localVarReturnValue, {{/returnType}}nil, reportError("{{paramName}} must have at least {{minLength}} elements") + } + {{/minLength}} + {{#maxLength}} + if strlen({{^isPathParam}}*{{/isPathParam}}r.{{paramName}}) > {{maxLength}} { + return {{#returnType}}localVarReturnValue, {{/returnType}}nil, reportError("{{paramName}} must have less than {{maxLength}} elements") + } + {{/maxLength}} + {{#minimum}} + {{#isString}} + {{paramName}}Txt, err := atoi({{^isPathParam}}*{{/isPathParam}}r.{{paramName}}) + if {{paramName}}Txt < {{minimum}} { + {{/isString}} + {{^isString}} + if {{^isPathParam}}*{{/isPathParam}}r.{{paramName}} < {{minimum}} { + {{/isString}} + return {{#returnType}}localVarReturnValue, {{/returnType}}nil, reportError("{{paramName}} must be greater than {{minimum}}") + } + {{/minimum}} + {{#maximum}} + {{#isString}} + {{paramName}}Txt, err := atoi({{^isPathParam}}*{{/isPathParam}}r.{{paramName}}) + if {{paramName}}Txt > {{maximum}} { + {{/isString}} + {{^isString}} + if {{^isPathParam}}*{{/isPathParam}}r.{{paramName}} > {{maximum}} { + {{/isString}} + return {{#returnType}}localVarReturnValue, {{/returnType}}nil, reportError("{{paramName}} must be less than {{maximum}}") + } + {{/maximum}} + {{/required}} + {{/allParams}} + + {{#queryParams}} + {{#required}} + {{#isCollectionFormatMulti}} + { + t := *r.{{paramName}} + if reflect.TypeOf(t).Kind() == reflect.Slice { + s := reflect.ValueOf(t) + for i := 0; i < s.Len(); i++ { + localVarQueryParams.Add("{{baseName}}", parameterToString(s.Index(i), "{{#collectionFormat}}{{collectionFormat}}{{/collectionFormat}}")) + } + } else { + localVarQueryParams.Add("{{baseName}}", parameterToString(t, "{{#collectionFormat}}{{collectionFormat}}{{/collectionFormat}}")) + } + } + {{/isCollectionFormatMulti}} + {{^isCollectionFormatMulti}} + localVarQueryParams.Add("{{baseName}}", parameterToString(*r.{{paramName}}, "{{#collectionFormat}}{{collectionFormat}}{{/collectionFormat}}")) + {{/isCollectionFormatMulti}} + {{/required}} + {{^required}} + if r.{{paramName}} != nil { + {{#isCollectionFormatMulti}} + t := *r.{{paramName}} + if reflect.TypeOf(t).Kind() == reflect.Slice { + s := reflect.ValueOf(t) + for i := 0; i < s.Len(); i++ { + localVarQueryParams.Add("{{baseName}}", parameterToString(s.Index(i), "{{#collectionFormat}}{{collectionFormat}}{{/collectionFormat}}")) + } + } else { + localVarQueryParams.Add("{{baseName}}", parameterToString(t, "{{#collectionFormat}}{{collectionFormat}}{{/collectionFormat}}")) + } + {{/isCollectionFormatMulti}} + {{^isCollectionFormatMulti}} + localVarQueryParams.Add("{{baseName}}", parameterToString(*r.{{paramName}}, "{{#collectionFormat}}{{collectionFormat}}{{/collectionFormat}}")) + {{/isCollectionFormatMulti}} + } + {{/required}} + {{/queryParams}} + // to determine the Content-Type header +{{=<% %>=}} + localVarHTTPContentTypes := []string{<%#consumes%>"<%&mediaType%>"<%^-last%>, <%/-last%><%/consumes%>} +<%={{ }}=%> + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header +{{=<% %>=}} + localVarHTTPHeaderAccepts := []string{<%#produces%>"<%&mediaType%>"<%^-last%>, <%/-last%><%/produces%>} +<%={{ }}=%> + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } +{{#headerParams}} + {{#required}} + localVarHeaderParams["{{baseName}}"] = parameterToString(*r.{{paramName}}, "{{#collectionFormat}}{{collectionFormat}}{{/collectionFormat}}") + {{/required}} + {{^required}} + if r.{{paramName}} != nil { + localVarHeaderParams["{{baseName}}"] = parameterToString(*r.{{paramName}}, "{{#collectionFormat}}{{collectionFormat}}{{/collectionFormat}}") + } + {{/required}} +{{/headerParams}} +{{#formParams}} +{{#isFile}} + localVarFormFileName = "{{baseName}}" +{{#required}} + localVarFile := *r.{{paramName}} +{{/required}} +{{^required}} + var localVarFile {{dataType}} + if r.{{paramName}} != nil { + localVarFile = *r.{{paramName}} + } +{{/required}} + if localVarFile != nil { + fbs, _ := ioutil.ReadAll(localVarFile) + localVarFileBytes = fbs + localVarFileName = localVarFile.Name() + localVarFile.Close() + } +{{/isFile}} +{{^isFile}} +{{#required}} + localVarFormParams.Add("{{baseName}}", parameterToString(*r.{{paramName}}, "{{#collectionFormat}}{{collectionFormat}}{{/collectionFormat}}")) +{{/required}} +{{^required}} +{{#isModel}} + if r.{{paramName}} != nil { + paramJson, err := parameterToJson(*r.{{paramName}}) + if err != nil { + return {{#returnType}}localVarReturnValue, {{/returnType}}nil, err + } + localVarFormParams.Add("{{baseName}}", paramJson) + } +{{/isModel}} +{{^isModel}} + if r.{{paramName}} != nil { + localVarFormParams.Add("{{baseName}}", parameterToString(*r.{{paramName}}, "{{#collectionFormat}}{{collectionFormat}}{{/collectionFormat}}")) + } +{{/isModel}} +{{/required}} +{{/isFile}} +{{/formParams}} +{{#bodyParams}} + // body params + localVarPostBody = r.{{paramName}} +{{/bodyParams}} +{{#authMethods}} +{{#isApiKey}} +{{^isKeyInCookie}} + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + {{#vendorExtensions.x-auth-id-alias}} + if apiKey, ok := auth["{{.}}"]; ok { + var key string + if prefix, ok := auth["{{name}}"]; ok && prefix.Prefix != "" { + key = prefix.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + {{/vendorExtensions.x-auth-id-alias}} + {{^vendorExtensions.x-auth-id-alias}} + if apiKey, ok := auth["{{name}}"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + {{/vendorExtensions.x-auth-id-alias}} + {{#isKeyInHeader}} + localVarHeaderParams["{{keyParamName}}"] = key + {{/isKeyInHeader}} + {{#isKeyInQuery}} + localVarQueryParams.Add("{{keyParamName}}", key) + {{/isKeyInQuery}} + } + } + } +{{/isKeyInCookie}} +{{/isApiKey}} +{{/authMethods}} + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes) + if err != nil { + return {{#returnType}}localVarReturnValue, {{/returnType}}nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return {{#returnType}}localVarReturnValue, {{/returnType}}localVarHTTPResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = ioutil.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return {{#returnType}}localVarReturnValue, {{/returnType}}localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + {{#responses}} + {{#dataType}} + {{^is1xx}} + {{^is2xx}} + {{^wildcard}} + if localVarHTTPResponse.StatusCode == {{{code}}} { + {{/wildcard}} + var v {{{dataType}}} + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return {{#returnType}}localVarReturnValue, {{/returnType}}localVarHTTPResponse, newErr + } + newErr.model = v + {{^-last}} + return {{#returnType}}localVarReturnValue, {{/returnType}}localVarHTTPResponse, newErr + {{/-last}} + {{^wildcard}} + } + {{/wildcard}} + {{/is2xx}} + {{/is1xx}} + {{/dataType}} + {{/responses}} + return {{#returnType}}localVarReturnValue, {{/returnType}}localVarHTTPResponse, newErr + } + + {{#returnType}} + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return {{#returnType}}localVarReturnValue, {{/returnType}}localVarHTTPResponse, newErr + } + + {{/returnType}} + return {{#returnType}}localVarReturnValue, {{/returnType}}localVarHTTPResponse, nil +} +{{/operation}} +{{/operations}} diff --git a/.schema/openapi/templates/go/api_doc.mustache b/.schema/openapi/templates/go/api_doc.mustache new file mode 100644 index 000000000..3e7c11b47 --- /dev/null +++ b/.schema/openapi/templates/go/api_doc.mustache @@ -0,0 +1,92 @@ +# {{invokerPackage}}\{{classname}}{{#description}} + +{{description}}{{/description}} + +All URIs are relative to *{{basePath}}* + +Method | HTTP request | Description +------------- | ------------- | ------------- +{{#operations}}{{#operation}}[**{{operationId}}**]({{classname}}.md#{{operationId}}) | **{{httpMethod}}** {{path}} | {{#summary}}{{summary}}{{/summary}} +{{/operation}}{{/operations}} + +{{#operations}} +{{#operation}} + +## {{{operationId}}} + +> {{#returnType}}{{{.}}} {{/returnType}}{{{operationId}}}(ctx{{#pathParams}}, {{paramName}}{{/pathParams}}){{#allParams}}{{^isPathParam}}.{{vendorExtensions.x-export-param-name}}({{paramName}}){{/isPathParam}}{{/allParams}}.Execute() + +{{{summary}}}{{#notes}} + +{{{unespacedNotes}}}{{/notes}} + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" +{{#vendorExtensions.x-go-import}} +{{{vendorExtensions.x-go-import}}} +{{/vendorExtensions.x-go-import}} + {{goImportAlias}} "./openapi" +) + +func main() { + {{#allParams}} + {{paramName}} := {{{vendorExtensions.x-go-example}}} // {{{dataType}}} | {{{description}}}{{^required}} (optional){{/required}}{{#defaultValue}} (default to {{{.}}}){{/defaultValue}} + {{/allParams}} + + configuration := {{goImportAlias}}.NewConfiguration() + apiClient := {{goImportAlias}}.NewAPIClient(configuration) + resp, r, err := apiClient.{{classname}}.{{operationId}}(context.Background(){{#pathParams}}, {{paramName}}{{/pathParams}}){{#allParams}}{{^isPathParam}}.{{vendorExtensions.x-export-param-name}}({{paramName}}){{/isPathParam}}{{/allParams}}.Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `{{classname}}.{{operationId}}``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } + {{#returnType}} + // response from `{{operationId}}`: {{{.}}} + fmt.Fprintf(os.Stdout, "Response from `{{classname}}.{{operationId}}`: %v\n", resp) + {{/returnType}} +} +``` + +### Path Parameters + +{{^allParams}}This endpoint does not need any parameter.{{/allParams}}{{#pathParams}}{{#-last}} +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- +**ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc.{{/-last}}{{/pathParams}}{{#pathParams}} +**{{paramName}}** | {{^isPrimitiveType}}{{^isFile}}[{{/isFile}}{{/isPrimitiveType}}**{{dataType}}**{{^isPrimitiveType}}{{^isFile}}]({{baseType}}.md){{/isFile}}{{/isPrimitiveType}} | {{description}} | {{#defaultValue}}[default to {{defaultValue}}]{{/defaultValue}}{{/pathParams}} + +### Other Parameters + +Other parameters are passed through a pointer to a api{{{nickname}}}Request struct via the builder pattern +{{#allParams}}{{#-last}} + +Name | Type | Description | Notes +------------- | ------------- | ------------- | -------------{{/-last}}{{/allParams}}{{#allParams}} +{{^isPathParam}} **{{paramName}}** | {{#isContainer}}{{#isArray}}{{#items}}{{^isPrimitiveType}}{{^isFile}}[{{/isFile}}{{/isPrimitiveType}}**[]{{dataType}}**{{^isPrimitiveType}}{{^isFile}}]({{^baseType}}{{dataType}}{{/baseType}}{{baseType}}.md){{/isFile}}{{/isPrimitiveType}}{{/items}}{{/isArray}}{{#isMap}}{{#items}}{{^isPrimitiveType}}{{^isFile}}[{{/isFile}}{{/isPrimitiveType}}**map[string]{{dataType}}**{{^isPrimitiveType}}{{^isFile}}]({{^baseType}}{{dataType}}{{/baseType}}{{baseType}}.md){{/isFile}}{{/isPrimitiveType}}{{/items}}{{/isMap}}{{/isContainer}}{{^isContainer}}{{^isPrimitiveType}}{{^isFile}}[{{/isFile}}{{/isPrimitiveType}}**{{dataType}}**{{^isPrimitiveType}}{{^isFile}}]({{^baseType}}{{dataType}}{{/baseType}}{{baseType}}.md){{/isFile}}{{/isPrimitiveType}}{{/isContainer}} | {{description}} | {{#defaultValue}}[default to {{defaultValue}}]{{/defaultValue}}{{/isPathParam}}{{/allParams}} + +### Return type + +{{#returnType}}{{#returnTypeIsPrimitive}}**{{{returnType}}}**{{/returnTypeIsPrimitive}}{{^returnTypeIsPrimitive}}[**{{{returnType}}}**]({{returnBaseType}}.md){{/returnTypeIsPrimitive}}{{/returnType}}{{^returnType}} (empty response body){{/returnType}} + +### Authorization + +{{^authMethods}}No authorization required{{/authMethods}}{{#authMethods}}[{{{name}}}](../README.md#{{{name}}}){{^-last}}, {{/-last}}{{/authMethods}} + +### HTTP request headers + +- **Content-Type**: {{#consumes}}{{{mediaType}}}{{^-last}}, {{/-last}}{{/consumes}}{{^consumes}}Not defined{{/consumes}} +- **Accept**: {{#produces}}{{{mediaType}}}{{^-last}}, {{/-last}}{{/produces}}{{^produces}}Not defined{{/produces}} + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + +{{/operation}} +{{/operations}} diff --git a/.schema/openapi/templates/go/client.mustache b/.schema/openapi/templates/go/client.mustache new file mode 100644 index 000000000..73fa05566 --- /dev/null +++ b/.schema/openapi/templates/go/client.mustache @@ -0,0 +1,583 @@ +{{>partial_header}} +package {{packageName}} + +import ( + "bytes" + "context" + "encoding/json" + "encoding/xml" + "errors" + "fmt" + "io" + "log" + "mime/multipart" + "net/http" + "net/http/httputil" + "net/url" + "os" + "path/filepath" + "reflect" + "regexp" + "strconv" + "strings" + "time" + "unicode/utf8" + + "golang.org/x/oauth2" + {{#withAWSV4Signature}} + awsv4 "github.com/aws/aws-sdk-go/aws/signer/v4" + awscredentials "github.com/aws/aws-sdk-go/aws/credentials" + {{/withAWSV4Signature}} +) + +var ( + jsonCheck = regexp.MustCompile(`(?i:(?:application|text)/(?:vnd\.[^;]+\+)?json)`) + xmlCheck = regexp.MustCompile(`(?i:(?:application|text)/xml)`) +) + +// APIClient manages communication with the {{appName}} API v{{version}} +// In most cases there should be only one, shared, APIClient. +type APIClient struct { + cfg *Configuration + common service // Reuse a single struct instead of allocating one for each service on the heap. + + // API Services +{{#apiInfo}} +{{#apis}} +{{#operations}} + + {{#generateInterfaces}} + {{classname}} {{classname}} + {{/generateInterfaces}} + {{^generateInterfaces}} + {{classname}} *{{classname}}Service + {{/generateInterfaces}} +{{/operations}} +{{/apis}} +{{/apiInfo}} +} + +type service struct { + client *APIClient +} + +// NewAPIClient creates a new API client. Requires a userAgent string describing your application. +// optionally a custom http.Client to allow for advanced features such as caching. +func NewAPIClient(cfg *Configuration) *APIClient { + if cfg.HTTPClient == nil { + cfg.HTTPClient = http.DefaultClient + } + + c := &APIClient{} + c.cfg = cfg + c.common.client = c + +{{#apiInfo}} + // API Services +{{#apis}} +{{#operations}} + c.{{classname}} = (*{{classname}}Service)(&c.common) +{{/operations}} +{{/apis}} +{{/apiInfo}} + + return c +} + +func atoi(in string) (int, error) { + return strconv.Atoi(in) +} + +// selectHeaderContentType select a content type from the available list. +func selectHeaderContentType(contentTypes []string) string { + if len(contentTypes) == 0 { + return "" + } + if contains(contentTypes, "application/json") { + return "application/json" + } + return contentTypes[0] // use the first content type specified in 'consumes' +} + +// selectHeaderAccept join all accept types and return +func selectHeaderAccept(accepts []string) string { + if len(accepts) == 0 { + return "" + } + + if contains(accepts, "application/json") { + return "application/json" + } + + return strings.Join(accepts, ",") +} + +// contains is a case insenstive match, finding needle in a haystack +func contains(haystack []string, needle string) bool { + for _, a := range haystack { + if strings.ToLower(a) == strings.ToLower(needle) { + return true + } + } + return false +} + +// Verify optional parameters are of the correct type. +func typeCheckParameter(obj interface{}, expected string, name string) error { + // Make sure there is an object. + if obj == nil { + return nil + } + + // Check the type is as expected. + if reflect.TypeOf(obj).String() != expected { + return fmt.Errorf("Expected %s to be of type %s but received %s.", name, expected, reflect.TypeOf(obj).String()) + } + return nil +} + +// parameterToString convert interface{} parameters to string, using a delimiter if format is provided. +func parameterToString(obj interface{}, collectionFormat string) string { + var delimiter string + + switch collectionFormat { + case "pipes": + delimiter = "|" + case "ssv": + delimiter = " " + case "tsv": + delimiter = "\t" + case "csv": + delimiter = "," + } + + if reflect.TypeOf(obj).Kind() == reflect.Slice { + return strings.Trim(strings.Replace(fmt.Sprint(obj), " ", delimiter, -1), "[]") + } else if t, ok := obj.(time.Time); ok { + return t.Format(time.RFC3339) + } + + return fmt.Sprintf("%v", obj) +} + +// helper for converting interface{} parameters to json strings +func parameterToJson(obj interface{}) (string, error) { + jsonBuf, err := json.Marshal(obj) + if err != nil { + return "", err + } + return string(jsonBuf), err +} + + +// callAPI do the request. +func (c *APIClient) callAPI(request *http.Request) (*http.Response, error) { + if c.cfg.Debug { + dump, err := httputil.DumpRequestOut(request, true) + if err != nil { + return nil, err + } + log.Printf("\n%s\n", string(dump)) + } + + resp, err := c.cfg.HTTPClient.Do(request) + if err != nil { + return resp, err + } + + if c.cfg.Debug { + dump, err := httputil.DumpResponse(resp, true) + if err != nil { + return resp, err + } + log.Printf("\n%s\n", string(dump)) + } + return resp, err +} + +// Allow modification of underlying config for alternate implementations and testing +// Caution: modifying the configuration while live can cause data races and potentially unwanted behavior +func (c *APIClient) GetConfig() *Configuration { + return c.cfg +} + +// prepareRequest build the request +func (c *APIClient) prepareRequest( + ctx context.Context, + path string, method string, + postBody interface{}, + headerParams map[string]string, + queryParams url.Values, + formParams url.Values, + formFileName string, + fileName string, + fileBytes []byte) (localVarRequest *http.Request, err error) { + + var body *bytes.Buffer + + // Detect postBody type and post. + if postBody != nil { + contentType := headerParams["Content-Type"] + if contentType == "" { + contentType = detectContentType(postBody) + headerParams["Content-Type"] = contentType + } + + body, err = setBody(postBody, contentType) + if err != nil { + return nil, err + } + } + + // add form parameters and file if available. + if strings.HasPrefix(headerParams["Content-Type"], "multipart/form-data") && len(formParams) > 0 || (len(fileBytes) > 0 && fileName != "") { + if body != nil { + return nil, errors.New("Cannot specify postBody and multipart form at the same time.") + } + body = &bytes.Buffer{} + w := multipart.NewWriter(body) + + for k, v := range formParams { + for _, iv := range v { + if strings.HasPrefix(k, "@") { // file + err = addFile(w, k[1:], iv) + if err != nil { + return nil, err + } + } else { // form value + w.WriteField(k, iv) + } + } + } + if len(fileBytes) > 0 && fileName != "" { + w.Boundary() + //_, fileNm := filepath.Split(fileName) + part, err := w.CreateFormFile(formFileName, filepath.Base(fileName)) + if err != nil { + return nil, err + } + _, err = part.Write(fileBytes) + if err != nil { + return nil, err + } + } + + // Set the Boundary in the Content-Type + headerParams["Content-Type"] = w.FormDataContentType() + + // Set Content-Length + headerParams["Content-Length"] = fmt.Sprintf("%d", body.Len()) + w.Close() + } + + if strings.HasPrefix(headerParams["Content-Type"], "application/x-www-form-urlencoded") && len(formParams) > 0 { + if body != nil { + return nil, errors.New("Cannot specify postBody and x-www-form-urlencoded form at the same time.") + } + body = &bytes.Buffer{} + body.WriteString(formParams.Encode()) + // Set Content-Length + headerParams["Content-Length"] = fmt.Sprintf("%d", body.Len()) + } + + // Setup path and query parameters + url, err := url.Parse(path) + if err != nil { + return nil, err + } + + // Override request host, if applicable + if c.cfg.Host != "" { + url.Host = c.cfg.Host + } + + // Override request scheme, if applicable + if c.cfg.Scheme != "" { + url.Scheme = c.cfg.Scheme + } + + // Adding Query Param + query := url.Query() + for k, v := range queryParams { + for _, iv := range v { + query.Add(k, iv) + } + } + + // Encode the parameters. + url.RawQuery = query.Encode() + + // Generate a new request + if body != nil { + localVarRequest, err = http.NewRequest(method, url.String(), body) + } else { + localVarRequest, err = http.NewRequest(method, url.String(), nil) + } + if err != nil { + return nil, err + } + + // add header parameters, if any + if len(headerParams) > 0 { + headers := http.Header{} + for h, v := range headerParams { + headers.Set(h, v) + } + localVarRequest.Header = headers + } + + // Add the user agent to the request. + localVarRequest.Header.Add("User-Agent", c.cfg.UserAgent) + + if ctx != nil { + // add context to the request + localVarRequest = localVarRequest.WithContext(ctx) + + // Walk through any authentication. + + // OAuth2 authentication + if tok, ok := ctx.Value(ContextOAuth2).(oauth2.TokenSource); ok { + // We were able to grab an oauth2 token from the context + var latestToken *oauth2.Token + if latestToken, err = tok.Token(); err != nil { + return nil, err + } + + latestToken.SetAuthHeader(localVarRequest) + } + + // Basic HTTP Authentication + if auth, ok := ctx.Value(ContextBasicAuth).(BasicAuth); ok { + localVarRequest.SetBasicAuth(auth.UserName, auth.Password) + } + + // AccessToken Authentication + if auth, ok := ctx.Value(ContextAccessToken).(string); ok { + localVarRequest.Header.Add("Authorization", "Bearer "+auth) + } + + {{#withAWSV4Signature}} + // AWS Signature v4 Authentication + if auth, ok := ctx.Value(ContextAWSv4).(AWSv4); ok { + creds := awscredentials.NewStaticCredentials(auth.AccessKey, auth.SecretKey, "") + signer := awsv4.NewSigner(creds) + var reader *strings.Reader + if body == nil { + reader = strings.NewReader("") + } else { + reader = strings.NewReader(body.String()) + } + timestamp := time.Now() + _, err := signer.Sign(localVarRequest, reader, "oapi", "eu-west-2", timestamp) + if err != nil { + return nil, err + } + } + {{/withAWSV4Signature}} + } + + for header, value := range c.cfg.DefaultHeader { + localVarRequest.Header.Add(header, value) + } +{{#hasHttpSignatureMethods}} + if ctx != nil { + // HTTP Signature Authentication. All request headers must be set (including default headers) + // because the headers may be included in the signature. + if auth, ok := ctx.Value(ContextHttpSignatureAuth).(HttpSignatureAuth); ok { + err = SignRequest(ctx, localVarRequest, auth) + if err != nil { + return nil, err + } + } + } +{{/hasHttpSignatureMethods}} + return localVarRequest, nil +} + +func (c *APIClient) decode(v interface{}, b []byte, contentType string) (err error) { + if len(b) == 0 { + return nil + } + if s, ok := v.(*string); ok { + *s = string(b) + return nil + } + if xmlCheck.MatchString(contentType) { + if err = xml.Unmarshal(b, v); err != nil { + return err + } + return nil + } + if jsonCheck.MatchString(contentType) { + if actualObj, ok := v.(interface{GetActualInstance() interface{}}); ok { // oneOf, anyOf schemas + if unmarshalObj, ok := actualObj.(interface{UnmarshalJSON([]byte) error}); ok { // make sure it has UnmarshalJSON defined + if err = unmarshalObj.UnmarshalJSON(b); err!= nil { + return err + } + } else { + return errors.New("Unknown type with GetActualInstance but no unmarshalObj.UnmarshalJSON defined") + } + } else if err = json.Unmarshal(b, v); err != nil { // simple model + return err + } + return nil + } + return errors.New("undefined response type") +} + +// Add a file to the multipart request +func addFile(w *multipart.Writer, fieldName, path string) error { + file, err := os.Open(path) + if err != nil { + return err + } + defer file.Close() + + part, err := w.CreateFormFile(fieldName, filepath.Base(path)) + if err != nil { + return err + } + _, err = io.Copy(part, file) + + return err +} + +// Prevent trying to import "fmt" +func reportError(format string, a ...interface{}) error { + return fmt.Errorf(format, a...) +} + +// Prevent trying to import "bytes" +func newStrictDecoder(data []byte) *json.Decoder { + dec := json.NewDecoder(bytes.NewBuffer(data)) + dec.DisallowUnknownFields() + return dec +} + +// Set request body from an interface{} +func setBody(body interface{}, contentType string) (bodyBuf *bytes.Buffer, err error) { + if bodyBuf == nil { + bodyBuf = &bytes.Buffer{} + } + + if reader, ok := body.(io.Reader); ok { + _, err = bodyBuf.ReadFrom(reader) + } else if b, ok := body.([]byte); ok { + _, err = bodyBuf.Write(b) + } else if s, ok := body.(string); ok { + _, err = bodyBuf.WriteString(s) + } else if s, ok := body.(*string); ok { + _, err = bodyBuf.WriteString(*s) + } else if jsonCheck.MatchString(contentType) { + err = json.NewEncoder(bodyBuf).Encode(body) + } else if xmlCheck.MatchString(contentType) { + err = xml.NewEncoder(bodyBuf).Encode(body) + } + + if err != nil { + return nil, err + } + + if bodyBuf.Len() == 0 { + err = fmt.Errorf("Invalid body type %s\n", contentType) + return nil, err + } + return bodyBuf, nil +} + +// detectContentType method is used to figure out `Request.Body` content type for request header +func detectContentType(body interface{}) string { + contentType := "text/plain; charset=utf-8" + kind := reflect.TypeOf(body).Kind() + + switch kind { + case reflect.Struct, reflect.Map, reflect.Ptr: + contentType = "application/json; charset=utf-8" + case reflect.String: + contentType = "text/plain; charset=utf-8" + default: + if b, ok := body.([]byte); ok { + contentType = http.DetectContentType(b) + } else if kind == reflect.Slice { + contentType = "application/json; charset=utf-8" + } + } + + return contentType +} + +// Ripped from https://github.com/gregjones/httpcache/blob/master/httpcache.go +type cacheControl map[string]string + +func parseCacheControl(headers http.Header) cacheControl { + cc := cacheControl{} + ccHeader := headers.Get("Cache-Control") + for _, part := range strings.Split(ccHeader, ",") { + part = strings.Trim(part, " ") + if part == "" { + continue + } + if strings.ContainsRune(part, '=') { + keyval := strings.Split(part, "=") + cc[strings.Trim(keyval[0], " ")] = strings.Trim(keyval[1], ",") + } else { + cc[part] = "" + } + } + return cc +} + +// CacheExpires helper function to determine remaining time before repeating a request. +func CacheExpires(r *http.Response) time.Time { + // Figure out when the cache expires. + var expires time.Time + now, err := time.Parse(time.RFC1123, r.Header.Get("date")) + if err != nil { + return time.Now() + } + respCacheControl := parseCacheControl(r.Header) + + if maxAge, ok := respCacheControl["max-age"]; ok { + lifetime, err := time.ParseDuration(maxAge + "s") + if err != nil { + expires = now + } else { + expires = now.Add(lifetime) + } + } else { + expiresHeader := r.Header.Get("Expires") + if expiresHeader != "" { + expires, err = time.Parse(time.RFC1123, expiresHeader) + if err != nil { + expires = now + } + } + } + return expires +} + +func strlen(s string) int { + return utf8.RuneCountInString(s) +} + +// GenericOpenAPIError Provides access to the body, error and model on returned errors. +type GenericOpenAPIError struct { + body []byte + error string + model interface{} +} + +// Error returns non-empty string if there was an error. +func (e GenericOpenAPIError) Error() string { + return e.error +} + +// Body returns the raw bytes of the response +func (e GenericOpenAPIError) Body() []byte { + return e.body +} + +// Model returns the unpacked model of the error +func (e GenericOpenAPIError) Model() interface{} { + return e.model +} diff --git a/.schema/openapi/templates/go/configuration.mustache b/.schema/openapi/templates/go/configuration.mustache new file mode 100644 index 000000000..1f5436d84 --- /dev/null +++ b/.schema/openapi/templates/go/configuration.mustache @@ -0,0 +1,303 @@ +{{>partial_header}} +package {{packageName}} + +import ( + "context" + "fmt" + "net/http" + "strings" +) + +// contextKeys are used to identify the type of value in the context. +// Since these are string, it is possible to get a short description of the +// context key for logging and debugging using key.String(). + +type contextKey string + +func (c contextKey) String() string { + return "auth " + string(c) +} + +var ( + // ContextOAuth2 takes an oauth2.TokenSource as authentication for the request. + ContextOAuth2 = contextKey("token") + + // ContextBasicAuth takes BasicAuth as authentication for the request. + ContextBasicAuth = contextKey("basic") + + // ContextAccessToken takes a string oauth2 access token as authentication for the request. + ContextAccessToken = contextKey("accesstoken") + + // ContextAPIKeys takes a string apikey as authentication for the request + ContextAPIKeys = contextKey("apiKeys") + + {{#withAWSV4Signature}} + // ContextAWSv4 takes an Access Key and a Secret Key for signing AWS Signature v4 + ContextAWSv4 = contextKey("awsv4") + + {{/withAWSV4Signature}} + // ContextHttpSignatureAuth takes HttpSignatureAuth as authentication for the request. + ContextHttpSignatureAuth = contextKey("httpsignature") + + // ContextServerIndex uses a server configuration from the index. + ContextServerIndex = contextKey("serverIndex") + + // ContextOperationServerIndices uses a server configuration from the index mapping. + ContextOperationServerIndices = contextKey("serverOperationIndices") + + // ContextServerVariables overrides a server configuration variables. + ContextServerVariables = contextKey("serverVariables") + + // ContextOperationServerVariables overrides a server configuration variables using operation specific values. + ContextOperationServerVariables = contextKey("serverOperationVariables") +) + +// BasicAuth provides basic http authentication to a request passed via context using ContextBasicAuth +type BasicAuth struct { + UserName string `json:"userName,omitempty"` + Password string `json:"password,omitempty"` +} + +// APIKey provides API key based authentication to a request passed via context using ContextAPIKey +type APIKey struct { + Key string + Prefix string +} + +{{#withAWSV4Signature}} +// AWSv4 provides AWS Signature to a request passed via context using ContextAWSv4 +// https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html +type AWSv4 struct { + AccessKey string + SecretKey string +} + +{{/withAWSV4Signature}} +// ServerVariable stores the information about a server variable +type ServerVariable struct { + Description string + DefaultValue string + EnumValues []string +} + +// ServerConfiguration stores the information about a server +type ServerConfiguration struct { + URL string + Description string + Variables map[string]ServerVariable +} + +// ServerConfigurations stores multiple ServerConfiguration items +type ServerConfigurations []ServerConfiguration + +// Configuration stores the configuration of the API client +type Configuration struct { + Host string `json:"host,omitempty"` + Scheme string `json:"scheme,omitempty"` + DefaultHeader map[string]string `json:"defaultHeader,omitempty"` + UserAgent string `json:"userAgent,omitempty"` + Debug bool `json:"debug,omitempty"` + Servers ServerConfigurations + OperationServers map[string]ServerConfigurations + HTTPClient *http.Client +} + +// NewConfiguration returns a new Configuration object +func NewConfiguration() *Configuration { + cfg := &Configuration{ + DefaultHeader: make(map[string]string), + UserAgent: "{{#httpUserAgent}}{{{.}}}{{/httpUserAgent}}{{^httpUserAgent}}OpenAPI-Generator/{{{packageVersion}}}/go{{/httpUserAgent}}", + Debug: false, + {{#servers}} + {{#-first}} + Servers: ServerConfigurations{ + {{/-first}} + { + URL: "{{{url}}}", + Description: "{{{description}}}{{^description}}No description provided{{/description}}", + {{#variables}} + {{#-first}} + Variables: map[string]ServerVariable{ + {{/-first}} + "{{{name}}}": ServerVariable{ + Description: "{{{description}}}{{^description}}No description provided{{/description}}", + DefaultValue: "{{{defaultValue}}}", + {{#enumValues}} + {{#-first}} + EnumValues: []string{ + {{/-first}} + "{{{.}}}", + {{#-last}} + }, + {{/-last}} + {{/enumValues}} + }, + {{#-last}} + }, + {{/-last}} + {{/variables}} + }, + {{#-last}} + }, + {{/-last}} + {{/servers}} + {{#apiInfo}} + OperationServers: map[string]ServerConfigurations{ + {{#apis}} + {{#operations}} + {{#operation}} + {{#servers}} + {{#-first}} + "{{{classname}}}Service.{{{nickname}}}": { + {{/-first}} + { + URL: "{{{url}}}", + Description: "{{{description}}}{{^description}}No description provided{{/description}}", + {{#variables}} + {{#-first}} + Variables: map[string]ServerVariable{ + {{/-first}} + "{{{name}}}": ServerVariable{ + Description: "{{{description}}}{{^description}}No description provided{{/description}}", + DefaultValue: "{{{defaultValue}}}", + {{#enumValues}} + {{#-first}} + EnumValues: []string{ + {{/-first}} + "{{{.}}}", + {{#-last}} + }, + {{/-last}} + {{/enumValues}} + }, + {{#-last}} + }, + {{/-last}} + {{/variables}} + }, + {{#-last}} + }, + {{/-last}} + {{/servers}} + {{/operation}} + {{/operations}} + {{/apis}} + }, + {{/apiInfo}} + } + return cfg +} + +// AddDefaultHeader adds a new HTTP header to the default header in the request +func (c *Configuration) AddDefaultHeader(key string, value string) { + c.DefaultHeader[key] = value +} + +// URL formats template on a index using given variables +func (sc ServerConfigurations) URL(index int, variables map[string]string) (string, error) { + if index < 0 || len(sc) <= index { + return "", fmt.Errorf("Index %v out of range %v", index, len(sc)-1) + } + server := sc[index] + url := server.URL + + // go through variables and replace placeholders + for name, variable := range server.Variables { + if value, ok := variables[name]; ok { + found := bool(len(variable.EnumValues) == 0) + for _, enumValue := range variable.EnumValues { + if value == enumValue { + found = true + } + } + if !found { + return "", fmt.Errorf("The variable %s in the server URL has invalid value %v. Must be %v", name, value, variable.EnumValues) + } + url = strings.Replace(url, "{"+name+"}", value, -1) + } else { + url = strings.Replace(url, "{"+name+"}", variable.DefaultValue, -1) + } + } + return url, nil +} + +// ServerURL returns URL based on server settings +func (c *Configuration) ServerURL(index int, variables map[string]string) (string, error) { + return c.Servers.URL(index, variables) +} + +func getServerIndex(ctx context.Context) (int, error) { + si := ctx.Value(ContextServerIndex) + if si != nil { + if index, ok := si.(int); ok { + return index, nil + } + return 0, reportError("Invalid type %T should be int", si) + } + return 0, nil +} + +func getServerOperationIndex(ctx context.Context, endpoint string) (int, error) { + osi := ctx.Value(ContextOperationServerIndices) + if osi != nil { + if operationIndices, ok := osi.(map[string]int); !ok { + return 0, reportError("Invalid type %T should be map[string]int", osi) + } else { + index, ok := operationIndices[endpoint] + if ok { + return index, nil + } + } + } + return getServerIndex(ctx) +} + +func getServerVariables(ctx context.Context) (map[string]string, error) { + sv := ctx.Value(ContextServerVariables) + if sv != nil { + if variables, ok := sv.(map[string]string); ok { + return variables, nil + } + return nil, reportError("ctx value of ContextServerVariables has invalid type %T should be map[string]string", sv) + } + return nil, nil +} + +func getServerOperationVariables(ctx context.Context, endpoint string) (map[string]string, error) { + osv := ctx.Value(ContextOperationServerVariables) + if osv != nil { + if operationVariables, ok := osv.(map[string]map[string]string); !ok { + return nil, reportError("ctx value of ContextOperationServerVariables has invalid type %T should be map[string]map[string]string", osv) + } else { + variables, ok := operationVariables[endpoint] + if ok { + return variables, nil + } + } + } + return getServerVariables(ctx) +} + +// ServerURLWithContext returns a new server URL given an endpoint +func (c *Configuration) ServerURLWithContext(ctx context.Context, endpoint string) (string, error) { + sc, ok := c.OperationServers[endpoint] + if !ok { + sc = c.Servers + } + + if ctx == nil { + return sc.URL(0, nil) + } + + index, err := getServerOperationIndex(ctx, endpoint) + if err != nil { + return "", err + } + + variables, err := getServerOperationVariables(ctx, endpoint) + if err != nil { + return "", err + } + + return sc.URL(index, variables) +} diff --git a/.schema/openapi/templates/go/git_push.sh.mustache b/.schema/openapi/templates/go/git_push.sh.mustache new file mode 100755 index 000000000..8b3f689c9 --- /dev/null +++ b/.schema/openapi/templates/go/git_push.sh.mustache @@ -0,0 +1,58 @@ +#!/bin/sh +# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/ +# +# Usage example: /bin/sh ./git_push.sh wing328 openapi-pestore-perl "minor update" "gitlab.com" + +git_user_id=$1 +git_repo_id=$2 +release_note=$3 +git_host=$4 + +if [ "$git_host" = "" ]; then + git_host="{{{gitHost}}}" + echo "[INFO] No command line input provided. Set \$git_host to $git_host" +fi + +if [ "$git_user_id" = "" ]; then + git_user_id="{{{gitUserId}}}" + echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id" +fi + +if [ "$git_repo_id" = "" ]; then + git_repo_id="{{{gitRepoId}}}" + echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id" +fi + +if [ "$release_note" = "" ]; then + release_note="{{{releaseNote}}}" + echo "[INFO] No command line input provided. Set \$release_note to $release_note" +fi + +# Initialize the local directory as a Git repository +git init + +# Adds the files in the local repository and stages them for commit. +git add . + +# Commits the tracked changes and prepares them to be pushed to a remote repository. +git commit -m "$release_note" + +# Sets the new remote +git_remote=`git remote` +if [ "$git_remote" = "" ]; then # git remote not defined + + if [ "$GIT_TOKEN" = "" ]; then + echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment." + git remote add origin https://${git_host}/${git_user_id}/${git_repo_id}.git + else + git remote add origin https://${git_user_id}:${GIT_TOKEN}@${git_host}/${git_user_id}/${git_repo_id}.git + fi + +fi + +git pull origin master + +# Pushes (Forces) the changes in the local repository up to the remote repository +echo "Git pushing to https://${git_host}/${git_user_id}/${git_repo_id}.git" +git push origin master 2>&1 | grep -v 'To https' + diff --git a/.schema/openapi/templates/go/gitignore.mustache b/.schema/openapi/templates/go/gitignore.mustache new file mode 100644 index 000000000..daf913b1b --- /dev/null +++ b/.schema/openapi/templates/go/gitignore.mustache @@ -0,0 +1,24 @@ +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe +*.test +*.prof diff --git a/.schema/openapi/templates/go/go.mod.mustache b/.schema/openapi/templates/go/go.mod.mustache new file mode 100644 index 000000000..21fcfdeb9 --- /dev/null +++ b/.schema/openapi/templates/go/go.mod.mustache @@ -0,0 +1,10 @@ +module {{gitHost}}/{{gitUserId}}/{{gitRepoId}}{{#isGoSubmodule}}/{{packageName}}{{/isGoSubmodule}} + +go 1.13 + +require ( + golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 + {{#withAWSV4Signature}} + github.com/aws/aws-sdk-go v1.34.14 + {{/withAWSV4Signature}} +) diff --git a/.schema/openapi/templates/go/go.sum b/.schema/openapi/templates/go/go.sum new file mode 100644 index 000000000..734252e68 --- /dev/null +++ b/.schema/openapi/templates/go/go.sum @@ -0,0 +1,13 @@ +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e h1:bRhVy7zSSasaqNksaRZiA5EEI+Ei4I1nO5Jh72wfHlg= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4 h1:YUO/7uOKsKeq9UokNS62b8FYywz3ker1l1vDZRCRefw= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= diff --git a/.schema/openapi/templates/go/model.mustache b/.schema/openapi/templates/go/model.mustache new file mode 100644 index 000000000..684af1d33 --- /dev/null +++ b/.schema/openapi/templates/go/model.mustache @@ -0,0 +1,20 @@ +{{>partial_header}} +package {{packageName}} + +{{#models}} +import ( + "encoding/json" +{{#imports}} + "{{import}}" +{{/imports}} +) + +{{#model}} +{{#isEnum}} +{{>model_enum}} +{{/isEnum}} +{{^isEnum}} +{{#oneOf}}{{#-first}}{{>model_oneof}}{{/-first}}{{/oneOf}}{{^oneOf}}{{#anyOf}}{{#-first}}{{>model_anyof}}{{/-first}}{{/anyOf}}{{^anyOf}}{{>model_simple}}{{/anyOf}}{{/oneOf}} +{{/isEnum}} +{{/model}} +{{/models}} diff --git a/.schema/openapi/templates/go/model_anyof.mustache b/.schema/openapi/templates/go/model_anyof.mustache new file mode 100644 index 000000000..5dfa75302 --- /dev/null +++ b/.schema/openapi/templates/go/model_anyof.mustache @@ -0,0 +1,76 @@ +// {{classname}}{{#description}} {{{description}}}{{/description}}{{^description}} struct for {{{classname}}}{{/description}} +type {{classname}} struct { + {{#anyOf}} + {{{.}}} *{{{.}}} + {{/anyOf}} +} + +// Unmarshal JSON data into any of the pointers in the struct +func (dst *{{classname}}) UnmarshalJSON(data []byte) error { + var err error + {{#isNullable}} + // this object is nullable so check if the payload is null or empty string + if string(data) == "" || string(data) == "{}" { + return nil + } + + {{/isNullable}} + {{#discriminator}} + {{#mappedModels}} + {{#-first}} + // use discriminator value to speed up the lookup + var jsonDict map[string]interface{} + err := json.Unmarshal(data, &jsonDict) + if err != nil { + return fmt.Errorf("Failed to unmarshal JSON into map for the discrimintor lookup.") + } + + {{/-first}} + // check if the discriminator value is '{{{mappingName}}}' + if jsonDict["{{{propertyBaseName}}}"] == "{{{mappingName}}}" { + // try to unmarshal JSON data into {{{modelName}}} + err = json.Unmarshal(data, &dst.{{{modelName}}}); + if err == nil { + json{{{modelName}}}, _ := json.Marshal(dst.{{{modelName}}}) + if string(json{{{modelName}}}) == "{}" { // empty struct + dst.{{{modelName}}} = nil + } else { + return nil // data stored in dst.{{{modelName}}}, return on the first match + } + } else { + dst.{{{modelName}}} = nil + } + } + + {{/mappedModels}} + {{/discriminator}} + {{#anyOf}} + // try to unmarshal JSON data into {{{.}}} + err = json.Unmarshal(data, &dst.{{{.}}}); + if err == nil { + json{{{.}}}, _ := json.Marshal(dst.{{{.}}}) + if string(json{{{.}}}) == "{}" { // empty struct + dst.{{{.}}} = nil + } else { + return nil // data stored in dst.{{{.}}}, return on the first match + } + } else { + dst.{{{.}}} = nil + } + + {{/anyOf}} + return fmt.Errorf("Data failed to match schemas in anyOf({{classname}})") +} + +// Marshal data from the first non-nil pointers in the struct to JSON +func (src *{{classname}}) MarshalJSON() ([]byte, error) { +{{#anyOf}} + if src.{{{.}}} != nil { + return json.Marshal(&src.{{{.}}}) + } + +{{/anyOf}} + return nil, nil // no data in anyOf schemas +} + +{{>nullable_model}} diff --git a/.schema/openapi/templates/go/model_doc.mustache b/.schema/openapi/templates/go/model_doc.mustache new file mode 100644 index 000000000..439e695b1 --- /dev/null +++ b/.schema/openapi/templates/go/model_doc.mustache @@ -0,0 +1,97 @@ +{{#models}}{{#model}}# {{classname}} + +{{^isEnum}} +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +{{#vendorExtensions.x-is-one-of-interface}} +**{{classname}}Interface** | **interface { {{#discriminator}}{{propertyGetter}}() {{propertyType}}{{/discriminator}} }** | An interface that can hold any of the proper implementing types | +{{/vendorExtensions.x-is-one-of-interface}} +{{^vendorExtensions.x-is-one-of-interface}} +{{#vars}}**{{name}}** | {{^required}}Pointer to {{/required}}{{#isContainer}}{{#isArray}}{{#items}}{{^isPrimitiveType}}{{^isFile}}[{{/isFile}}{{/isPrimitiveType}}**[]{{dataType}}**{{^isPrimitiveType}}{{^isFile}}]({{dataType}}.md){{/isFile}}{{/isPrimitiveType}}{{/items}}{{/isArray}}{{#isMap}}{{#items}}{{^isPrimitiveType}}{{^isFile}}[{{/isFile}}{{/isPrimitiveType}}**map[string]{{dataType}}**{{^isPrimitiveType}}{{^isFile}}]({{^baseType}}{{dataType}}{{/baseType}}{{baseType}}.md){{/isFile}}{{/isPrimitiveType}}{{/items}}{{/isMap}}{{/isContainer}}{{^isContainer}}{{^isPrimitiveType}}{{^isFile}}{{^isDateTime}}[{{/isDateTime}}{{/isFile}}{{/isPrimitiveType}}**{{dataType}}**{{^isPrimitiveType}}{{^isFile}}{{^isDateTime}}]({{^baseType}}{{dataType}}{{/baseType}}{{baseType}}.md){{/isDateTime}}{{/isFile}}{{/isPrimitiveType}}{{/isContainer}} | {{description}} | {{^required}}[optional] {{/required}}{{#isReadOnly}}[readonly] {{/isReadOnly}}{{#defaultValue}}[default to {{{.}}}]{{/defaultValue}} +{{/vars}} +{{/vendorExtensions.x-is-one-of-interface}} + +## Methods + +{{^vendorExtensions.x-is-one-of-interface}} +### New{{classname}} + +`func New{{classname}}({{#vars}}{{#required}}{{nameInCamelCase}} {{dataType}}, {{/required}}{{/vars}}) *{{classname}}` + +New{{classname}} instantiates a new {{classname}} object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### New{{classname}}WithDefaults + +`func New{{classname}}WithDefaults() *{{classname}}` + +New{{classname}}WithDefaults instantiates a new {{classname}} object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +{{#vars}} +### Get{{name}} + +`func (o *{{classname}}) Get{{name}}() {{vendorExtensions.x-go-base-type}}` + +Get{{name}} returns the {{name}} field if non-nil, zero value otherwise. + +### Get{{name}}Ok + +`func (o *{{classname}}) Get{{name}}Ok() (*{{vendorExtensions.x-go-base-type}}, bool)` + +Get{{name}}Ok returns a tuple with the {{name}} field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### Set{{name}} + +`func (o *{{classname}}) Set{{name}}(v {{vendorExtensions.x-go-base-type}})` + +Set{{name}} sets {{name}} field to given value. + +{{^required}} +### Has{{name}} + +`func (o *{{classname}}) Has{{name}}() bool` + +Has{{name}} returns a boolean if a field has been set. +{{/required}} + +{{#isNullable}} +### Set{{name}}Nil + +`func (o *{{classname}}) Set{{name}}Nil(b bool)` + + Set{{name}}Nil sets the value for {{name}} to be an explicit nil + +### Unset{{name}} +`func (o *{{classname}}) Unset{{name}}()` + +Unset{{name}} ensures that no value is present for {{name}}, not even an explicit nil +{{/isNullable}} +{{/vars}} +{{#vendorExtensions.x-implements}} + +### As{{{.}}} + +`func (s *{{classname}}) As{{{.}}}() {{{.}}}` + +Convenience method to wrap this instance of {{classname}} in {{{.}}} +{{/vendorExtensions.x-implements}} +{{/vendorExtensions.x-is-one-of-interface}} +{{/isEnum}} +{{#isEnum}} +## Enum + +{{#allowableValues}}{{#enumVars}} +* `{{name}}` (value: `{{{value}}}`) +{{/enumVars}}{{/allowableValues}} +{{/isEnum}} + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + +{{/model}}{{/models}} diff --git a/.schema/openapi/templates/go/model_enum.mustache b/.schema/openapi/templates/go/model_enum.mustache new file mode 100644 index 000000000..1d3c2244c --- /dev/null +++ b/.schema/openapi/templates/go/model_enum.mustache @@ -0,0 +1,71 @@ +// {{{classname}}} {{#description}}{{{.}}}{{/description}}{{^description}}the model '{{{classname}}}'{{/description}} +type {{{classname}}} {{^format}}{{dataType}}{{/format}}{{#format}}{{{format}}}{{/format}} + +// List of {{{name}}} +const ( + {{#allowableValues}} + {{#enumVars}} + {{^-first}} + {{/-first}} + {{#enumClassPrefix}}{{{classname.toUpperCase}}}_{{/enumClassPrefix}}{{name}} {{{classname}}} = {{{value}}} + {{/enumVars}} + {{/allowableValues}} +) + +func (v *{{{classname}}}) UnmarshalJSON(src []byte) error { + var value {{^format}}{{dataType}}{{/format}}{{#format}}{{{format}}}{{/format}} + err := json.Unmarshal(src, &value) + if err != nil { + return err + } + enumTypeValue := {{{classname}}}(value) + for _, existing := range []{{classname}}{ {{#allowableValues}}{{#enumVars}}{{{value}}}, {{/enumVars}} {{/allowableValues}} } { + if existing == enumTypeValue { + *v = enumTypeValue + return nil + } + } + + return fmt.Errorf("%+v is not a valid {{classname}}", value) +} + +// Ptr returns reference to {{{name}}} value +func (v {{{classname}}}) Ptr() *{{{classname}}} { + return &v +} + +type Nullable{{{classname}}} struct { + value *{{{classname}}} + isSet bool +} + +func (v Nullable{{classname}}) Get() *{{classname}} { + return v.value +} + +func (v *Nullable{{classname}}) Set(val *{{classname}}) { + v.value = val + v.isSet = true +} + +func (v Nullable{{classname}}) IsSet() bool { + return v.isSet +} + +func (v *Nullable{{classname}}) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullable{{classname}}(val *{{classname}}) *Nullable{{classname}} { + return &Nullable{{classname}}{value: val, isSet: true} +} + +func (v Nullable{{{classname}}}) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *Nullable{{{classname}}}) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/.schema/openapi/templates/go/model_oneof.mustache b/.schema/openapi/templates/go/model_oneof.mustache new file mode 100644 index 000000000..cc4960b81 --- /dev/null +++ b/.schema/openapi/templates/go/model_oneof.mustache @@ -0,0 +1,114 @@ +// {{classname}} - {{#description}}{{{description}}}{{/description}}{{^description}}struct for {{{classname}}}{{/description}} +type {{classname}} struct { + {{#oneOf}} + {{#lambda.titlecase}}{{{.}}}{{/lambda.titlecase}} *{{{.}}} + {{/oneOf}} +} + +{{#oneOf}} +// {{{.}}}As{{classname}} is a convenience function that returns {{{.}}} wrapped in {{classname}} +func {{#lambda.titlecase}}{{{.}}}{{/lambda.titlecase}}As{{classname}}(v *{{{.}}}) {{classname}} { + return {{classname}}{ + {{#lambda.titlecase}}{{{.}}}{{/lambda.titlecase}}: v, + } +} + +{{/oneOf}} + +// Unmarshal JSON data into one of the pointers in the struct +func (dst *{{classname}}) UnmarshalJSON(data []byte) error { + var err error + {{#isNullable}} + // this object is nullable so check if the payload is null or empty string + if string(data) == "" || string(data) == "{}" { + return nil + } + + {{/isNullable}} + {{#useOneOfDiscriminatorLookup}} + {{#discriminator}} + {{#mappedModels}} + {{#-first}} + // use discriminator value to speed up the lookup + var jsonDict map[string]interface{} + err = newStrictDecoder(data).Decode(&jsonDict) + if err != nil { + return fmt.Errorf("Failed to unmarshal JSON into map for the discrimintor lookup.") + } + + {{/-first}} + // check if the discriminator value is '{{{mappingName}}}' + if jsonDict["{{{propertyBaseName}}}"] == "{{{mappingName}}}" { + // try to unmarshal JSON data into {{{modelName}}} + err = json.Unmarshal(data, &dst.{{{modelName}}}) + if err == nil { + return nil // data stored in dst.{{{modelName}}}, return on the first match + } else { + dst.{{{modelName}}} = nil + return fmt.Errorf("Failed to unmarshal {{classname}} as {{{modelName}}}: %s", err.Error()) + } + } + + {{/mappedModels}} + {{/discriminator}} + return nil + {{/useOneOfDiscriminatorLookup}} + {{^useOneOfDiscriminatorLookup}} + match := 0 + {{#oneOf}} + // try to unmarshal data into {{#lambda.titlecase}}{{{.}}}{{/lambda.titlecase}} + err = newStrictDecoder(data).Decode(&dst.{{#lambda.titlecase}}{{{.}}}{{/lambda.titlecase}}) + if err == nil { + json{{#lambda.titlecase}}{{{.}}}{{/lambda.titlecase}}, _ := json.Marshal(dst.{{#lambda.titlecase}}{{{.}}}{{/lambda.titlecase}}) + if string(json{{#lambda.titlecase}}{{{.}}}{{/lambda.titlecase}}) == "{}" { // empty struct + dst.{{#lambda.titlecase}}{{{.}}}{{/lambda.titlecase}} = nil + } else { + match++ + } + } else { + dst.{{#lambda.titlecase}}{{{.}}}{{/lambda.titlecase}} = nil + } + + {{/oneOf}} + if match > 1 { // more than 1 match + // reset to nil + {{#oneOf}} + dst.{{#lambda.titlecase}}{{{.}}}{{/lambda.titlecase}} = nil + {{/oneOf}} + + return fmt.Errorf("Data matches more than one schema in oneOf({{classname}})") + } else if match == 1 { + return nil // exactly one match + } else { // no match + return fmt.Errorf("Data failed to match schemas in oneOf({{classname}})") + } + {{/useOneOfDiscriminatorLookup}} +} + +// Marshal data from the first non-nil pointers in the struct to JSON +func (src {{classname}}) MarshalJSON() ([]byte, error) { +{{#oneOf}} + if src.{{#lambda.titlecase}}{{{.}}}{{/lambda.titlecase}} != nil { + return json.Marshal(&src.{{#lambda.titlecase}}{{{.}}}{{/lambda.titlecase}}) + } + +{{/oneOf}} + return nil, nil // no data in oneOf schemas +} + +// Get the actual instance +func (obj *{{classname}}) GetActualInstance() (interface{}) { + if obj == nil { + return nil + } +{{#oneOf}} + if obj.{{#lambda.titlecase}}{{{.}}}{{/lambda.titlecase}} != nil { + return obj.{{#lambda.titlecase}}{{{.}}}{{/lambda.titlecase}} + } + +{{/oneOf}} + // all schemas are nil + return nil +} + +{{>nullable_model}} diff --git a/.schema/openapi/templates/go/model_simple.mustache b/.schema/openapi/templates/go/model_simple.mustache new file mode 100644 index 000000000..74bd5458a --- /dev/null +++ b/.schema/openapi/templates/go/model_simple.mustache @@ -0,0 +1,391 @@ +// {{classname}}{{#description}} {{{description}}}{{/description}}{{^description}} struct for {{{classname}}}{{/description}} +type {{classname}} struct { +{{#parent}} +{{^isMap}} +{{^isArray}} + {{{parent}}} +{{/isArray}} +{{/isMap}} +{{#isArray}} + Items {{{parent}}} +{{/isArray}} +{{/parent}} +{{#vars}} +{{^-first}} +{{/-first}} +{{#description}} + // {{{description}}} +{{/description}} + {{name}} {{^required}}{{^isNullable}}{{^isArray}}{{^isFreeFormObject}}*{{/isFreeFormObject}}{{/isArray}}{{/isNullable}}{{/required}}{{{dataType}}} `json:"{{baseName}}{{^required}},omitempty{{/required}}"{{#withXml}} xml:"{{baseName}}{{#isXmlAttribute}},attr{{/isXmlAttribute}}"{{/withXml}}{{#vendorExtensions.x-go-custom-tag}} {{{.}}}{{/vendorExtensions.x-go-custom-tag}}` +{{/vars}} +{{#isAdditionalPropertiesTrue}} + AdditionalProperties map[string]interface{} +{{/isAdditionalPropertiesTrue}} +} + +{{#isAdditionalPropertiesTrue}} +type _{{{classname}}} {{{classname}}} + +{{/isAdditionalPropertiesTrue}} +// New{{classname}} instantiates a new {{classname}} object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func New{{classname}}({{#vars}}{{#required}}{{nameInCamelCase}} {{dataType}}, {{/required}}{{/vars}}) *{{classname}} { + this := {{classname}}{} +{{#vars}} +{{#required}} + this.{{name}} = {{nameInCamelCase}} +{{/required}} +{{^required}} +{{#defaultValue}} +{{^vendorExtensions.x-golang-is-container}} +{{#isNullable}} + var {{nameInCamelCase}} {{{datatypeWithEnum}}} = {{{.}}} + this.{{name}} = *New{{{dataType}}}(&{{nameInCamelCase}}) +{{/isNullable}} +{{^isNullable}} + var {{nameInCamelCase}} {{{dataType}}} = {{{.}}} + this.{{name}} = &{{nameInCamelCase}} +{{/isNullable}} +{{/vendorExtensions.x-golang-is-container}} +{{/defaultValue}} +{{/required}} +{{/vars}} + return &this +} + +// New{{classname}}WithDefaults instantiates a new {{classname}} object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func New{{classname}}WithDefaults() *{{classname}} { + this := {{classname}}{} +{{#vars}} +{{#defaultValue}} +{{^vendorExtensions.x-golang-is-container}} +{{#isNullable}} +{{!we use datatypeWithEnum here, since it will represent the non-nullable name of the datatype, e.g. int64 for NullableInt64}} + var {{nameInCamelCase}} {{{datatypeWithEnum}}} = {{{.}}} + this.{{name}} = *New{{{dataType}}}(&{{nameInCamelCase}}) +{{/isNullable}} +{{^isNullable}} + var {{nameInCamelCase}} {{{dataType}}} = {{{.}}} + this.{{name}} = {{^required}}&{{/required}}{{nameInCamelCase}} +{{/isNullable}} +{{/vendorExtensions.x-golang-is-container}} +{{/defaultValue}} +{{/vars}} + return &this +} + +{{#vars}} +{{#required}} +// Get{{name}} returns the {{name}} field value +{{#isNullable}} +// If the value is explicit nil, the zero value for {{vendorExtensions.x-go-base-type}} will be returned +{{/isNullable}} +func (o *{{classname}}) Get{{name}}() {{vendorExtensions.x-go-base-type}} { + if o == nil {{#isNullable}}{{^vendorExtensions.x-golang-is-container}}|| o.{{name}}.Get() == nil{{/vendorExtensions.x-golang-is-container}}{{/isNullable}} { + var ret {{vendorExtensions.x-go-base-type}} + return ret + } + +{{#isNullable}} +{{#vendorExtensions.x-golang-is-container}} + return o.{{name}} +{{/vendorExtensions.x-golang-is-container}} +{{^vendorExtensions.x-golang-is-container}} + return *o.{{name}}.Get() +{{/vendorExtensions.x-golang-is-container}} +{{/isNullable}} +{{^isNullable}} + return o.{{name}} +{{/isNullable}} +} + +// Get{{name}}Ok returns a tuple with the {{name}} field value +// and a boolean to check if the value has been set. +{{#isNullable}} +// NOTE: If the value is an explicit nil, `nil, true` will be returned +{{/isNullable}} +func (o *{{classname}}) Get{{name}}Ok() ({{^isArray}}{{^isFreeFormObject}}*{{/isFreeFormObject}}{{/isArray}}{{vendorExtensions.x-go-base-type}}, bool) { + if o == nil {{#isNullable}}{{#vendorExtensions.x-golang-is-container}}|| o.{{name}} == nil{{/vendorExtensions.x-golang-is-container}}{{/isNullable}} { + return nil, false + } +{{#isNullable}} +{{#vendorExtensions.x-golang-is-container}} + return {{^isArray}}{{^isFreeFormObject}}&{{/isFreeFormObject}}{{/isArray}}o.{{name}}, true +{{/vendorExtensions.x-golang-is-container}} +{{^vendorExtensions.x-golang-is-container}} + return o.{{name}}.Get(), o.{{name}}.IsSet() +{{/vendorExtensions.x-golang-is-container}} +{{/isNullable}} +{{^isNullable}} + return {{^isArray}}{{^isFreeFormObject}}&{{/isFreeFormObject}}{{/isArray}}o.{{name}}, true +{{/isNullable}} +} + +// Set{{name}} sets field value +func (o *{{classname}}) Set{{name}}(v {{vendorExtensions.x-go-base-type}}) { +{{#isNullable}} +{{#vendorExtensions.x-golang-is-container}} + o.{{name}} = v +{{/vendorExtensions.x-golang-is-container}} +{{^vendorExtensions.x-golang-is-container}} + o.{{name}}.Set(&v) +{{/vendorExtensions.x-golang-is-container}} +{{/isNullable}} +{{^isNullable}} + o.{{name}} = v +{{/isNullable}} +} + +{{/required}} +{{^required}} +// Get{{name}} returns the {{name}} field value if set, zero value otherwise{{#isNullable}} (both if not set or set to explicit null){{/isNullable}}. +func (o *{{classname}}) Get{{name}}() {{vendorExtensions.x-go-base-type}} { + if o == nil {{^isNullable}}|| o.{{name}} == nil{{/isNullable}}{{#isNullable}}{{^vendorExtensions.x-golang-is-container}}|| o.{{name}}.Get() == nil{{/vendorExtensions.x-golang-is-container}}{{/isNullable}} { + var ret {{vendorExtensions.x-go-base-type}} + return ret + } +{{#isNullable}} +{{#vendorExtensions.x-golang-is-container}} + return o.{{name}} +{{/vendorExtensions.x-golang-is-container}} +{{^vendorExtensions.x-golang-is-container}} + return *o.{{name}}.Get() +{{/vendorExtensions.x-golang-is-container}} +{{/isNullable}} +{{^isNullable}} + return {{^isArray}}{{^isFreeFormObject}}*{{/isFreeFormObject}}{{/isArray}}o.{{name}} +{{/isNullable}} +} + +// Get{{name}}Ok returns a tuple with the {{name}} field value if set, nil otherwise +// and a boolean to check if the value has been set. +{{#isNullable}} +// NOTE: If the value is an explicit nil, `nil, true` will be returned +{{/isNullable}} +func (o *{{classname}}) Get{{name}}Ok() ({{^isArray}}{{^isFreeFormObject}}*{{/isFreeFormObject}}{{/isArray}}{{vendorExtensions.x-go-base-type}}, bool) { + if o == nil {{^isNullable}}|| o.{{name}} == nil{{/isNullable}}{{#isNullable}}{{#vendorExtensions.x-golang-is-container}}|| o.{{name}} == nil{{/vendorExtensions.x-golang-is-container}}{{/isNullable}} { + return nil, false + } +{{#isNullable}} +{{#vendorExtensions.x-golang-is-container}} + return {{^isArray}}{{^isFreeFormObject}}&{{/isFreeFormObject}}{{/isArray}}o.{{name}}, true +{{/vendorExtensions.x-golang-is-container}} +{{^vendorExtensions.x-golang-is-container}} + return o.{{name}}.Get(), o.{{name}}.IsSet() +{{/vendorExtensions.x-golang-is-container}} +{{/isNullable}} +{{^isNullable}} + return o.{{name}}, true +{{/isNullable}} +} + +// Has{{name}} returns a boolean if a field has been set. +func (o *{{classname}}) Has{{name}}() bool { + if o != nil && {{^isNullable}}o.{{name}} != nil{{/isNullable}}{{#isNullable}}{{#vendorExtensions.x-golang-is-container}}o.{{name}} != nil{{/vendorExtensions.x-golang-is-container}}{{^vendorExtensions.x-golang-is-container}}o.{{name}}.IsSet(){{/vendorExtensions.x-golang-is-container}}{{/isNullable}} { + return true + } + + return false +} + +// Set{{name}} gets a reference to the given {{dataType}} and assigns it to the {{name}} field. +func (o *{{classname}}) Set{{name}}(v {{vendorExtensions.x-go-base-type}}) { +{{#isNullable}} +{{#vendorExtensions.x-golang-is-container}} + o.{{name}} = v +{{/vendorExtensions.x-golang-is-container}} +{{^vendorExtensions.x-golang-is-container}} + o.{{name}}.Set({{^isArray}}{{^isFreeFormObject}}&{{/isFreeFormObject}}{{/isArray}}v) +{{/vendorExtensions.x-golang-is-container}} +{{/isNullable}} +{{^isNullable}} + o.{{name}} = {{^isArray}}{{^isFreeFormObject}}&{{/isFreeFormObject}}{{/isArray}}v +{{/isNullable}} +} +{{#isNullable}} +{{^vendorExtensions.x-golang-is-container}} +// Set{{name}}Nil sets the value for {{name}} to be an explicit nil +func (o *{{classname}}) Set{{name}}Nil() { + o.{{name}}.Set(nil) +} + +// Unset{{name}} ensures that no value is present for {{name}}, not even an explicit nil +func (o *{{classname}}) Unset{{name}}() { + o.{{name}}.Unset() +} +{{/vendorExtensions.x-golang-is-container}} +{{/isNullable}} + +{{/required}} +{{/vars}} +func (o {{classname}}) MarshalJSON() ([]byte, error) { + toSerialize := {{#isArray}}make([]interface{}, len(o.Items)){{/isArray}}{{^isArray}}map[string]interface{}{}{{/isArray}} + {{#parent}} + {{^isMap}} + {{^isArray}} + serialized{{parent}}, err{{parent}} := json.Marshal(o.{{parent}}) + if err{{parent}} != nil { + return []byte{}, err{{parent}} + } + err{{parent}} = json.Unmarshal([]byte(serialized{{parent}}), &toSerialize) + if err{{parent}} != nil { + return []byte{}, err{{parent}} + } + {{/isArray}} + {{/isMap}} + {{#isArray}} + for i, item := range o.Items { + toSerialize[i] = item + } + {{/isArray}} + {{/parent}} + {{#vars}} + {{! if argument is nullable, only serialize it if it is set}} + {{#isNullable}} + {{#vendorExtensions.x-golang-is-container}} + {{! support for container fields is not ideal at this point because of lack of Nullable* types}} + if o.{{name}} != nil { + toSerialize["{{baseName}}"] = o.{{name}} + } + {{/vendorExtensions.x-golang-is-container}} + {{^vendorExtensions.x-golang-is-container}} + if {{#required}}true{{/required}}{{^required}}o.{{name}}.IsSet(){{/required}} { + toSerialize["{{baseName}}"] = o.{{name}}.Get() + } + {{/vendorExtensions.x-golang-is-container}} + {{/isNullable}} + {{! if argument is not nullable, don't set it if it is nil}} + {{^isNullable}} + if {{#required}}true{{/required}}{{^required}}o.{{name}} != nil{{/required}} { + toSerialize["{{baseName}}"] = o.{{name}} + } + {{/isNullable}} + {{/vars}} + {{#isAdditionalPropertiesTrue}} + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + {{/isAdditionalPropertiesTrue}} + return json.Marshal(toSerialize) +} + +{{#isAdditionalPropertiesTrue}} +func (o *{{{classname}}}) UnmarshalJSON(bytes []byte) (err error) { +{{#parent}} +{{^isMap}} + type {{classname}}WithoutEmbeddedStruct struct { + {{#vars}} + {{^-first}} + {{/-first}} + {{#description}} + // {{{description}}} + {{/description}} + {{name}} {{^required}}{{^isNullable}}*{{/isNullable}}{{/required}}{{{dataType}}} `json:"{{baseName}}{{^required}},omitempty{{/required}}"{{#withXml}} xml:"{{baseName}}{{#isXmlAttribute}},attr{{/isXmlAttribute}}"{{/withXml}}{{#vendorExtensions.x-go-custom-tag}} {{{.}}}{{/vendorExtensions.x-go-custom-tag}}` + {{/vars}} + } + + var{{{classname}}}WithoutEmbeddedStruct := {{{classname}}}WithoutEmbeddedStruct{} + + err = json.Unmarshal(bytes, &var{{{classname}}}WithoutEmbeddedStruct) + if err == nil { + var{{{classname}}} := _{{{classname}}}{} + {{#vars}} + var{{{classname}}}.{{{name}}} = var{{{classname}}}WithoutEmbeddedStruct.{{{name}}} + {{/vars}} + *o = {{{classname}}}(var{{{classname}}}) + } else { + return err + } + + var{{{classname}}} := _{{{classname}}}{} + + err = json.Unmarshal(bytes, &var{{{classname}}}) + if err == nil { + o.{{{parent}}} = var{{{classname}}}.{{{parent}}} + } else { + return err + } + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(bytes, &additionalProperties); err == nil { + {{#vars}} + delete(additionalProperties, "{{{baseName}}}") + {{/vars}} + + // remove fields from embedded structs + reflect{{{parent}}} := reflect.ValueOf(o.{{{parent}}}) + for i := 0; i < reflect{{{parent}}}.Type().NumField(); i++ { + t := reflect{{{parent}}}.Type().Field(i) + + if jsonTag := t.Tag.Get("json"); jsonTag != "" { + fieldName := "" + if commaIdx := strings.Index(jsonTag, ","); commaIdx > 0 { + fieldName = jsonTag[:commaIdx] + } else { + fieldName = jsonTag + } + if fieldName != "AdditionalProperties" { + delete(additionalProperties, fieldName) + } + } + } + + o.AdditionalProperties = additionalProperties + } + + return err +{{/isMap}} +{{#isMap}} + var{{{classname}}} := _{{{classname}}}{} + + if err = json.Unmarshal(bytes, &var{{{classname}}}); err == nil { + *o = {{{classname}}}(var{{{classname}}}) + } + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(bytes, &additionalProperties); err == nil { + {{#vars}} + delete(additionalProperties, "{{{baseName}}}") + {{/vars}} + o.AdditionalProperties = additionalProperties + } + + return err +{{/isMap}} +{{/parent}} +{{^parent}} + var{{{classname}}} := _{{{classname}}}{} + + if err = json.Unmarshal(bytes, &var{{{classname}}}); err == nil { + *o = {{{classname}}}(var{{{classname}}}) + } + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(bytes, &additionalProperties); err == nil { + {{#vars}} + delete(additionalProperties, "{{{baseName}}}") + {{/vars}} + o.AdditionalProperties = additionalProperties + } + + return err +{{/parent}} +} + +{{/isAdditionalPropertiesTrue}} +{{#isArray}} +func (o *{{{classname}}}) UnmarshalJSON(bytes []byte) (err error) { + return json.Unmarshal(bytes, &o.Items) +} + +{{/isArray}} +{{>nullable_model}} diff --git a/.schema/openapi/templates/go/nullable_model.mustache b/.schema/openapi/templates/go/nullable_model.mustache new file mode 100644 index 000000000..7b60ce6d3 --- /dev/null +++ b/.schema/openapi/templates/go/nullable_model.mustache @@ -0,0 +1,35 @@ +type Nullable{{{classname}}} struct { + value {{^isArray}}{{^isFreeFormObject}}*{{/isFreeFormObject}}{{/isArray}}{{{classname}}} + isSet bool +} + +func (v Nullable{{classname}}) Get() {{^isArray}}{{^isFreeFormObject}}*{{/isFreeFormObject}}{{/isArray}}{{classname}} { + return v.value +} + +func (v *Nullable{{classname}}) Set(val {{^isArray}}{{^isFreeFormObject}}*{{/isFreeFormObject}}{{/isArray}}{{classname}}) { + v.value = val + v.isSet = true +} + +func (v Nullable{{classname}}) IsSet() bool { + return v.isSet +} + +func (v *Nullable{{classname}}) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullable{{classname}}(val {{^isArray}}{{^isFreeFormObject}}*{{/isFreeFormObject}}{{/isArray}}{{classname}}) *Nullable{{classname}} { + return &Nullable{{classname}}{value: val, isSet: true} +} + +func (v Nullable{{{classname}}}) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *Nullable{{{classname}}}) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/.schema/openapi/templates/go/openapi.mustache b/.schema/openapi/templates/go/openapi.mustache new file mode 100644 index 000000000..51ebafb01 --- /dev/null +++ b/.schema/openapi/templates/go/openapi.mustache @@ -0,0 +1 @@ +{{{openapi-yaml}}} \ No newline at end of file diff --git a/.schema/openapi/templates/go/partial_header.mustache b/.schema/openapi/templates/go/partial_header.mustache new file mode 100644 index 000000000..ee1ead4cf --- /dev/null +++ b/.schema/openapi/templates/go/partial_header.mustache @@ -0,0 +1,18 @@ +/* + {{#appName}} + * {{{appName}}} + * + {{/appName}} + {{#appDescription}} + * {{{appDescription}}} + * + {{/appDescription}} + {{#version}} + * API version: {{{version}}} + {{/version}} + {{#infoEmail}} + * Contact: {{{infoEmail}}} + {{/infoEmail}} + */ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. diff --git a/.schema/openapi/templates/go/response.mustache b/.schema/openapi/templates/go/response.mustache new file mode 100644 index 000000000..1a8765bae --- /dev/null +++ b/.schema/openapi/templates/go/response.mustache @@ -0,0 +1,38 @@ +{{>partial_header}} +package {{packageName}} + +import ( + "net/http" +) + +// APIResponse stores the API response returned by the server. +type APIResponse struct { + *http.Response `json:"-"` + Message string `json:"message,omitempty"` + // Operation is the name of the OpenAPI operation. + Operation string `json:"operation,omitempty"` + // RequestURL is the request URL. This value is always available, even if the + // embedded *http.Response is nil. + RequestURL string `json:"url,omitempty"` + // Method is the HTTP method used for the request. This value is always + // available, even if the embedded *http.Response is nil. + Method string `json:"method,omitempty"` + // Payload holds the contents of the response body (which may be nil or empty). + // This is provided here as the raw response.Body() reader will have already + // been drained. + Payload []byte `json:"-"` +} + +// NewAPIResponse returns a new APIResonse object. +func NewAPIResponse(r *http.Response) *APIResponse { + + response := &APIResponse{Response: r} + return response +} + +// NewAPIResponseWithError returns a new APIResponse object with the provided error message. +func NewAPIResponseWithError(errorMessage string) *APIResponse { + + response := &APIResponse{Message: errorMessage} + return response +} diff --git a/.schema/openapi/templates/go/signing.mustache b/.schema/openapi/templates/go/signing.mustache new file mode 100644 index 000000000..db486a16b --- /dev/null +++ b/.schema/openapi/templates/go/signing.mustache @@ -0,0 +1,415 @@ +{{>partial_header}} +package {{packageName}} + +import ( + "bytes" + "context" + "crypto" + "crypto/ecdsa" + "crypto/ed25519" + "crypto/rand" + "crypto/rsa" + "crypto/x509" + "encoding/base64" + "encoding/pem" + "fmt" + "io" + "io/ioutil" + "net/http" + "net/textproto" + "os" + "strings" + "time" +) + +const ( + // Constants for HTTP signature parameters. + // The '(request-target)' parameter concatenates the lowercased :method, an + // ASCII space, and the :path pseudo-headers. + HttpSignatureParameterRequestTarget string = "(request-target)" + // The '(created)' parameter expresses when the signature was + // created. The value MUST be a Unix timestamp integer value. + HttpSignatureParameterCreated string = "(created)" + // The '(expires)' parameter expresses when the signature ceases to + // be valid. The value MUST be a Unix timestamp integer value. + HttpSignatureParameterExpires string = "(expires)" +) + +const ( + // Constants for HTTP headers. + // The 'Host' header, as defined in RFC 2616, section 14.23. + HttpHeaderHost string = "Host" + // The 'Date' header. + HttpHeaderDate string = "Date" + // The digest header, as defined in RFC 3230, section 4.3.2. + HttpHeaderDigest string = "Digest" + // The HTTP Authorization header, as defined in RFC 7235, section 4.2. + HttpHeaderAuthorization string = "Authorization" +) + +const ( + // Specifies the Digital Signature Algorithm is derived from metadata + // associated with 'keyId'. Supported DSA algorithms are RSASSA-PKCS1-v1_5, + // RSASSA-PSS, and ECDSA. + // The hash is SHA-512. + // This is the default value. + HttpSigningSchemeHs2019 string = "hs2019" + // Use RSASSA-PKCS1-v1_5 with SHA-512 hash. Deprecated. + HttpSigningSchemeRsaSha512 string = "rsa-sha512" + // Use RSASSA-PKCS1-v1_5 with SHA-256 hash. Deprecated. + HttpSigningSchemeRsaSha256 string = "rsa-sha256" + + // RFC 8017 section 7.2 + // Calculate the message signature using RSASSA-PKCS1-V1_5-SIGN from RSA PKCS#1 v1.5. + // PKCSV1_5 is deterministic. The same message and key will produce an identical + // signature value each time. + HttpSigningAlgorithmRsaPKCS1v15 string = "RSASSA-PKCS1-v1_5" + // Calculate the message signature using probabilistic signature scheme RSASSA-PSS. + // PSS is randomized and will produce a different signature value each time. + HttpSigningAlgorithmRsaPSS string = "RSASSA-PSS" +) + +var supportedSigningSchemes = map[string]bool{ + HttpSigningSchemeHs2019: true, + HttpSigningSchemeRsaSha512: true, + HttpSigningSchemeRsaSha256: true, +} + + +// HttpSignatureAuth provides HTTP signature authentication to a request passed +// via context using ContextHttpSignatureAuth. +// An 'Authorization' header is calculated by creating a hash of select headers, +// and optionally the body of the HTTP request, then signing the hash value using +// a private key which is available to the client. +// +// SignedHeaders specifies the list of HTTP headers that are included when generating +// the message signature. +// The two special signature headers '(request-target)' and '(created)' SHOULD be +// included in SignedHeaders. +// The '(created)' header expresses when the signature was created. +// The '(request-target)' header is a concatenation of the lowercased :method, an +// ASCII space, and the :path pseudo-headers. +// +// For example, SignedHeaders can be set to: +// (request-target) (created) date host digest +// +// When SignedHeaders is not specified, the client defaults to a single value, '(created)', +// in the list of HTTP headers. +// When SignedHeaders contains the 'Digest' value, the client performs the following operations: +// 1. Calculate a digest of request body, as specified in RFC3230, section 4.3.2. +// 2. Set the 'Digest' header in the request body. +// 3. Include the 'Digest' header and value in the HTTP signature. +type HttpSignatureAuth struct { + KeyId string // A key identifier. + PrivateKeyPath string // The path to the private key. + Passphrase string // The passphrase to decrypt the private key, if the key is encrypted. + SigningScheme string // The signature scheme, when signing HTTP requests. Supported value is 'hs2019'. + // The signature algorithm, when signing HTTP requests. + // Supported values are RSASSA-PKCS1-v1_5, RSASSA-PSS. + SigningAlgorithm string + SignedHeaders []string // A list of HTTP headers included when generating the signature for the message. + // SignatureMaxValidity specifies the maximum duration of the signature validity. + // The value is used to set the '(expires)' signature parameter in the HTTP request. + // '(expires)' is set to '(created)' plus the value of the SignatureMaxValidity field. + // To specify the '(expires)' signature parameter, set 'SignatureMaxValidity' and add '(expires)' to 'SignedHeaders'. + SignatureMaxValidity time.Duration + privateKey crypto.PrivateKey // The private key used to sign HTTP requests. +} + +// ContextWithValue validates the HttpSignatureAuth configuration parameters and returns a context +// suitable for HTTP signature. An error is returned if the HttpSignatureAuth configuration parameters +// are invalid. +func (h *HttpSignatureAuth) ContextWithValue(ctx context.Context) (context.Context, error) { + if h.KeyId == "" { + return nil, fmt.Errorf("Key ID must be specified") + } + if h.PrivateKeyPath == "" { + return nil, fmt.Errorf("Private key path must be specified") + } + if _, ok := supportedSigningSchemes[h.SigningScheme]; !ok { + return nil, fmt.Errorf("Invalid signing scheme: '%v'", h.SigningScheme) + } + m := make(map[string]bool) + for _, h := range h.SignedHeaders { + if strings.ToLower(h) == strings.ToLower(HttpHeaderAuthorization) { + return nil, fmt.Errorf("Signed headers cannot include the 'Authorization' header") + } + m[h] = true + } + if len(m) != len(h.SignedHeaders) { + return nil, fmt.Errorf("List of signed headers cannot have duplicate names") + } + if h.SignatureMaxValidity < 0 { + return nil, fmt.Errorf("Signature max validity must be a positive value") + } + if err := h.loadPrivateKey(); err != nil { + return nil, err + } + return context.WithValue(ctx, ContextHttpSignatureAuth, *h), nil +} + +// GetPublicKey returns the public key associated with this HTTP signature configuration. +func (h *HttpSignatureAuth) GetPublicKey() (crypto.PublicKey, error) { + if h.privateKey == nil { + if err := h.loadPrivateKey(); err != nil { + return nil, err + } + } + switch key := h.privateKey.(type) { + case *rsa.PrivateKey: + return key.Public(), nil + case *ecdsa.PrivateKey: + return key.Public(), nil + default: + // Do not change '%T' to anything else such as '%v'! + // The value of the private key must not be returned. + return nil, fmt.Errorf("Unsupported key: %T", h.privateKey) + } +} + +// loadPrivateKey reads the private key from the file specified in the HttpSignatureAuth. +func (h *HttpSignatureAuth) loadPrivateKey() (err error) { + var file *os.File + file, err = os.Open(h.PrivateKeyPath) + if err != nil { + return fmt.Errorf("Cannot load private key '%s'. Error: %v", h.PrivateKeyPath, err) + } + defer func() { + err = file.Close() + }() + var priv []byte + priv, err = ioutil.ReadAll(file) + if err != nil { + return err + } + pemBlock, _ := pem.Decode(priv) + if pemBlock == nil { + // No PEM data has been found. + return fmt.Errorf("File '%s' does not contain PEM data", h.PrivateKeyPath) + } + var privKey []byte + if x509.IsEncryptedPEMBlock(pemBlock) { + // The PEM data is encrypted. + privKey, err = x509.DecryptPEMBlock(pemBlock, []byte(h.Passphrase)) + if err != nil { + // Failed to decrypt PEM block. Because of deficiencies in the encrypted-PEM format, + // it's not always possibleto detect an incorrect password. + return err + } + } else { + privKey = pemBlock.Bytes + } + switch pemBlock.Type { + case "RSA PRIVATE KEY": + if h.privateKey, err = x509.ParsePKCS1PrivateKey(privKey); err != nil { + return err + } + case "EC PRIVATE KEY", "PRIVATE KEY": + // https://tools.ietf.org/html/rfc5915 section 4. + if h.privateKey, err = x509.ParsePKCS8PrivateKey(privKey); err != nil { + return err + } + default: + return fmt.Errorf("Key '%s' is not supported", pemBlock.Type) + } + return nil +} + +// SignRequest signs the request using HTTP signature. +// See https://datatracker.ietf.org/doc/draft-cavage-http-signatures/ +// +// Do not add, remove or change headers that are included in the SignedHeaders +// after SignRequest has been invoked; this is because the header values are +// included in the signature. Any subsequent alteration will cause a signature +// verification failure. +// If there are multiple instances of the same header field, all +// header field values associated with the header field MUST be +// concatenated, separated by a ASCII comma and an ASCII space +// ', ', and used in the order in which they will appear in the +// transmitted HTTP message. +func SignRequest( + ctx context.Context, + r *http.Request, + auth HttpSignatureAuth) error { + + if auth.privateKey == nil { + return fmt.Errorf("Private key is not set") + } + now := time.Now() + date := now.UTC().Format(http.TimeFormat) + // The 'created' field expresses when the signature was created. + // The value MUST be a Unix timestamp integer value. See 'HTTP signature' section 2.1.4. + created := now.Unix() + + var h crypto.Hash + var err error + var prefix string + var expiresUnix float64 + + if auth.SignatureMaxValidity < 0 { + return fmt.Errorf("Signature validity must be a positive value") + } + if auth.SignatureMaxValidity > 0 { + e := now.Add(auth.SignatureMaxValidity) + expiresUnix = float64(e.Unix()) + float64(e.Nanosecond()) / float64(time.Second) + } + // Determine the cryptographic hash to be used for the signature and the body digest. + switch auth.SigningScheme { + case HttpSigningSchemeRsaSha512, HttpSigningSchemeHs2019: + h = crypto.SHA512 + prefix = "SHA-512=" + case HttpSigningSchemeRsaSha256: + // This is deprecated and should no longer be used. + h = crypto.SHA256 + prefix = "SHA-256=" + default: + return fmt.Errorf("Unsupported signature scheme: %v", auth.SigningScheme) + } + if !h.Available() { + return fmt.Errorf("Hash '%v' is not available", h) + } + + // Build the "(request-target)" signature header. + var sb bytes.Buffer + fmt.Fprintf(&sb, "%s %s", strings.ToLower(r.Method), r.URL.EscapedPath()) + if r.URL.RawQuery != "" { + // The ":path" pseudo-header field includes the path and query parts + // of the target URI (the "path-absolute" production and optionally a + // '?' character followed by the "query" production (see Sections 3.3 + // and 3.4 of [RFC3986] + fmt.Fprintf(&sb, "?%s", r.URL.RawQuery) + } + requestTarget := sb.String() + sb.Reset() + + // Build the string to be signed. + signedHeaders := auth.SignedHeaders + if len(signedHeaders) == 0 { + signedHeaders = []string{HttpSignatureParameterCreated} + } + // Validate the list of signed headers has no duplicates. + m := make(map[string]bool) + for _, h := range signedHeaders { + m[h] = true + } + if len(m) != len(signedHeaders) { + return fmt.Errorf("List of signed headers must not have any duplicates") + } + hasCreatedParameter := false + hasExpiresParameter := false + for i, header := range signedHeaders { + header = strings.ToLower(header) + var value string + switch header { + case strings.ToLower(HttpHeaderAuthorization): + return fmt.Errorf("Cannot include the 'Authorization' header as a signed header.") + case HttpSignatureParameterRequestTarget: + value = requestTarget + case HttpSignatureParameterCreated: + value = fmt.Sprintf("%d", created) + hasCreatedParameter = true + case HttpSignatureParameterExpires: + if auth.SignatureMaxValidity.Nanoseconds() == 0 { + return fmt.Errorf("Cannot set '(expires)' signature parameter. SignatureMaxValidity is not configured.") + } + value = fmt.Sprintf("%.3f", expiresUnix) + hasExpiresParameter = true + case "date": + value = date + r.Header.Set(HttpHeaderDate, date) + case "digest": + // Calculate the digest of the HTTP request body. + // Calculate body digest per RFC 3230 section 4.3.2 + bodyHash := h.New() + if r.Body != nil { + // Make a copy of the body io.Reader so that we can read the body to calculate the hash, + // then one more time when marshaling the request. + var body io.Reader + body, err = r.GetBody() + if err != nil { + return err + } + if _, err = io.Copy(bodyHash, body); err != nil { + return err + } + } + d := bodyHash.Sum(nil) + value = prefix + base64.StdEncoding.EncodeToString(d) + r.Header.Set(HttpHeaderDigest, value) + case "host": + value = r.Host + r.Header.Set(HttpHeaderHost, r.Host) + default: + var ok bool + var v []string + canonicalHeader := textproto.CanonicalMIMEHeaderKey(header) + if v, ok = r.Header[canonicalHeader]; !ok { + // If a header specified in the headers parameter cannot be matched with + // a provided header in the message, the implementation MUST produce an error. + return fmt.Errorf("Header '%s' does not exist in the request", canonicalHeader) + } + // If there are multiple instances of the same header field, all + // header field values associated with the header field MUST be + // concatenated, separated by a ASCII comma and an ASCII space + // `, `, and used in the order in which they will appear in the + // transmitted HTTP message. + value = strings.Join(v, ", ") + } + if i > 0 { + fmt.Fprintf(&sb, "\n") + } + fmt.Fprintf(&sb, "%s: %s", header, value) + } + if expiresUnix != 0 && !hasExpiresParameter { + return fmt.Errorf("SignatureMaxValidity is specified, but '(expired)' parameter is not present") + } + msg := []byte(sb.String()) + msgHash := h.New() + if _, err = msgHash.Write(msg); err != nil { + return err + } + d := msgHash.Sum(nil) + + var signature []byte + switch key := auth.privateKey.(type) { + case *rsa.PrivateKey: + switch auth.SigningAlgorithm { + case HttpSigningAlgorithmRsaPKCS1v15: + signature, err = rsa.SignPKCS1v15(rand.Reader, key, h, d) + case "", HttpSigningAlgorithmRsaPSS: + signature, err = rsa.SignPSS(rand.Reader, key, h, d, nil) + default: + return fmt.Errorf("Unsupported signing algorithm: '%s'", auth.SigningAlgorithm) + } + case *ecdsa.PrivateKey: + signature, err = key.Sign(rand.Reader, d, h) + case ed25519.PrivateKey: // requires go 1.13 + signature, err = key.Sign(rand.Reader, msg, crypto.Hash(0)) + default: + return fmt.Errorf("Unsupported private key") + } + if err != nil { + return err + } + + sb.Reset() + for i, header := range signedHeaders { + if i > 0 { + sb.WriteRune(' ') + } + sb.WriteString(strings.ToLower(header)) + } + headers_list := sb.String() + sb.Reset() + fmt.Fprintf(&sb, `Signature keyId="%s",algorithm="%s",`, auth.KeyId, auth.SigningScheme) + if hasCreatedParameter { + fmt.Fprintf(&sb, "created=%d,", created) + } + if hasExpiresParameter { + fmt.Fprintf(&sb, "expires=%.3f,", expiresUnix) + } + fmt.Fprintf(&sb, `headers="%s",signature="%s"`, headers_list, base64.StdEncoding.EncodeToString(signature)) + authStr := sb.String() + r.Header.Set(HttpHeaderAuthorization, authStr) + return nil +} diff --git a/.schema/openapi/templates/go/utils.mustache b/.schema/openapi/templates/go/utils.mustache new file mode 100644 index 000000000..fed52d705 --- /dev/null +++ b/.schema/openapi/templates/go/utils.mustache @@ -0,0 +1,326 @@ +{{>partial_header}} +package {{packageName}} + +import ( + "encoding/json" + "time" +) + +// PtrBool is a helper routine that returns a pointer to given boolean value. +func PtrBool(v bool) *bool { return &v } + +// PtrInt is a helper routine that returns a pointer to given integer value. +func PtrInt(v int) *int { return &v } + +// PtrInt32 is a helper routine that returns a pointer to given integer value. +func PtrInt32(v int32) *int32 { return &v } + +// PtrInt64 is a helper routine that returns a pointer to given integer value. +func PtrInt64(v int64) *int64 { return &v } + +// PtrFloat32 is a helper routine that returns a pointer to given float value. +func PtrFloat32(v float32) *float32 { return &v } + +// PtrFloat64 is a helper routine that returns a pointer to given float value. +func PtrFloat64(v float64) *float64 { return &v } + +// PtrString is a helper routine that returns a pointer to given string value. +func PtrString(v string) *string { return &v } + +// PtrTime is helper routine that returns a pointer to given Time value. +func PtrTime(v time.Time) *time.Time { return &v } + +type NullableBool struct { + value *bool + isSet bool +} + +func (v NullableBool) Get() *bool { + return v.value +} + +func (v *NullableBool) Set(val *bool) { + v.value = val + v.isSet = true +} + +func (v NullableBool) IsSet() bool { + return v.isSet +} + +func (v *NullableBool) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableBool(val *bool) *NullableBool { + return &NullableBool{value: val, isSet: true} +} + +func (v NullableBool) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableBool) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + + +type NullableInt struct { + value *int + isSet bool +} + +func (v NullableInt) Get() *int { + return v.value +} + +func (v *NullableInt) Set(val *int) { + v.value = val + v.isSet = true +} + +func (v NullableInt) IsSet() bool { + return v.isSet +} + +func (v *NullableInt) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableInt(val *int) *NullableInt { + return &NullableInt{value: val, isSet: true} +} + +func (v NullableInt) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableInt) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + + +type NullableInt32 struct { + value *int32 + isSet bool +} + +func (v NullableInt32) Get() *int32 { + return v.value +} + +func (v *NullableInt32) Set(val *int32) { + v.value = val + v.isSet = true +} + +func (v NullableInt32) IsSet() bool { + return v.isSet +} + +func (v *NullableInt32) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableInt32(val *int32) *NullableInt32 { + return &NullableInt32{value: val, isSet: true} +} + +func (v NullableInt32) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableInt32) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + + +type NullableInt64 struct { + value *int64 + isSet bool +} + +func (v NullableInt64) Get() *int64 { + return v.value +} + +func (v *NullableInt64) Set(val *int64) { + v.value = val + v.isSet = true +} + +func (v NullableInt64) IsSet() bool { + return v.isSet +} + +func (v *NullableInt64) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableInt64(val *int64) *NullableInt64 { + return &NullableInt64{value: val, isSet: true} +} + +func (v NullableInt64) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableInt64) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + + +type NullableFloat32 struct { + value *float32 + isSet bool +} + +func (v NullableFloat32) Get() *float32 { + return v.value +} + +func (v *NullableFloat32) Set(val *float32) { + v.value = val + v.isSet = true +} + +func (v NullableFloat32) IsSet() bool { + return v.isSet +} + +func (v *NullableFloat32) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableFloat32(val *float32) *NullableFloat32 { + return &NullableFloat32{value: val, isSet: true} +} + +func (v NullableFloat32) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableFloat32) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + + +type NullableFloat64 struct { + value *float64 + isSet bool +} + +func (v NullableFloat64) Get() *float64 { + return v.value +} + +func (v *NullableFloat64) Set(val *float64) { + v.value = val + v.isSet = true +} + +func (v NullableFloat64) IsSet() bool { + return v.isSet +} + +func (v *NullableFloat64) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableFloat64(val *float64) *NullableFloat64 { + return &NullableFloat64{value: val, isSet: true} +} + +func (v NullableFloat64) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableFloat64) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + + +type NullableString struct { + value *string + isSet bool +} + +func (v NullableString) Get() *string { + return v.value +} + +func (v *NullableString) Set(val *string) { + v.value = val + v.isSet = true +} + +func (v NullableString) IsSet() bool { + return v.isSet +} + +func (v *NullableString) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableString(val *string) *NullableString { + return &NullableString{value: val, isSet: true} +} + +func (v NullableString) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableString) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + + +type NullableTime struct { + value *time.Time + isSet bool +} + +func (v NullableTime) Get() *time.Time { + return v.value +} + +func (v *NullableTime) Set(val *time.Time) { + v.value = val + v.isSet = true +} + +func (v NullableTime) IsSet() bool { + return v.isSet +} + +func (v *NullableTime) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableTime(val *time.Time) *NullableTime { + return &NullableTime{value: val, isSet: true} +} + +func (v NullableTime) MarshalJSON() ([]byte, error) { + return v.value.MarshalJSON() +} + +func (v *NullableTime) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/Makefile b/Makefile index 9ca767632..157d6d938 100644 --- a/Makefile +++ b/Makefile @@ -52,14 +52,33 @@ docker: # Generates the SDKs .PHONY: sdk -sdk: .bin/swagger .bin/ory - swagger generate spec -m -o ./spec/api.json -x internal/httpclient -x proto/ory/keto -x docker - ory dev swagger sanitize ./spec/api.json - swagger flatten --with-flatten=remove-unused -o ./spec/api.json ./spec/api.json - swagger validate ./spec/api.json - rm -rf internal/httpclient - mkdir -p internal/httpclient - swagger generate client -f ./spec/api.json -t internal/httpclient -A Ory_Keto +sdk: .bin/swagger .bin/ory node_modules + swagger generate spec -m -o spec/swagger.json \ + -c github.com/ory/keto \ + -c github.com/ory/x/healthx \ + -x internal/httpclient + ory dev swagger sanitize ./spec/swagger.json + swagger validate ./spec/swagger.json + CIRCLE_PROJECT_USERNAME=ory CIRCLE_PROJECT_REPONAME=keto \ + ory dev openapi migrate \ + --health-path-tags metadata \ + -p https://raw.githubusercontent.com/ory/x/master/healthx/openapi/patch.yaml \ + -p file://.schema/openapi/patches/meta.yaml \ + spec/swagger.json spec/api.json + + rm -rf internal/httpclient internal/httpclient-next + mkdir -p internal/httpclient internal/httpclient-next + swagger generate client -f ./spec/swagger.json -t internal/httpclient -A Ory_Keto + + npm run openapi-generator-cli -- generate -i "spec/api.json" \ + -g go \ + -o "internal/httpclient-next" \ + --git-user-id ory \ + --git-repo-id keto-client-go \ + --git-host github.com \ + -t .schema/openapi/templates/go \ + -c .schema/openapi/gen.go.yml + make format .PHONY: build diff --git a/buf.gen.yaml b/buf.gen.yaml index 3c1d9397d..32c3eaab0 100644 --- a/buf.gen.yaml +++ b/buf.gen.yaml @@ -18,5 +18,5 @@ plugins: opt: ts_out=proto path: node_modules/.bin/protoc-gen-ts - name: doc - out: docs/docs/reference - opt: docs/contrib/protoc-gen-doc-mdx.tmpl,docs/docs/reference/proto-api.mdx + out: docs/.generated + opt: docs/contrib/protoc-gen-doc-mdx.tmpl,docs/.generated/proto-api.mdx diff --git a/doc_swagger.go b/doc_swagger.go index 723bcb2f1..a6c28751a 100644 --- a/doc_swagger.go +++ b/doc_swagger.go @@ -15,24 +15,19 @@ package main // The standard error format -// -// swagger:response genericError -// nolint:deadcode,unused +// swagger:model genericError type genericError struct { - // in: body - Body struct { - Code int `json:"code,omitempty"` + Code int `json:"code,omitempty"` - Status string `json:"status,omitempty"` + Status string `json:"status,omitempty"` - Request string `json:"request,omitempty"` + Request string `json:"request,omitempty"` - Reason string `json:"reason,omitempty"` + Reason string `json:"reason,omitempty"` - Details []map[string]interface{} `json:"details,omitempty"` + Details []map[string]interface{} `json:"details,omitempty"` - Message string `json:"message"` - } + Message string `json:"message"` } // An empty response diff --git a/docs/.editorconfig b/docs/.editorconfig deleted file mode 100644 index a9b781bec..000000000 --- a/docs/.editorconfig +++ /dev/null @@ -1,8 +0,0 @@ -root = true - -[*] -insert_final_newline = true -charset = utf-8 -trim_trailing_whitespace = true -indent_style = space -indent_size = 2 diff --git a/docs/.generated/.gitignore b/docs/.generated/.gitignore new file mode 100644 index 000000000..72e8ffc0d --- /dev/null +++ b/docs/.generated/.gitignore @@ -0,0 +1 @@ +* diff --git a/docs/.gitignore b/docs/.gitignore deleted file mode 100644 index 87d6bb587..000000000 --- a/docs/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# 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* - -tmp - -process.yml diff --git a/docs/.prettierignore b/docs/.prettierignore deleted file mode 100644 index 6fb052bd1..000000000 --- a/docs/.prettierignore +++ /dev/null @@ -1,6 +0,0 @@ -build/ -website/build/ -schemas/ -apis/ -.widdershins/ -hooks/ diff --git a/docs/.prettierrc b/docs/.prettierrc deleted file mode 100644 index ffe12cd47..000000000 --- a/docs/.prettierrc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "proseWrap": "always", - "singleQuote": true, - "trailingComma": "es5" -} diff --git a/docs/.widdershins/config.json b/docs/.widdershins/config.json deleted file mode 100644 index e0ecffc03..000000000 --- a/docs/.widdershins/config.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "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 deleted file mode 100644 index f2a63d58c..000000000 --- a/docs/.widdershins/templates/README.md +++ /dev/null @@ -1,72 +0,0 @@ -## 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 deleted file mode 100644 index 6b039e532..000000000 --- a/docs/.widdershins/templates/authentication.def +++ /dev/null @@ -1,5 +0,0 @@ - - diff --git a/docs/.widdershins/templates/authentication_none.def b/docs/.widdershins/templates/authentication_none.def deleted file mode 100644 index ddb19cf27..000000000 --- a/docs/.widdershins/templates/authentication_none.def +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/docs/.widdershins/templates/callbacks.def b/docs/.widdershins/templates/callbacks.def deleted file mode 100644 index 4f155e8a1..000000000 --- a/docs/.widdershins/templates/callbacks.def +++ /dev/null @@ -1,38 +0,0 @@ -{{? 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 deleted file mode 100644 index 4b68a5490..000000000 --- a/docs/.widdershins/templates/code_go.dot +++ /dev/null @@ -1,23 +0,0 @@ -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 deleted file mode 100644 index 98636ec86..000000000 --- a/docs/.widdershins/templates/code_http.dot +++ /dev/null @@ -1,7 +0,0 @@ -{{=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 deleted file mode 100644 index 8d61d00c6..000000000 --- a/docs/.widdershins/templates/code_java.dot +++ /dev/null @@ -1,13 +0,0 @@ -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 deleted file mode 100644 index 06d264133..000000000 --- a/docs/.widdershins/templates/code_javascript.dot +++ /dev/null @@ -1,14 +0,0 @@ -{{?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 deleted file mode 100644 index 44ea2a5e6..000000000 --- a/docs/.widdershins/templates/code_nodejs.dot +++ /dev/null @@ -1,18 +0,0 @@ -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 deleted file mode 100644 index bd277a1db..000000000 --- a/docs/.widdershins/templates/code_python.dot +++ /dev/null @@ -1,10 +0,0 @@ -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 deleted file mode 100644 index 172219db1..000000000 --- a/docs/.widdershins/templates/code_ruby.dot +++ /dev/null @@ -1,14 +0,0 @@ -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 deleted file mode 100644 index 993469280..000000000 --- a/docs/.widdershins/templates/code_shell.dot +++ /dev/null @@ -1,3 +0,0 @@ -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 deleted file mode 100644 index 04fcf8f76..000000000 --- a/docs/.widdershins/templates/debug.def +++ /dev/null @@ -1 +0,0 @@ -{{= data.utils.inspect(data) }} diff --git a/docs/.widdershins/templates/discovery.def b/docs/.widdershins/templates/discovery.def deleted file mode 100644 index 4755a7b8a..000000000 --- a/docs/.widdershins/templates/discovery.def +++ /dev/null @@ -1,11 +0,0 @@ - diff --git a/docs/.widdershins/templates/footer.def b/docs/.widdershins/templates/footer.def deleted file mode 100644 index 139597f9c..000000000 --- a/docs/.widdershins/templates/footer.def +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/docs/.widdershins/templates/links.def b/docs/.widdershins/templates/links.def deleted file mode 100644 index 72426c268..000000000 --- a/docs/.widdershins/templates/links.def +++ /dev/null @@ -1,18 +0,0 @@ -{{? 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 deleted file mode 100644 index 7bea09889..000000000 --- a/docs/.widdershins/templates/main.dot +++ /dev/null @@ -1,118 +0,0 @@ -{{? data.api.info.description}}{{=data.api.info.description}}{{?}} - -import Tabs from '@theme/Tabs' -import TabItem from '@theme/TabItem' - -:::info - -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}} - - - -{{? 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 deleted file mode 100644 index c04df1bb8..000000000 --- a/docs/.widdershins/templates/operation.dot +++ /dev/null @@ -1,184 +0,0 @@ - -{{? 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) - // ... -} -``` - - - - -```javascript -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 deleted file mode 100644 index 9da4ed414..000000000 --- a/docs/.widdershins/templates/parameters.def +++ /dev/null @@ -1,42 +0,0 @@ - - -#### 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 deleted file mode 100644 index b1145d934..000000000 --- a/docs/.widdershins/templates/responses.def +++ /dev/null @@ -1,94 +0,0 @@ -{{ 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}}|{{ const description = (r.description || 'none').replace('\n', ' '); }}{{=description }}|{{=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 deleted file mode 100644 index f3e330d83..000000000 --- a/docs/.widdershins/templates/security.def +++ /dev/null @@ -1,16 +0,0 @@ -## 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 deleted file mode 100644 index fe07658ce..000000000 --- a/docs/.widdershins/templates/translations.dot +++ /dev/null @@ -1,16 +0,0 @@ -{{ -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 index 8bcc218da..0c7ea73a3 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,30 +1,5 @@ # Documentation -This directory contains the project's documentation. +Please find the documentation at [www.ory.sh/docs/keto](https://www.ory.sh/docs/keto). -## Develop - -To change the documentation locally, you need NodeJS installed. Next, install -the dependencies: - -``` -$ npm install -``` - -### 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. +To contribute to the documentation, please head over to: [github.com/ory/docs/tree/master/docs/keto](https://github.com/ory/docs/tree/master/docs/keto) diff --git a/docs/config.js b/docs/config.js deleted file mode 100644 index b585f70b8..000000000 --- a/docs/config.js +++ /dev/null @@ -1,59 +0,0 @@ -const replaceInDir = ({ dir, replacer }) => { - const { join } = require('path') - const fs = require('fs') - - const walk = (dir) => - fs.readdirSync(dir).flatMap((fn) => { - const fp = join(dir, fn) - if (fs.statSync(fp).isDirectory()) { - return walk(fp) - } - return fp - }) - - return new Proxy( - { replacer }, - { - get: (target, p) => { - if (p === 'files') { - return walk(dir) - } - return target[p] - } - } - ) -} - -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: [ - replaceInDir({ - replacer: ({ content, next }) => - content.replace( - /v(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?/gi, - `${next}` - ), - dir: 'docs/docs' - }), - replaceInDir({ - replacer: ({ content, next }) => - content.replace('version="master"', `version="${next}"`), - dir: 'docs/docs' - }), - { - replacer: ({ content, next }) => - content.replace( - /oryd\/keto:v[0-9a-zA-Z.-]*-sqlite/g, - `oryd/keto:${next}-sqlite` - ), - files: ['contrib/cat-videos-example/docker-compose.yml'] - } - ], - updateConfig: { - src: '../.schema/config.schema.json', - dst: 'docs/reference/configuration.md' - } -} diff --git a/docs/contrib/api.swagger.json b/docs/contrib/api.swagger.json deleted file mode 100755 index 084f0e805..000000000 --- a/docs/contrib/api.swagger.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "swagger": "2.0", - "paths": {} -} diff --git a/docs/contrib/config.js b/docs/contrib/config.js deleted file mode 100644 index 20b2f264a..000000000 --- a/docs/contrib/config.js +++ /dev/null @@ -1,28 +0,0 @@ -const fs = require('fs') -const path = require('path') - -let config = { - projectName: 'ORY Template', - projectSlug: 'docusaurus-template', - projectTagLine: 'Stubbydi dab dub dadada', - newsletter: - 'https://ory.us10.list-manage.com/subscribe?u=ffb1a878e4ec6c0ed312a3480&id=f605a41b53', - updateTags: [ - { - image: 'oryd/docusaurus-template', - files: ['docs/docs/configure-deploy.md'] - } - ], - updateConfig: { - src: '.schema/config.schema.json', - dst: './docs/docs/reference/configuration.md' - }, - enableRedoc: true -} - -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 deleted file mode 100644 index 154c3c287..000000000 --- a/docs/contrib/docs/index.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -id: index -title: Docusaurus Project Template -sidebar_label: Template ---- diff --git a/docs/contrib/sidebar.js b/docs/contrib/sidebar.js deleted file mode 100644 index 8e4c0d90a..000000000 --- a/docs/contrib/sidebar.js +++ /dev/null @@ -1,93 +0,0 @@ -const config = require('./config.js') -const fs = require('fs') -const path = require('path') -const request = require('sync-request') -const parser = require('parser-front-matter') -const base = require(path.join(__dirname, 'sidebar.json')) - -let sidebar = { - Welcome: ['index'] -} - -const cn = path.join(__dirname, '..', 'sidebar.json') -if (fs.existsSync(cn)) { - sidebar = require(cn) -} - -const toHref = (slug, node) => { - if (node !== null && typeof node === 'object') { - if (node.type) { - if (node.type === 'category') { - return { - ...node, - items: node.items.map((n) => toHref(slug, n)) - } - } - return node - } - - Object.entries(node).forEach(([key, value]) => { - node[key] = toHref(slug, value) - }) - return node - } else if (Array.isArray(node)) { - return node.map((value) => { - return toHref(slug, value) - }) - } - - let res = request( - 'GET', - `https://raw.githubusercontent.com/ory/${slug}/master/docs/docs/${node}.mdx` - ) - if (res.statusCode === 404) { - res = request( - 'GET', - `https://raw.githubusercontent.com/ory/${slug}/master/docs/docs/${node}.md` - ) - } - - const fm = parser.parseSync(res.getBody().toString()) - const doc = fm.data.slug || node - - return { - label: fm.data.title, - type: 'link', - href: `https://www.ory.sh/${slug}/${slug !== 'docs' ? 'docs/next/' : ''}${ - doc === '/' ? '' : doc - }` - } -} - -const resolveRefs = (node) => { - if (node !== null && typeof node == 'object') { - if (node['$slug']) { - const slug = node['$slug'] - if (slug === config.projectSlug) { - return sidebar - } - - const res = request( - 'GET', - `https://raw.githubusercontent.com/ory/${slug}/master/docs/sidebar.json` - ) - const items = JSON.parse(res.getBody().toString()) - - return toHref(slug, items) - } - - Object.entries(node).forEach(([key, value]) => { - node[key] = resolveRefs(value) - }) - return node - } - return node -} - -const result = resolveRefs(base) - -const docs = [...resolveRefs({ $slug: 'docs' }), ...result] - -module.exports = { - docs -} diff --git a/docs/contrib/sidebar.json b/docs/contrib/sidebar.json deleted file mode 100644 index 6dd589ea7..000000000 --- a/docs/contrib/sidebar.json +++ /dev/null @@ -1,22 +0,0 @@ -[ - { - "Open Source Ory Kratos": { - "$slug": "kratos" - } - }, - { - "Open Source Ory Keto": { - "$slug": "keto" - } - }, - { - "Open Source Ory Hydra": { - "$slug": "hydra" - } - }, - { - "Open Source Ory Oathkeeper": { - "$slug": "oathkeeper" - } - } -] diff --git a/docs/contrib/theme.css b/docs/contrib/theme.css deleted file mode 100644 index 2ac6f02aa..000000000 --- a/docs/contrib/theme.css +++ /dev/null @@ -1,13 +0,0 @@ -:root { - --ifm-color-primary: #5528ff; -} - -.markdown figure { - padding: 8px; - margin: 32px; -} - -.menu__link[href*="https://"] svg, -svg[class*="iconExternalLink"] { - display: none !important; -} diff --git a/docs/docs/.gitkeep b/docs/docs/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/docs/docs/.static/api.json b/docs/docs/.static/api.json deleted file mode 100644 index a131bed6a..000000000 --- a/docs/docs/.static/api.json +++ /dev/null @@ -1,1112 +0,0 @@ -{ - "consumes": ["application/json"], - "produces": ["application/json"], - "schemes": ["http", "https"], - "swagger": "2.0", - "info": { - "description": "Ory Keto is a cloud native access control server providing best-practice patterns (RBAC, ABAC, ACL, AWS IAM Policies, Kubernetes Roles, ...) via REST APIs.", - "title": "ORY Keto", - "contact": { - "name": "ORY", - "url": "https://www.ory.sh", - "email": "hi@ory.sh" - }, - "license": { - "name": "Apache 2.0", - "url": "https://github.com/ory/keto/blob/master/LICENSE" - }, - "version": "Latest" - }, - "basePath": "/", - "paths": { - "/check": { - "get": { - "description": "To learn how relation tuples and the check works, head over to [the documentation](../concepts/relation-tuples.mdx).", - "consumes": ["application/x-www-form-urlencoded"], - "produces": ["application/json"], - "schemes": ["http", "https"], - "tags": ["read"], - "summary": "Check a relation tuple", - "operationId": "getCheck", - "parameters": [ - { - "type": "string", - "description": "Namespace of the Relation Tuple", - "name": "namespace", - "in": "query" - }, - { - "type": "string", - "description": "Object of the Relation Tuple", - "name": "object", - "in": "query" - }, - { - "type": "string", - "description": "Relation of the Relation Tuple", - "name": "relation", - "in": "query" - }, - { - "type": "string", - "description": "SubjectID of the Relation Tuple", - "name": "subject_id", - "in": "query" - }, - { - "type": "string", - "description": "Namespace of the Subject Set", - "name": "subject_set.namespace", - "in": "query" - }, - { - "type": "string", - "description": "Object of the Subject Set", - "name": "subject_set.object", - "in": "query" - }, - { - "type": "string", - "description": "Relation of the Subject Set", - "name": "subject_set.relation", - "in": "query" - }, - { - "type": "integer", - "format": "int64", - "name": "max-depth", - "in": "query" - } - ], - "responses": { - "200": { - "description": "getCheckResponse", - "schema": { - "$ref": "#/definitions/getCheckResponse" - } - }, - "400": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - }, - "403": { - "description": "getCheckResponse", - "schema": { - "$ref": "#/definitions/getCheckResponse" - } - }, - "500": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - } - } - }, - "post": { - "description": "To learn how relation tuples and the check works, head over to [the documentation](../concepts/relation-tuples.mdx).", - "consumes": ["application/json"], - "produces": ["application/json"], - "schemes": ["http", "https"], - "tags": ["read"], - "summary": "Check a relation tuple", - "operationId": "postCheck", - "parameters": [ - { - "name": "Payload", - "in": "body", - "schema": { - "$ref": "#/definitions/RelationQuery" - } - }, - { - "type": "integer", - "format": "int64", - "name": "max-depth", - "in": "query" - } - ], - "responses": { - "200": { - "description": "getCheckResponse", - "schema": { - "$ref": "#/definitions/getCheckResponse" - } - }, - "400": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - }, - "403": { - "description": "getCheckResponse", - "schema": { - "$ref": "#/definitions/getCheckResponse" - } - }, - "500": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - } - } - } - }, - "/expand": { - "get": { - "description": "Use this endpoint to expand a relation tuple.", - "consumes": ["application/x-www-form-urlencoded"], - "produces": ["application/json"], - "schemes": ["http", "https"], - "tags": ["read"], - "summary": "Expand a Relation Tuple", - "operationId": "getExpand", - "parameters": [ - { - "type": "string", - "description": "Namespace of the Subject Set", - "name": "namespace", - "in": "query", - "required": true - }, - { - "type": "string", - "description": "Object of the Subject Set", - "name": "object", - "in": "query", - "required": true - }, - { - "type": "string", - "description": "Relation of the Subject Set", - "name": "relation", - "in": "query", - "required": true - }, - { - "type": "integer", - "format": "int64", - "name": "max-depth", - "in": "query" - } - ], - "responses": { - "200": { - "description": "expandTree", - "schema": { - "$ref": "#/definitions/expandTree" - } - }, - "400": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - }, - "404": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - }, - "500": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - } - } - } - }, - "/health/alive": { - "get": { - "description": "This endpoint returns a 200 status code when the HTTP server is up running.\nThis status does currently not include checks whether the database connection is working.\n\nIf the service supports TLS Edge Termination, this endpoint does not require the\n`X-Forwarded-Proto` header to be set.\n\nBe aware that if you are running multiple nodes of this service, the health status will never\nrefer to the cluster state, only to a single instance.", - "produces": ["application/json"], - "tags": ["health"], - "summary": "Check alive status", - "operationId": "isInstanceAlive", - "responses": { - "200": { - "description": "healthStatus", - "schema": { - "$ref": "#/definitions/healthStatus" - } - }, - "500": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - } - } - } - }, - "/health/ready": { - "get": { - "description": "This endpoint returns a 200 status code when the HTTP server is up running and the environment dependencies (e.g.\nthe database) are responsive as well.\n\nIf the service supports TLS Edge Termination, this endpoint does not require the\n`X-Forwarded-Proto` header to be set.\n\nBe aware that if you are running multiple nodes of this service, the health status will never\nrefer to the cluster state, only to a single instance.", - "produces": ["application/json"], - "tags": ["health"], - "summary": "Check readiness status", - "operationId": "isInstanceReady", - "responses": { - "200": { - "description": "healthStatus", - "schema": { - "$ref": "#/definitions/healthStatus" - } - }, - "503": { - "description": "healthNotReadyStatus", - "schema": { - "$ref": "#/definitions/healthNotReadyStatus" - } - } - } - } - }, - "/relation-tuples": { - "get": { - "description": "Get all relation tuples that match the query. Only the namespace field is required.", - "consumes": ["application/x-www-form-urlencoded"], - "produces": ["application/json"], - "schemes": ["http", "https"], - "tags": ["read"], - "summary": "Query relation tuples", - "operationId": "getRelationTuples", - "parameters": [ - { - "type": "string", - "name": "page_token", - "in": "query" - }, - { - "type": "integer", - "format": "int64", - "name": "page_size", - "in": "query" - }, - { - "type": "string", - "description": "Namespace of the Relation Tuple", - "name": "namespace", - "in": "query" - }, - { - "type": "string", - "description": "Object of the Relation Tuple", - "name": "object", - "in": "query" - }, - { - "type": "string", - "description": "Relation of the Relation Tuple", - "name": "relation", - "in": "query" - }, - { - "type": "string", - "description": "SubjectID of the Relation Tuple", - "name": "subject_id", - "in": "query" - }, - { - "type": "string", - "description": "Namespace of the Subject Set", - "name": "subject_set.namespace", - "in": "query" - }, - { - "type": "string", - "description": "Object of the Subject Set", - "name": "subject_set.object", - "in": "query" - }, - { - "type": "string", - "description": "Relation of the Subject Set", - "name": "subject_set.relation", - "in": "query" - } - ], - "responses": { - "200": { - "description": "getRelationTuplesResponse", - "schema": { - "$ref": "#/definitions/getRelationTuplesResponse" - } - }, - "404": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - }, - "500": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - } - } - }, - "put": { - "description": "Use this endpoint to create a relation tuple.", - "consumes": ["application/json"], - "produces": ["application/json"], - "schemes": ["http", "https"], - "tags": ["write"], - "summary": "Create a Relation Tuple", - "operationId": "createRelationTuple", - "parameters": [ - { - "name": "Payload", - "in": "body", - "schema": { - "$ref": "#/definitions/RelationQuery" - } - } - ], - "responses": { - "201": { - "description": "RelationQuery", - "schema": { - "$ref": "#/definitions/RelationQuery" - } - }, - "400": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - }, - "500": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - } - } - }, - "delete": { - "description": "Use this endpoint to delete relation tuples", - "consumes": ["application/x-www-form-urlencoded"], - "produces": ["application/json"], - "schemes": ["http", "https"], - "tags": ["write"], - "summary": "Delete Relation Tuples", - "operationId": "deleteRelationTuples", - "parameters": [ - { - "type": "string", - "description": "Namespace of the Relation Tuple", - "name": "namespace", - "in": "query" - }, - { - "type": "string", - "description": "Object of the Relation Tuple", - "name": "object", - "in": "query" - }, - { - "type": "string", - "description": "Relation of the Relation Tuple", - "name": "relation", - "in": "query" - }, - { - "type": "string", - "description": "SubjectID of the Relation Tuple", - "name": "subject_id", - "in": "query" - }, - { - "type": "string", - "description": "Namespace of the Subject Set", - "name": "subject_set.namespace", - "in": "query" - }, - { - "type": "string", - "description": "Object of the Subject Set", - "name": "subject_set.object", - "in": "query" - }, - { - "type": "string", - "description": "Relation of the Subject Set", - "name": "subject_set.relation", - "in": "query" - } - ], - "responses": { - "204": { - "description": "Empty responses are sent when, for example, resources are deleted. The HTTP status code for empty responses is typically 201." - }, - "400": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - }, - "500": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - } - } - }, - "patch": { - "description": "Use this endpoint to patch one or more relation tuples.", - "consumes": ["application/json"], - "produces": ["application/json"], - "schemes": ["http", "https"], - "tags": ["write"], - "summary": "Patch Multiple Relation Tuples", - "operationId": "patchRelationTuples", - "parameters": [ - { - "name": "Payload", - "in": "body", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/PatchDelta" - } - } - } - ], - "responses": { - "204": { - "description": "Empty responses are sent when, for example, resources are deleted. The HTTP status code for empty responses is typically 201." - }, - "400": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - }, - "404": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - }, - "500": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - } - } - } - }, - "/version": { - "get": { - "description": "This endpoint returns the service version typically notated using semantic versioning.\n\nIf the service supports TLS Edge Termination, this endpoint does not require the\n`X-Forwarded-Proto` header to be set.\n\nBe aware that if you are running multiple nodes of this service, the health status will never\nrefer to the cluster state, only to a single instance.", - "produces": ["application/json"], - "tags": ["version"], - "summary": "Get service version", - "operationId": "getVersion", - "responses": { - "200": { - "description": "version", - "schema": { - "$ref": "#/definitions/version" - } - } - } - } - } - }, - "definitions": { - "InternalRelationTuple": { - "type": "object", - "required": ["namespace", "object", "relation"], - "properties": { - "namespace": { - "description": "Namespace of the Relation Tuple", - "type": "string" - }, - "object": { - "description": "Object of the Relation Tuple", - "type": "string" - }, - "relation": { - "description": "Relation of the Relation Tuple", - "type": "string" - }, - "subject_id": { - "description": "SubjectID of the Relation Tuple\n\nEither SubjectSet or SubjectID are required.", - "type": "string" - }, - "subject_set": { - "$ref": "#/definitions/SubjectSet" - } - } - }, - "PatchDelta": { - "type": "object", - "properties": { - "action": { - "type": "string", - "enum": ["insert", "delete"] - }, - "relation_tuple": { - "$ref": "#/definitions/InternalRelationTuple" - } - } - }, - "RelationQuery": { - "type": "object", - "properties": { - "namespace": { - "description": "Namespace of the Relation Tuple", - "type": "string" - }, - "object": { - "description": "Object of the Relation Tuple", - "type": "string" - }, - "relation": { - "description": "Relation of the Relation Tuple", - "type": "string" - }, - "subject_id": { - "description": "SubjectID of the Relation Tuple\n\nEither SubjectSet or SubjectID can be provided.", - "type": "string" - }, - "subject_set": { - "$ref": "#/definitions/SubjectSet" - } - } - }, - "SubjectSet": { - "type": "object", - "required": ["namespace", "object", "relation"], - "properties": { - "namespace": { - "description": "Namespace of the Subject Set", - "type": "string" - }, - "object": { - "description": "Object of the Subject Set", - "type": "string" - }, - "relation": { - "description": "Relation of the Subject Set", - "type": "string" - } - } - }, - "expandTree": { - "type": "object", - "required": ["type"], - "properties": { - "children": { - "type": "array", - "items": { - "$ref": "#/definitions/expandTree" - } - }, - "subject_id": { - "type": "string" - }, - "subject_set": { - "$ref": "#/definitions/SubjectSet" - }, - "type": { - "type": "string", - "enum": ["union", "exclusion", "intersection", "leaf"] - } - } - }, - "getCheckResponse": { - "description": "The content of the allowed field is mirrored in the HTTP status code.", - "type": "object", - "title": "Represents the response for a check request.", - "required": ["allowed"], - "properties": { - "allowed": { - "description": "whether the relation tuple is allowed", - "type": "boolean" - } - } - }, - "getRelationTuplesResponse": { - "type": "object", - "properties": { - "next_page_token": { - "description": "The opaque token to provide in a subsequent request\nto get the next page. It is the empty string iff this is\nthe last page.", - "type": "string" - }, - "relation_tuples": { - "type": "array", - "items": { - "$ref": "#/definitions/InternalRelationTuple" - } - } - } - }, - "healthNotReadyStatus": { - "type": "object", - "properties": { - "errors": { - "description": "Errors contains a list of errors that caused the not ready status.", - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - }, - "healthStatus": { - "type": "object", - "properties": { - "status": { - "description": "Status always contains \"ok\".", - "type": "string" - } - } - }, - "version": { - "type": "object", - "properties": { - "version": { - "description": "Version is the service's version.", - "type": "string" - } - } - } - } -} diff --git a/docs/docs/CHANGELOG.md b/docs/docs/CHANGELOG.md deleted file mode 100644 index e69de29bb..000000000 diff --git a/docs/docs/cli/keto-check.md b/docs/docs/cli/keto-check.md deleted file mode 100644 index 4dbabfe3b..000000000 --- a/docs/docs/cli/keto-check.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -id: keto-check -title: keto check -description: keto check Check whether a subject has a relation on an object ---- - - - -## keto check - -Check whether a subject has a relation on an object - -### Synopsis - -Check whether a subject has a relation on an object. This method resolves -subject sets and subject set rewrites. - -``` -keto check <subject> <relation> <namespace> <object> [flags] -``` - -### Options - -``` - -f, --format string Set the output format. One of table, json, and json-pretty. (default "default") - -h, --help help for check - -d, --max-depth int32 Maximum depth of the search tree. If the value is less than 1 or greater than the global max-depth then the global max-depth will be used instead. - -q, --quiet Be quiet with output printing. - --read-remote string Remote address of the read API endpoint. (default "127.0.0.1:4466") - --write-remote string Remote address of the write API endpoint. (default "127.0.0.1:4467") -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/runner/keto.yml]) -``` - -### SEE ALSO - -- [keto](keto) - Global and consistent permission and authorization server diff --git a/docs/docs/cli/keto-expand.md b/docs/docs/cli/keto-expand.md deleted file mode 100644 index b0267dc0f..000000000 --- a/docs/docs/cli/keto-expand.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -id: keto-expand -title: keto expand -description: keto expand Expand a subject set ---- - - - -## keto expand - -Expand a subject set - -### Synopsis - -Expand a subject set into a tree of subjects. - -``` -keto expand <relation> <namespace> <object> [flags] -``` - -### Options - -``` - -f, --format string Set the output format. One of default, json, and json-pretty. (default "default") - -h, --help help for expand - -d, --max-depth int32 Maximum depth of the tree to be returned. If the value is less than 1 or greater than the global max-depth then the global max-depth will be used instead. - -q, --quiet Be quiet with output printing. - --read-remote string Remote address of the read API endpoint. (default "127.0.0.1:4466") - --write-remote string Remote address of the write API endpoint. (default "127.0.0.1:4467") -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/runner/keto.yml]) -``` - -### SEE ALSO - -- [keto](keto) - Global and consistent permission and authorization server diff --git a/docs/docs/cli/keto-migrate-down.md b/docs/docs/cli/keto-migrate-down.md deleted file mode 100644 index 2ca50b228..000000000 --- a/docs/docs/cli/keto-migrate-down.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -id: keto-migrate-down -title: keto migrate down -description: keto migrate down Migrate the database down ---- - - - -## keto migrate down - -Migrate the database down - -### Synopsis - -Migrate the database down a specific amount of steps. Pass 0 steps to fully -migrate down. - -``` -keto migrate down <steps> [flags] -``` - -### Options - -``` - -f, --format string Set the output format. One of table, json, and json-pretty. (default "default") - -h, --help help for down - -q, --quiet Be quiet with output printing. - -y, --yes yes to all questions, no user input required -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/runner/keto.yml]) -``` - -### SEE ALSO - -- [keto migrate](keto-migrate) - Commands to migrate the database diff --git a/docs/docs/cli/keto-migrate-status.md b/docs/docs/cli/keto-migrate-status.md deleted file mode 100644 index be102483b..000000000 --- a/docs/docs/cli/keto-migrate-status.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -id: keto-migrate-status -title: keto migrate status -description: keto migrate status Get the current migration status ---- - - - -## keto migrate status - -Get the current migration status - -### Synopsis - -Get the current migration status. This does not affect namespaces. Use -`keto namespace migrate status` for migrating namespaces. - -``` -keto migrate status [flags] -``` - -### Options - -``` - -f, --format string Set the output format. One of table, json, and json-pretty. (default "default") - -h, --help help for status - -q, --quiet Be quiet with output printing. -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/runner/keto.yml]) -``` - -### SEE ALSO - -- [keto migrate](keto-migrate) - Commands to migrate the database diff --git a/docs/docs/cli/keto-migrate-up.md b/docs/docs/cli/keto-migrate-up.md deleted file mode 100644 index 2865f4f7b..000000000 --- a/docs/docs/cli/keto-migrate-up.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -id: keto-migrate-up -title: keto migrate up -description: keto migrate up Migrate the database up ---- - - - -## keto migrate up - -Migrate the database up - -### Synopsis - -Run this command on a fresh SQL installation and when you upgrade Ory Keto from -version v0.7.x and later. - -It is recommended to run this command close to the SQL instance (e.g. same -subnet) instead of over the public internet. This decreases risk of failure and -decreases time required. - -### WARNING - -Before running this command on an existing database, create a back up! - -``` -keto migrate up [flags] -``` - -### Options - -``` - -f, --format string Set the output format. One of table, json, and json-pretty. (default "default") - -h, --help help for up - -q, --quiet Be quiet with output printing. - -y, --yes yes to all questions, no user input required -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/runner/keto.yml]) -``` - -### SEE ALSO - -- [keto migrate](keto-migrate) - Commands to migrate the database diff --git a/docs/docs/cli/keto-migrate.md b/docs/docs/cli/keto-migrate.md deleted file mode 100644 index 64b089d75..000000000 --- a/docs/docs/cli/keto-migrate.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -id: keto-migrate -title: keto migrate -description: keto migrate Commands to migrate the database ---- - - - -## keto migrate - -Commands to migrate the database - -### Synopsis - -Commands to migrate the database. This does not affect namespaces. Use -`keto namespace migrate` for migrating namespaces. - -### Options - -``` - -h, --help help for migrate -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/runner/keto.yml]) -``` - -### SEE ALSO - -- [keto](keto) - Global and consistent permission and authorization server -- [keto migrate down](keto-migrate-down) - Migrate the database down -- [keto migrate status](keto-migrate-status) - Get the current migration status -- [keto migrate up](keto-migrate-up) - Migrate the database up diff --git a/docs/docs/cli/keto-namespace-migrate-down.md b/docs/docs/cli/keto-namespace-migrate-down.md deleted file mode 100644 index 73007c918..000000000 --- a/docs/docs/cli/keto-namespace-migrate-down.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -id: keto-namespace-migrate-down -title: keto namespace migrate down -description: keto namespace migrate down Migrate a namespace down ---- - - - -## keto namespace migrate down - -Deprecated: this step is not required anymore since -https://github.com/ory/keto/pull/638 - -### SEE ALSO - -- [keto namespace migrate](keto-namespace-migrate) - Migrate a namespace diff --git a/docs/docs/cli/keto-namespace-migrate-legacy.md b/docs/docs/cli/keto-namespace-migrate-legacy.md deleted file mode 100644 index fd8c7d4f1..000000000 --- a/docs/docs/cli/keto-namespace-migrate-legacy.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -id: keto-namespace-migrate-legacy -title: keto namespace migrate legacy -description: - keto namespace migrate legacy Migrate a namespace from v0.6.x to v0.7.x and - later. ---- - - - -## keto namespace migrate legacy - -Migrate a namespace from v0.6.x to v0.7.x and later. - -### Synopsis - -Migrate a legacy namespaces from v0.6.x to the v0.7.x and later. This step only -has to be executed once. If no namespace is specified, all legacy namespaces -will be migrated. Please ensure that namespace IDs did not change in the config -file and you have a backup in case something goes wrong! - -``` -keto namespace migrate legacy [<namespace-name>] [flags] -``` - -### Options - -``` - --down-only Migrate legacy namespace(s) only down. - -f, --format string Set the output format. One of table, json, and json-pretty. (default "default") - -h, --help help for legacy - -q, --quiet Be quiet with output printing. - --read-remote string Remote address of the read API endpoint. (default "127.0.0.1:4466") - --write-remote string Remote address of the write API endpoint. (default "127.0.0.1:4467") - -y, --yes yes to all questions, no user input required -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/runner/keto.yml]) -``` - -### SEE ALSO - -- [keto namespace migrate](keto-namespace-migrate) - Migrate a namespace diff --git a/docs/docs/cli/keto-namespace-migrate-status.md b/docs/docs/cli/keto-namespace-migrate-status.md deleted file mode 100644 index 369c0caff..000000000 --- a/docs/docs/cli/keto-namespace-migrate-status.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -id: keto-namespace-migrate-status -title: keto namespace migrate status -description: - keto namespace migrate status Get the current namespace migration status ---- - - - -## keto namespace migrate status - -Deprecated: this step is not required anymore since -https://github.com/ory/keto/pull/638 - -### SEE ALSO - -- [keto namespace migrate](keto-namespace-migrate) - Migrate a namespace diff --git a/docs/docs/cli/keto-namespace-migrate-up.md b/docs/docs/cli/keto-namespace-migrate-up.md deleted file mode 100644 index b98171941..000000000 --- a/docs/docs/cli/keto-namespace-migrate-up.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -id: keto-namespace-migrate-up -title: keto namespace migrate up -description: keto namespace migrate up Migrate a namespace up ---- - - - -## keto namespace migrate up - -Deprecated: this step is not required anymore since -https://github.com/ory/keto/pull/638 - -### SEE ALSO - -- [keto namespace migrate](keto-namespace-migrate) - Migrate a namespace diff --git a/docs/docs/cli/keto-namespace-migrate.md b/docs/docs/cli/keto-namespace-migrate.md deleted file mode 100644 index bebabfda7..000000000 --- a/docs/docs/cli/keto-namespace-migrate.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -id: keto-namespace-migrate -title: keto namespace migrate -description: keto namespace migrate Migrate a namespace ---- - - - -## keto namespace migrate - -Migrate a namespace - -### Options - -``` - -h, --help help for migrate -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/runner/keto.yml]) -``` - -### SEE ALSO - -- [keto namespace](keto-namespace) - Read and manipulate namespaces -- [keto namespace migrate legacy](keto-namespace-migrate-legacy) - Migrate a - namespace from v0.6.x to v0.7.x and later. diff --git a/docs/docs/cli/keto-namespace-validate.md b/docs/docs/cli/keto-namespace-validate.md deleted file mode 100644 index a2241bbe4..000000000 --- a/docs/docs/cli/keto-namespace-validate.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -id: keto-namespace-validate -title: keto namespace validate -description: keto namespace validate Validate namespace definitions ---- - - - -## keto namespace validate - -Validate namespace definitions - -### Synopsis - -validate Validates namespace definitions. Parses namespace yaml files or -configuration files passed via the configuration flag. Returns human readable -errors. Useful for debugging. - -``` -keto namespace validate <namespace.yml> [<namespace2.yml> ...] | validate -c <config.yaml> [flags] -``` - -### Options - -``` - -h, --help help for validate -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/runner/keto.yml]) -``` - -### SEE ALSO - -- [keto namespace](keto-namespace) - Read and manipulate namespaces diff --git a/docs/docs/cli/keto-namespace.md b/docs/docs/cli/keto-namespace.md deleted file mode 100644 index 914371eb3..000000000 --- a/docs/docs/cli/keto-namespace.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -id: keto-namespace -title: keto namespace -description: keto namespace Read and manipulate namespaces ---- - - - -## keto namespace - -Read and manipulate namespaces - -### Options - -``` - -h, --help help for namespace -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/runner/keto.yml]) -``` - -### SEE ALSO - -- [keto](keto) - Global and consistent permission and authorization server -- [keto namespace migrate](keto-namespace-migrate) - Migrate a namespace -- [keto namespace validate](keto-namespace-validate) - Validate namespace - definitions diff --git a/docs/docs/cli/keto-relation-tuple-create.md b/docs/docs/cli/keto-relation-tuple-create.md deleted file mode 100644 index fa5fab841..000000000 --- a/docs/docs/cli/keto-relation-tuple-create.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -id: keto-relation-tuple-create -title: keto relation-tuple create -description: keto relation-tuple create Create relation tuples from JSON files ---- - - - -## keto relation-tuple create - -Create relation tuples from JSON files - -### Synopsis - -Create relation tuples from JSON files. A directory will be traversed and all -relation tuples will be created. Pass the special filename `-` to read from -STD_IN. - -``` -keto relation-tuple create <relation-tuple.json> [<relation-tuple-dir>] [flags] -``` - -### Options - -``` - -f, --format string Set the output format. One of table, json, and json-pretty. (default "default") - -h, --help help for create - -q, --quiet Be quiet with output printing. - --read-remote string Remote address of the read API endpoint. (default "127.0.0.1:4466") - --write-remote string Remote address of the write API endpoint. (default "127.0.0.1:4467") -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/runner/keto.yml]) -``` - -### SEE ALSO - -- [keto relation-tuple](keto-relation-tuple) - Read and manipulate relation - tuples diff --git a/docs/docs/cli/keto-relation-tuple-delete-all.md b/docs/docs/cli/keto-relation-tuple-delete-all.md deleted file mode 100644 index b9b20542c..000000000 --- a/docs/docs/cli/keto-relation-tuple-delete-all.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -id: keto-relation-tuple-delete-all -title: keto relation-tuple delete-all -description: - keto relation-tuple delete-all Delete ALL relation tuples matching the - relation query. ---- - - - -## keto relation-tuple delete-all - -Delete ALL relation tuples matching the relation query. - -### Synopsis - -Delete all relation tuples matching the relation query. It is recommended to -first run the command without the `--force` flag to verify that the operation is -safe. - -``` -keto relation-tuple delete-all [flags] -``` - -### Options - -``` - --force Force the deletion of relation tuples - -f, --format string Set the output format. One of table, json, and json-pretty. (default "default") - -h, --help help for delete-all - --namespace string Set the requested namespace - --object string Set the requested object - -q, --quiet Be quiet with output printing. - --read-remote string Remote address of the read API endpoint. (default "127.0.0.1:4466") - --relation string Set the requested relation - --subject-id string Set the requested subject ID - --subject-set string Set the requested subject set; format: "namespace:object#relation" - --write-remote string Remote address of the write API endpoint. (default "127.0.0.1:4467") -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/runner/keto.yml]) -``` - -### SEE ALSO - -- [keto relation-tuple](keto-relation-tuple) - Read and manipulate relation - tuples diff --git a/docs/docs/cli/keto-relation-tuple-delete.md b/docs/docs/cli/keto-relation-tuple-delete.md deleted file mode 100644 index 5f69deeff..000000000 --- a/docs/docs/cli/keto-relation-tuple-delete.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -id: keto-relation-tuple-delete -title: keto relation-tuple delete -description: - keto relation-tuple delete Delete relation tuples defined in JSON files ---- - - - -## keto relation-tuple delete - -Delete relation tuples defined in JSON files - -### Synopsis - -Delete relation tuples defined in the given JSON files. A directory will be -traversed and all relation tuples will be deleted. Pass the special filename `-` -to read from STD_IN. - -``` -keto relation-tuple delete <relation-tuple.json> [<relation-tuple-dir>] [flags] -``` - -### Options - -``` - -f, --format string Set the output format. One of table, json, and json-pretty. (default "default") - -h, --help help for delete - -q, --quiet Be quiet with output printing. - --read-remote string Remote address of the read API endpoint. (default "127.0.0.1:4466") - --write-remote string Remote address of the write API endpoint. (default "127.0.0.1:4467") -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/runner/keto.yml]) -``` - -### SEE ALSO - -- [keto relation-tuple](keto-relation-tuple) - Read and manipulate relation - tuples diff --git a/docs/docs/cli/keto-relation-tuple-get.md b/docs/docs/cli/keto-relation-tuple-get.md deleted file mode 100644 index e2290a8bd..000000000 --- a/docs/docs/cli/keto-relation-tuple-get.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -id: keto-relation-tuple-get -title: keto relation-tuple get -description: keto relation-tuple get Get relation tuples ---- - - - -## keto relation-tuple get - -Get relation tuples - -### Synopsis - -Get relation tuples matching the given partial tuple. Returns paginated results. - -``` -keto relation-tuple get [flags] -``` - -### Options - -``` - -f, --format string Set the output format. One of table, json, and json-pretty. (default "default") - -h, --help help for get - --namespace string Set the requested namespace - --object string Set the requested object - --page-size int32 maximum number of items to return (default 100) - --page-token string page token acquired from a previous response - -q, --quiet Be quiet with output printing. - --read-remote string Remote address of the read API endpoint. (default "127.0.0.1:4466") - --relation string Set the requested relation - --subject-id string Set the requested subject ID - --subject-set string Set the requested subject set; format: "namespace:object#relation" - --write-remote string Remote address of the write API endpoint. (default "127.0.0.1:4467") -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/runner/keto.yml]) -``` - -### SEE ALSO - -- [keto relation-tuple](keto-relation-tuple) - Read and manipulate relation - tuples diff --git a/docs/docs/cli/keto-relation-tuple-parse.md b/docs/docs/cli/keto-relation-tuple-parse.md deleted file mode 100644 index 999b13f40..000000000 --- a/docs/docs/cli/keto-relation-tuple-parse.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -id: keto-relation-tuple-parse -title: keto relation-tuple parse -description: keto relation-tuple parse Parse human readable relation tuples ---- - - - -## keto relation-tuple parse - -Parse human readable relation tuples - -### Synopsis - -Parse human readable relation tuples as used in the documentation. Supports -various output formats. Especially useful for piping into other commands by -using `--format json`. Ignores comments (starting with `//`) and blank lines. - -``` -keto relation-tuple parse [flags] -``` - -### Options - -``` - -f, --format string Set the output format. One of table, json, and json-pretty. (default "default") - -h, --help help for parse - -q, --quiet Be quiet with output printing. -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/runner/keto.yml]) -``` - -### SEE ALSO - -- [keto relation-tuple](keto-relation-tuple) - Read and manipulate relation - tuples diff --git a/docs/docs/cli/keto-relation-tuple.md b/docs/docs/cli/keto-relation-tuple.md deleted file mode 100644 index 3dd2c8dd1..000000000 --- a/docs/docs/cli/keto-relation-tuple.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -id: keto-relation-tuple -title: keto relation-tuple -description: keto relation-tuple Read and manipulate relation tuples ---- - - - -## keto relation-tuple - -Read and manipulate relation tuples - -### Options - -``` - -h, --help help for relation-tuple -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/runner/keto.yml]) -``` - -### SEE ALSO - -- [keto](keto) - Global and consistent permission and authorization server -- [keto relation-tuple create](keto-relation-tuple-create) - Create relation - tuples from JSON files -- [keto relation-tuple delete](keto-relation-tuple-delete) - Delete relation - tuples defined in JSON files -- [keto relation-tuple delete-all](keto-relation-tuple-delete-all) - Delete ALL - relation tuples matching the relation query. -- [keto relation-tuple get](keto-relation-tuple-get) - Get relation tuples -- [keto relation-tuple parse](keto-relation-tuple-parse) - Parse human readable - relation tuples diff --git a/docs/docs/cli/keto-serve.md b/docs/docs/cli/keto-serve.md deleted file mode 100644 index 434c79b0d..000000000 --- a/docs/docs/cli/keto-serve.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -id: keto-serve -title: keto serve -description: keto serve Starts the server and serves the HTTP REST and gRPC APIs ---- - - - -## keto serve - -Starts the server and serves the HTTP REST and gRPC APIs - -### Synopsis - -This command opens the network ports and listens to HTTP and gRPC API requests. - -## Configuration - -ORY Keto can be configured using environment variables as well as a -configuration file. For more information on configuration options, open the -configuration documentation: - ->> https://www.ory.sh/keto/docs/reference/configuration << - -``` -keto serve [flags] -``` - -### Options - -``` - --disable-telemetry Disable anonymized telemetry reports - for more information please visit https://www.ory.sh/docs/ecosystem/sqa (default true) - -h, --help help for serve - --sqa-opt-out Disable anonymized telemetry reports - for more information please visit https://www.ory.sh/docs/ecosystem/sqa (default true) -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/runner/keto.yml]) -``` - -### SEE ALSO - -- [keto](keto) - Global and consistent permission and authorization server diff --git a/docs/docs/cli/keto-status.md b/docs/docs/cli/keto-status.md deleted file mode 100644 index 5999b7ebe..000000000 --- a/docs/docs/cli/keto-status.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -id: keto-status -title: keto status -description: keto status Get the status of the upstream Keto instance ---- - - - -## keto status - -Get the status of the upstream Keto instance - -### Synopsis - -Get a status report about the upstream Keto instance. Can also block until the -service is healthy. - -``` -keto status [flags] -``` - -### Options - -``` - -b, --block block until the service is healthy - --endpoint string which endpoint to use; one of {read, write} (default "read") - -h, --help help for status - -q, --quiet Be quiet with output printing. - --read-remote string Remote address of the read API endpoint. (default "127.0.0.1:4466") - --write-remote string Remote address of the write API endpoint. (default "127.0.0.1:4467") -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/runner/keto.yml]) -``` - -### SEE ALSO - -- [keto](keto) - Global and consistent permission and authorization server diff --git a/docs/docs/cli/keto-version.md b/docs/docs/cli/keto-version.md deleted file mode 100644 index d126276de..000000000 --- a/docs/docs/cli/keto-version.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -id: keto-version -title: keto version -description: keto version Show the build version, build time, and git hash ---- - - - -## keto version - -Show the build version, build time, and git hash - -``` -keto version [flags] -``` - -### Options - -``` - -h, --help help for version -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/runner/keto.yml]) -``` - -### SEE ALSO - -- [keto](keto) - Global and consistent permission and authorization server diff --git a/docs/docs/cli/keto.md b/docs/docs/cli/keto.md deleted file mode 100644 index eaa9422d1..000000000 --- a/docs/docs/cli/keto.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -id: keto -title: keto -description: keto Global and consistent permission and authorization server ---- - - - -## keto - -Global and consistent permission and authorization server - -### Options - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/runner/keto.yml]) - -h, --help help for keto -``` - -### SEE ALSO - -- [keto check](keto-check) - Check whether a subject has a relation on an object -- [keto expand](keto-expand) - Expand a subject set -- [keto migrate](keto-migrate) - Commands to migrate the database -- [keto namespace](keto-namespace) - Read and manipulate namespaces -- [keto relation-tuple](keto-relation-tuple) - Read and manipulate relation - tuples -- [keto serve](keto-serve) - Starts the server and serves the HTTP REST and gRPC - APIs -- [keto status](keto-status) - Get the status of the upstream Keto instance -- [keto version](keto-version) - Show the build version, build time, and git - hash diff --git a/docs/docs/concepts/api-overview.mdx b/docs/docs/concepts/api-overview.mdx deleted file mode 100644 index 58029f3c9..000000000 --- a/docs/docs/concepts/api-overview.mdx +++ /dev/null @@ -1,96 +0,0 @@ ---- -title: API Overview ---- - -This page gives an overview over all APIs Ory Keto offers, including common use -cases. - -The APIs are separated based on privileges into a `read` and `write` endpoint. -Each endpoint is exposed on a different port, so -[you can decide how to restrict access](../secure.md). gRPC and REST connections -are multiplexed on the same port. - -All APIs are available to gRPC and REST clients, although feature parity is not -always given. Because we follow gRPC and REST best practices and design -guidelines, the APIs offer slightly different interfaces and capabilities. - -## Read APIs - -The read-APIs are per default exposed on the TCP port `4466`. - -### List Relation Tuples - -This API allows you to query [relation tuples](./relation-tuples.mdx) by -providing a partial relation tuple. It can be used to: - -- [list objects a user has access to](../guides/list-api-display-objects.mdx#listing-objects) -- [list users who have a specific role](../guides/list-api-display-objects.mdx#listing-subjects) -- list users who are members of a specific group -- audit permissions in the system - -For more details, head over to the -[gRPC API reference](../reference/proto-api.mdx#readservice) or -[REST API reference](../reference/rest-api.mdx#query-relation-tuples). - -### Check Relation Tuple - -The check-API allows you to check whether a subject has a relation on an object. -This API resolves [subject sets](./subjects.mdx#subject-sets) and -[subject set rewrites](https://github.com/ory/keto/issues/263). - -This API is primarily used to -[check permissions to restrict actions](../guides/simple-access-check-guide.mdx). - -A check-request can include the maximum depth of the search tree. If the value -is less than 1 or greater than the global max-depth then the global max-depth -will be used instead. This is to ensure low latency and limit the resource usage -per request. To find out more about Ory Keto's performance, head over to the -[performance considerations](../performance.mdx). - -For more details, head over to the -[gRPC API reference](../reference/proto-api.mdx#checkservice) or -[REST API reference](../reference/rest-api.mdx#check-a-relation-tuple). - -### Expand Subject Sets - -The expand-API recursively expands a [subject set](./subjects.mdx#subject-sets) -into a tree of subjects. For each subject, the tree assembles the relation -tuples including the operands as defined in the -[namespace configuration](./namespaces.mdx). It can be used to: - -- [list who has access to an object](../guides/expand-api-display-who-has-access.mdx) -- determine why someone has access to an object -- audit permissions in the system - -An expand-request can include the maximum depth of the tree to be returned. If -the value is less than 1 or greater than the global max-depth then the global -max-depth will be used instead. This is required to ensure low latency and limit -the resource usage per request. To find out more about Ory Keto's performance, -head over to the [performance considerations](../performance.mdx). - -For more details, head over to the -[gRPC API reference](../reference/proto-api.mdx#expandservice) or -[REST API reference](../reference/rest-api.mdx#getexpand). - -## Write APIs - -The write-APIs are per default exposed on the TCP port `4467`. - -### Change Relation Tuples - -The write-APIs offer multiple ways to insert and delete relation tuples. Please -head over to the [gRPC API reference](../reference/proto-api.mdx#writeservice) -or [REST API reference](../reference/rest-api.mdx#write) to read more about the -available methods for each client type. - -In general, it is preferred to use the transaction based methods over repeatedly -calling simple methods for bulk updates. This is not only because they provide -stronger consistency guarantees, but also because the database usually handles a -single transaction with a lot of data faster than a lot of small transactions. - -The main use cases for the write-APIs are: - -- setting up permissions for a new object -- sharing an object with another user -- revoking access to an object -- transferring relations to an object to another user diff --git a/docs/docs/concepts/graph-of-relations.mdx b/docs/docs/concepts/graph-of-relations.mdx deleted file mode 100644 index dd8c209a6..000000000 --- a/docs/docs/concepts/graph-of-relations.mdx +++ /dev/null @@ -1,92 +0,0 @@ ---- -title: The Graph of Relations ---- - -import Mermaid from '@theme/Mermaid' - -The [relation tuples](./relation-tuples.mdx) of the ACL used by Ory Keto can be -represented as a graph of relations. This graph will help us to understand many -[implications on performance](../performance.mdx) and -[internal algorithms](./internal-algorithms.mdx). - -## Definition - -The graph consists of three types of nodes. [Object](./objects.mdx) nodes that -represent application objects, intermediary -[subject set](./subjects.mdx#subject-sets) nodes, and -[subject ID](./subjects.mdx#subject-ids) nodes representing individuals. Edges -are directed and represent the relation between an object and subject. - -## Example - -The following example translates a view relation tuples into the corresponding -graph of relations. - -:::note - -This example omits the [namespace](./namespaces.mdx) from all data to improve -readability. In practice, the namespace always has to be considered. - -::: - -```keto-relation-tuples -// user1 has access on dir1 -dir1#access@user1 -// Have a look on the subjects concept page if you don't know the empty relation. -dir1#child@(file1#) -// Everyone with access to dir1 has access to file1. This would probably be defined -// through a subject set rewrite that defines this inherited relation globally. -// In this example, we define this tuple explicitly. -file1#access@(dir1#access) -// Direct access on file2 was granted. -file2#access@user1 -// user2 is owner of file2 -file2#owner@user2 -// Owners of file2 have access to it; possibly defined through subject set rewrites. -file2#access@(file2#owner) -``` - -This is represented by the following graph: - -|child| E - G[file2] - end - subgraph subjID [Subject ID region] - F([user1]) - C([user2]) - end - A -->|access| B{{dir1#access}} - B -. file1#access .-> F - E -->|access| F - G -->|access| F - G -->|owner| C - G -->|access| H{{file2#owner}} - H -. file2#access .-> C -`} -/> - -Solid edges represent explicitly defined relations, while dotted edges represent -relations inherited through a subject set. - -## Observations about the Graph - -Ory Keto utilizes the following key properties of the graph of relations: - -1. **Directed edges from objects to subjects**: This implies a neat arrangement - with objects in one region, subject IDs in another one, and subject sets in - between. Edges will always go from the object region towards the subject - region. -2. **Searching for a possible path is local**: Trying to find a path from an - object to a subject will always happen locally. This means that it is only - necessary to traverse the nodes that are successors of the object. In typical - setups, this means that only a small fraction of the graph has to be - searched, regardless of the outcome. The intuition here is that the relations - of user1's files are irrelevant when checking access to user2's files. - -Both of these properties are important to ensure -[high performance](../performance.mdx). diff --git a/docs/docs/concepts/internal-algorithms.mdx b/docs/docs/concepts/internal-algorithms.mdx deleted file mode 100644 index b8203781d..000000000 --- a/docs/docs/concepts/internal-algorithms.mdx +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Internal Algorithms ---- - -This page gives an overview over the internal algorithms used to traverse the -[graph of relations](./graph-of-relations.mdx). This page is still under -development and will be finalized once the code is stable. Please head over to -[the corresponding issue](https://github.com/ory/keto/issues/483) for the -current state. diff --git a/docs/docs/concepts/namespaces.mdx b/docs/docs/concepts/namespaces.mdx deleted file mode 100644 index 8e903f147..000000000 --- a/docs/docs/concepts/namespaces.mdx +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: Namespaces ---- - -Ory Keto knows the concept of namespaces to organize -[relation tuples](./relation-tuples.mdx). Namespaces have a configuration that -defines the relations, and some other important values -([see reference](./reference/configuration.md)). Unlike other applications, Ory -Keto does **not** isolate namespaces. Especially, [subject sets](./subjects.mdx) -can cross-reference from one namespace to another. The namespaces' purpose is to -split up the data into coherent partitions, each with its corresponding -configuration. Internally each namespace has its own table in the database to -allow setting individual -[storage specific options](https://github.com/ory/keto/issues/303). - -## Scoping of Objects - -The application can also use namespaces to scope [objects](./objects.mdx) -because Ory Keto only compares objects within a namespace. For example, if Ory -Keto knows the following relation tuples - -```keto-relation-tuples -// user1 has acces to the directory foo -directories:foo#access@user1 -// user2 has access to the file foo -files:foo#access@user2 -``` - -both of the following [check](./api-overview.mdx#check-relation-tuples) requests - -```keto-relation-tuples -// Does user2 have access to the directory foo? -directories:foo#access@user2 -// Does user1 have access to the file foo? -files:foo#access@user1 -``` - -will evaluate to false (a.k.a. rejected). - -Vice versa, all relation tuples containing an object have to be in the same -namespace to reference the same object. - -## Naming Conventions - -Namespaces should be named after the plural of the type of objects they describe -(e.g. `files`, `chats`, `organizations`). Relations within a namespace should be -a word that describes what relation a subject has towards an object. As a rule -of thumb, every relation tuple should translate to an english sentence like so: - -> **Subject** has **relation** on **object** which is one of the **namespace**. - -Examples: - -```keto-relation-tuples -// good examples - - -files:8f427c01-c295-44f3-b43d-49c3a1042f35#write@02a3c847-c903-446a-a34f-dae74b4fab86 -groups:43784684-103e-44c0-9d6c-db9fb265f617#member@b8d00059-b803-4123-9d3d-b3613bfe7c1b -directories:803a87e9-0da0-486e-bc08-ef559dd8e034#child@(files:11488ab9-4ede-479f-add4-f1379da4ae43#_) -files:11488ab9-4ede-479f-add4-f1379da4ae43#parent@(directories:803a87e9-0da0-486e-bc08-ef559dd8e034#_) - -// bad examples - - -// namespace is not describing homogenous type of objects -tenant-1-objects:62237c27-19c3-4bb1-9cbc-a5a67372569b#access@7a012165-7b21-495b-b84b-cf4e1a21b484 -// relation describes a relation of the object towards the subject -directories:803a87e9-0da0-486e-bc08-ef559dd8e034#parent@(files:11488ab9-4ede-479f-add4-f1379da4ae43#_) -``` diff --git a/docs/docs/concepts/objects.mdx b/docs/docs/concepts/objects.mdx deleted file mode 100644 index 541913751..000000000 --- a/docs/docs/concepts/objects.mdx +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: Objects ---- - -Objects are identifiers for some kind of application objects. They can represent -e.g. a file, network port, physical item, ... . It is up to the application to -map its objects to an unambiguous identifier. The limit on object identifiers is -64 characters. We recommend the usage of UUIDs as they provide a high entropy -and thus unique identifiers. It is however possible to use e.g. URLs or opaque -tokens of any kind. Please check the -[limitations](#advanced-example-using-application-information-within-keto-objects). -Ory Keto will consider objects equal iff their string representation is equal. - -## Basic Example - -In the basic case an application uses the same object identifiers as it uses -internally, e.g. a UUIDv4 like `61e75133-efff-4281-8148-a1806919f568` or SHA-1 -hash like `5c6f593a4e12970d647843f97846fd5ed18179eb`. - -Head over to the -[basic full feature example](../examples/olymp-file-sharing.mdx) to see an -example with some context. - -## Advanced Example: Using Application Information within Keto Objects - -Because the Keto client can use arbitrary strings as objects, it is tempting to -encode application data within the object. **We strongly discourage this -practice.** Instead, you should use a UUID to map application data to Keto -objects. This is required to ensure: - -1. single source of truth and easy data update -2. free choice of encoding (Keto does not allow the characters `:#@`) -3. unlimited data size (Keto only allows up to 64 characters) - -For example, this could be used to implement checks on value ranges. The -application knows the following mapping of comparison conditions and UUIDs: - -```yml -f832e1e7-3c97-4cb8-8582-979e63ae2f1d: - greater_than: 5 - -c4540cf5-6ac4-4007-910b-c5a56aa3d4e6: - greater_than: 2 - smaller_equal: 5 -``` - -Keto has the following relation tuples: - -```keto-relation-tuples -// Members of the admins group are allowed to set a value v > 5 -values:f832e1e7-3c97-4cb8-8582-979e63ae2f1d#set_value@(groups:admins#member) - -// Members of the devs group are allowed to set a value v: 2 < v <= 5 -values:c4540cf5-6ac4-4007-910b-c5a56aa3d4e6#set_value@(groups:devs#member) - -// Anyone who can set a value v > 5 can also set 2 < v <= 5 -values:c4540cf5-6ac4-4007-910b-c5a56aa3d4e6#set_value@(values:f832e1e7-3c97-4cb8-8582-979e63ae2f1d#set_value) -``` - -The application will have to translate an incoming "set value" request to the -corresponding condition the value fulfills. It is important to understand that -Ory Keto does **not** know how to interpret any of the information. Rather, the -application has to preprocess and map the value to the corresponding UUID. diff --git a/docs/docs/concepts/relation-tuples.mdx b/docs/docs/concepts/relation-tuples.mdx deleted file mode 100644 index 96099c139..000000000 --- a/docs/docs/concepts/relation-tuples.mdx +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: Relation Tuples ---- - -Relation tuples are the underlying datatype of Ory Keto's access control -language. They encode relations between [objects](./objects.mdx) and -[subjects](./subjects.mdx). A relation tuple is associated with a -[namespace](./namespaces.mdx) where its relation has to be defined and -configured. The following -[BNF grammar](https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_form) describes -the encoding used in the documentation and within Ory Keto. - -:::note - -The namespace is often omitted in examples for readability, but is technically -always required. - -::: - -``` - ::= '#'relation'@' - ::= namespace':'object_id - ::= subject_id | - ::= '#'relation -``` - -A relation tuple - -```keto-relation-tuples -object#relation@subject -``` - -can be translated into the english sentence "Subject has relation on object". - -## Effect of a Relation Tuple - -The effect of a relation tuple is the effect of its relation as defined in the -[namespace configuration](./namespaces.mdx). It can be one of union (boolean -or), intersection (boolean and), or exclusion (boolean not). - -## Basic Example - -Head over to the -[basic full feature example](../examples/olymp-file-sharing.mdx) to see an -example with some context. diff --git a/docs/docs/concepts/snaptokens-evaluation-consistency.mdx b/docs/docs/concepts/snaptokens-evaluation-consistency.mdx deleted file mode 100644 index ea915402b..000000000 --- a/docs/docs/concepts/snaptokens-evaluation-consistency.mdx +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: Consistency Guarantees provided by Snaptokens ---- - -This feature is not yet implemented, see -[the issue](https://github.com/ory/keto/issues/517). diff --git a/docs/docs/concepts/subjects.mdx b/docs/docs/concepts/subjects.mdx deleted file mode 100644 index 5c09c30a5..000000000 --- a/docs/docs/concepts/subjects.mdx +++ /dev/null @@ -1,83 +0,0 @@ ---- -title: Subjects ---- - -In Ory Keto subjects are a recursive polymorphic datatype. They either refer to -a specific subject (e.g. user) by some application defined identifier, or a set -of subjects. - -## Subject IDs - -A subject ID can be any string. It is up to the application to map its users, -devices, ... to a constant, unique identifier. We recommend the usage of UUIDs -as they provide a high entropy. It is however possible to use e.g. URLs or -opaque tokens of any kind. Please check the -[limitations](#advanced-example-using-application-information-within-keto-subjects). -Ory Keto will consider subject IDs equal iff their string representation is -equal. - -## Subject Sets - -A subject set is the set of all subjects that have a specific relation on an -[object](./objects.mdx). They empower Ory Keto to be as flexible as you need it -by defining indirections. They can be used to realize e.g. -[RBAC](../guides/rbac.mdx) or -[inheritance of relations](../guides/access-control-inheritance.mdx). Subject -sets themselves can again indirect to subject sets. For a performant evaluation -of requests it is however required to follow some -[best practices](../performance.mdx). As a special case, subject sets can also -refer to an object by using the empty relation. Effectively, this is interpreted -as "any relation, even a non-existent one". - -Subject sets also represent all intermediary nodes in -[the graph of relations](./graph-of-relations.mdx). - -## Basic Example - -In the basic case an application uses the same subject identifiers as it uses -internally, e.g. a constant, unique username like `zepatrik` or preferably -UUIDv4 like `480158d4-0031-4412-9453-1bb0cdf76104`. - -Head over to the -[basic full feature example](../examples/olymp-file-sharing.mdx) to see an -example with some context. - -## Advanced Example: Using Application Information within Keto Subjects - -Because the Keto client can use arbitrary strings as subjects, it is tempting to -encode application data within the subject. **We strongly discourage this -practice.** Instead, you should use a UUID to map application data to Keto -subjects. This is required to ensure: - -1. single source of truth and easy data update -2. free choice of encoding (Keto does not allow the characters `:#@`) -3. unlimited data size (Keto only allows up to 64 characters) - -For example, this can be used to implement a crude ABAC system by mapping -attributes to a subject ID. The application can then define relation tuples that -reflect permissions depending on the value of attributes. It will have to map -each request to the subject representing the attributes. - -Let's assume the application knows the following mapping between attributes and -UUIDs: - -```yml -c5b6454f-f79c-4a6d-9e1b-b44e04b56009: - subnet: 192.168.0.0/24 - office_hours: true -``` - -Keto could then know the following relation tuple: - -```keto-relation-tuples -// allow access to TCP port 22 when the request originates from a specific subnet during office hours -tcp/22#access@c5b6454f-f79c-4a6d-9e1b-b44e04b56009 -``` - -The application has to map each incoming request to a subject string -representing the attributes of the request. Ory Keto will reply with a positive -[check response](./api-overview.mdx#check-relation-tuple) depending on the -string equality of the requested subject representing the attributes with the -known relation tuples. Remember that Ory Keto does **not** know how to interpret -any information stored in the relation tuples. Rather, the application has to -preprocess and map the value to the corresponding UUID. diff --git a/docs/docs/contributing.md b/docs/docs/contributing.md deleted file mode 100644 index 9756f6236..000000000 --- a/docs/docs/contributing.md +++ /dev/null @@ -1,268 +0,0 @@ ---- -id: contributing -title: Contribution Guidelines ---- - - - -# Contributing to Ory Keto - - - - -- [Introduction](#introduction) -- [FAQ](#faq) -- [How can I contribute?](#how-can-i-contribute) -- [Communication](#communication) -- [Contributing Code](#contributing-code) -- [Documentation](#documentation) -- [Disclosing vulnerabilities](#disclosing-vulnerabilities) -- [Code Style](#code-style) - - [Working with Forks](#working-with-forks) -- [Conduct](#conduct) - - - -## Introduction - -There are many ways in which you can contribute, beyond writing code. The goal -of this document is to provide a high-level overview of how you can get -involved. - -_Please note_: We take Ory Keto's security and our users' trust very seriously. -If you believe you have found a security issue in Ory Keto, please responsibly -disclose by contacting us at security@ory.sh. - -First: As a potential contributor, your changes and ideas are welcome at any -hour of the day or night, weekdays, weekends, and holidays. Please do not ever -hesitate to ask a question or send a pull request. - -If you are unsure, just ask or submit the issue or pull request anyways. You -won't be yelled at for giving it your best effort. The worst that can happen is -that you'll be politely asked to change something. We appreciate any sort of -contributions, and don't want a wall of rules to get in the way of that. - -That said, if you want to ensure that a pull request is likely to be merged, -talk to us! You can find out our thoughts and ensure that your contribution -won't clash or be obviated by Ory Keto's normal direction. A great way to do -this is via [Ory Keto Discussions](https://github.com/ory/keto/discussions) or -the [Ory Chat](https://www.ory.sh/chat). - -## FAQ - -- I am new to the community. Where can I find the - [Ory Community Code of Conduct?](https://github.com/ory/keto/blob/master/CODE_OF_CONDUCT.md) - -- I have a question. Where can I get - [answers to questions regarding Ory Keto?](#communication) - -- I would like to contribute but I am not sure how. Are there - [easy ways to contribute?](#how-can-i-contribute) - [Or good first issues?](https://github.com/search?l=&o=desc&q=label%3A%22help+wanted%22+label%3A%22good+first+issue%22+is%3Aopen+user%3Aory+user%3Aory-corp&s=updated&type=Issues) - -- I want to talk to other Ory Keto users. - [How can I become a part of the community?](#communication) - -- I would like to know what I am agreeing to when I contribute to Ory Keto. Does - Ory have - [a Contributors License Agreement?](https://cla-assistant.io/ory/keto) - -- I would like updates about new versions of Ory Keto. - [How are new releases announced?](https://ory.us10.list-manage.com/subscribe?u=ffb1a878e4ec6c0ed312a3480&id=f605a41b53) - -## How can I contribute? - -If you want to start contributing code right away, we have a -[list of good first issues](https://github.com/ory/keto/labels/good%20first%20issue). - -There are many other ways you can contribute without writing any code. Here are -a few things you can do to help out: - -- **Give us a star.** It may not seem like much, but it really makes a - difference. This is something that everyone can do to help out Ory Keto. - Github stars help the project gain visibility and stand out. - -- **Join the community.** Sometimes helping people can be as easy as listening - to their problems and offering a different perspective. Join our Slack, have a - look at discussions in the forum and take part in our weekly hangout. More - info on this in [Communication](#communication). - -- **Helping with open issues.** We have a lot of open issues for Ory Keto and - some of them may lack necessary information, some are duplicates of older - issues. You can help out by guiding people through the process of filling out - the issue template, asking for clarifying information, or pointing them to - existing issues that match their description of the problem. - -- **Reviewing documentation changes.** Most documentation just needs a review - for proper spelling and grammar. If you think a document can be improved in - any way, feel free to hit the `edit` button at the top of the page. More info - on contributing to documentation [here](#documentation). - -- **Help with tests.** Some pull requests may lack proper tests or test plans. - These are needed for the change to be implemented safely. - -## Communication - -We use [Slack](https://www.ory.sh/chat). You are welcome to drop in and ask -questions, discuss bugs and feature requests, talk to other users of Ory, etc. - -Check out [Ory Keto Discussions](https://github.com/ory/keto/discussions). This -is a great place for in-depth discussions and lots of code examples, logs and -similar data. - -You can also join our community hangout, if you want to speak to the Ory team -directly or ask some questions. You can find more info on the hangouts in -[Slack](https://www.ory.sh/chat). - -If you want to receive regular notifications about updates to Ory Keto, consider -joining the mailing list. We will _only_ send you vital information on the -projects that you are interested in. - -Also [follow us on twitter](https://twitter.com/orycorp). - -## Contributing Code - -Unless you are fixing a known bug, we **strongly** recommend discussing it with -the core team via a GitHub issue or [in our chat](https://www.ory.sh/chat) -before getting started to ensure your work is consistent with Ory Keto's roadmap -and architecture. - -All contributions are made via pull requests. To make a pull request, you will -need a GitHub account; if you are unclear on this process, see GitHub's -documentation on [forking](https://help.github.com/articles/fork-a-repo) and -[pull requests](https://help.github.com/articles/using-pull-requests). Pull -requests should be targeted at the `master` branch. Before creating a pull -request, go through this checklist: - -1. Create a feature branch off of `master` so that changes do not get mixed up. -1. [Rebase](http://git-scm.com/book/en/Git-Branching-Rebasing) your local - changes against the `master` branch. -1. Run the full project test suite with the `go test -tags sqlite ./...` (or - equivalent) command and confirm that it passes. -1. Run `make format` if a `Makefile` is available, `gofmt -s` if the project is - written in Go, `npm run format` if the project is written for NodeJS. -1. Ensure that each commit has a descriptive prefix. This ensures a uniform - commit history and helps structure the changelog. - Please refer to this - [list of prefixes for Keto](https://github.com/ory/keto/blob/master/.github/semantic.yml) - for an overview. -1. Sign-up with CircleCI so that it has access to your repository with the - branch containing your PR. Simply creating a CircleCI account is sufficient - for the CI jobs to run, you do not need to setup a CircleCI project for the - branch. - -If a pull request is not ready to be reviewed yet -[it should be marked as a "Draft"](https://docs.github.com/en/github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request). - -Before your contributions can be reviewed you need to sign our -[Contributor License Agreement](https://cla-assistant.io/ory/keto). - -This agreement defines the terms under which your code is contributed to Ory. -More specifically it declares that you have the right to, and actually do, grant -us the rights to use your contribution. You can see the Apache 2.0 license under -which our projects are published -[here](https://github.com/ory/meta/blob/master/LICENSE). - -When pull requests fail testing, authors are expected to update their pull -requests to address the failures until the tests pass. - -Pull requests eligible for review - -1. follow the repository's code formatting conventions; -2. include tests which prove that the change works as intended and does not add - regressions; -3. document the changes in the code and/or the project's documentation; -4. pass the CI pipeline; -5. have signed our - [Contributor License Agreement](https://cla-assistant.io/ory/keto); -6. include a proper git commit message following the - [Conventional Commit Specification](https://www.conventionalcommits.org/en/v1.0.0/). - -If all of these items are checked, the pull request is ready to be reviewed and -you should change the status to "Ready for review" and -[request review from a maintainer](https://docs.github.com/en/github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review). - -Reviewers will approve the pull request once they are satisfied with the patch. - -## Documentation - -Please provide documentation when changing, removing, or adding features. -Documentation resides in the project's -[docs](https://github.com/ory/keto/tree/master/docs) folder. Generate API and -configuration reference documentation using `cd docs; npm run gen`. - -For further instructions please head over to -[docs/README.md](https://github.com/ory/keto/blob/master/README.md). - -## Disclosing vulnerabilities - -Please disclose vulnerabilities exclusively to -[security@ory.sh](mailto:security@ory.sh). Do not use GitHub issues. - -## Code Style - -Please follow these guidelines when formatting source code: - -- Go code should match the output of `gofmt -s` and pass `golangci-lint run`. -- NodeJS and JavaScript code should be prettified using `npm run format` where - appropriate. - -### Working with Forks - -``` -# First you clone the original repository -git clone git@github.com:ory/ory/keto.git - -# Next you add a git remote that is your fork: -git remote add fork git@github.com:/ory/keto.git - -# Next you fetch the latest changes from origin for master: -git fetch origin -git checkout master -git pull --rebase - -# Next you create a new feature branch off of master: -git checkout my-feature-branch - -# Now you do your work and commit your changes: -git add -A -git commit -a -m "fix: this is the subject line" -m "This is the body line. Closes #123" - -# And the last step is pushing this to your fork -git push -u fork my-feature-branch -``` - -Now go to the project's GitHub Pull Request page and click "New pull request" - -## Conduct - -Whether you are a regular contributor or a newcomer, we care about making this -community a safe place for you and we've got your back. - -- We are committed to providing a friendly, safe and welcoming environment for - all, regardless of gender, sexual orientation, disability, ethnicity, - religion, or similar personal characteristic. -- Please avoid using nicknames that might detract from a friendly, safe and - welcoming environment for all. -- Be kind and courteous. There is no need to be mean or rude. -- We will exclude you from interaction if you insult, demean or harass anyone. - In particular, we do not tolerate behavior that excludes people in socially - marginalized groups. -- Private harassment is also unacceptable. No matter who you are, if you feel - you have been or are being harassed or made uncomfortable by a community - member, please contact one of the channel ops or a member of the Ory Keto core - team immediately. -- Likewise any spamming, trolling, flaming, baiting or other attention-stealing - behaviour is not welcome. - -We welcome discussion about creating a welcoming, safe, and productive -environment for the community. If you have any questions, feedback, or concerns -[please let us know](https://www.ory.sh/chat). diff --git a/docs/docs/examples/olymp-file-sharing.mdx b/docs/docs/examples/olymp-file-sharing.mdx deleted file mode 100644 index 5525eea68..000000000 --- a/docs/docs/examples/olymp-file-sharing.mdx +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: 'Basic: Olymp Library' ---- - -#### A basic, down-to-earth full feature example - -Consider a file sharing application called "Olymp Library". Each file is stored -in a key-value store, where the key is a UUIDv4 (pseudorandom unique -identifier), while the value is the metadata and content. The application uses -Ory Keto to keep track of ownership and granted access on a per file level. - -:::note - -This example assumes there is a [namespace](../concepts/namespaces.mdx) `files` -with the relations `owner` and `access` defined, where each `owner` of an object -also has `access` to that object. All relation tuples are stored in that -namespace. - -::: - -Now, the user identified by its unique username `demeter` wants to upload a file -containing the most fertile grounds. The file gets assigned the UUID -`ec788a82-a12e-45a4-b906-3e69f78c94e4`. The application adds the following -[relation tuple](../concepts/relation-tuples.mdx) to Ory Keto through the -[write-API](../concepts/api-overview.mdx#write-apis): - -```keto-relation-tuples -ec788a82-a12e-45a4-b906-3e69f78c94e4#owner@demeter -``` - -To prepare for an important meeting with the user `athena`, `demeter` wants to -share the file with fertile grounds with `athena` so that they can both read it. -Therefore, he opens the "Olymp Library" and is presented with a list of all -files he owns. The application will internally request all -[objects](../concepts/objects.mdx) (file IDs) with the owner `demeter` by using -the [list-API](../concepts/api-overview.mdx#list-relation-tuples). The response -will contain the object `ec788a82-a12e-45a4-b906-3e69f78c94e4`, which the -application maps to the file in question. - -The user `demeter` will then ask the application to share the file with -`athena`. The application will translate that request into a -[write-API request](../concepts/api-overview.mdx#write-apis) adding the -following relation tuple to Ory Keto: - -```keto-relation-tuples -ec788a82-a12e-45a4-b906-3e69f78c94e4#access@athena -``` - -To confirm the successful operation, the application uses Ory Keto's -[expand-API](../concepts/api-overview.mdx#expand-subject-sets) to compile a list -of everyone who can access the file: - -```keto-relation-tuples -// The following subject set is expanded by Keto -ec788a82-a12e-45a4-b906-3e69f78c94e4#access -``` - -which returns the expansion tree - -``` -∪ ec788a82-a12e-45a4-b906-3e69f78c94e4#access -├─ ∪ ec788a82-a12e-45a4-b906-3e69f78c94e4#owner -│ ├─ ☘ demeter -├─ ☘ athena -``` - -The "Olymp Library" can then display this information to `demeter`. - -When `athena` wants to get the file containing fertile grounds, the application -uses the [check-API](../concepts/api-overview.mdx#check-relation-tuple) to -verify that `athena` has access to the file before it returns the file. This -will allow `demeter` to revoke `athena`'s access at any point by deleting the -corresponding relation tuple. diff --git a/docs/docs/guides/access-control-inheritance.mdx b/docs/docs/guides/access-control-inheritance.mdx deleted file mode 100644 index 36040c0b4..000000000 --- a/docs/docs/guides/access-control-inheritance.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Inheriting Access Control Rules ---- - -This guide will explain how to implement inheritance of ACL rules using Ory -Keto. It is still work in progress. If you happened to figure this out yourself, -please open a PR to add your findings on this page. diff --git a/docs/docs/guides/access-control-list-design-best-practices.mdx b/docs/docs/guides/access-control-list-design-best-practices.mdx deleted file mode 100644 index 34441063a..000000000 --- a/docs/docs/guides/access-control-list-design-best-practices.mdx +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Best Practices for Designing your Access Control List ---- - -This guide is still a work in progress. Just a general word of warning: - -:::warning - -Avoid too deeply nested subject set indirections (more than ~5). - -::: diff --git a/docs/docs/guides/expand-api-display-who-has-access.mdx b/docs/docs/guides/expand-api-display-who-has-access.mdx deleted file mode 100644 index c1589530a..000000000 --- a/docs/docs/guides/expand-api-display-who-has-access.mdx +++ /dev/null @@ -1,100 +0,0 @@ ---- -title: 'Expand API: Display who has Access to an Object' ---- - -import CodeTabs from '@theme/CodeTabs' - -This guide will explain how to use Ory Keto's expand-API to display who has -access to an object, and why. Please refer to the -[gRPC](../reference/proto-api.mdx) and [REST](../reference/rest-api.mdx) API -reference documentation for all details. In general, the expand-API allows to -expand a given subject set into all its effective subjects. - -## Example - -As an example, we want to look at a file sharing application. Files are -hierarchically organized in a directory structure. Every user owns files and -directories, and can grant any other user access to them on a per-file or -per-directory basis. Users can only see and access files they own or were -granted access by the owner. - -Directories and files are stored in Ory Keto within the `directories` and -`files` namespaces respectively. They are identified by a UUID that the -application maps to the actual object metadata. Users are also identified by and -mapped to a UUID. - -:::info - -For the sake of readability, the code samples use the object path and user name -instead. Please refer to the [objects](../concepts/objects.mdx) and -[subjects](../concepts/subjects.mdx) pages for why the mapping is necessary. - -::: - -### Displaying who has Access - -To assist users with managing permissions for their files, the application has -to display exactly who has access to a file and why. In this example, we assume -that the application knows the following files and directories: - -``` -├─ photos (owner: maureen; shared with laura) - ├─ beach.jpg (owner: maureen) - ├─ mountains.jpg (owner: laura) -``` - -This is represented in Ory Keto by the following -[relation tuples](../concepts/relation-tuples.mdx): - -```keto-relation-tuples -// ownership -directories:/photos#owner@maureen -files:/photos/beach.jpg#owner@maureen -files:/photos/mountains.jpg#owner@laura - -// maureen granted access to /photos to laura -directories:/photos#access@laura - -// the following tuples are defined implicitly through subject set rewrites (not supported yet) -directories:/photos#access@(directories:/photos#owner) -files:/photos/beach.jpg#access@(files:/photos/beach.jpg#owner) -files:/photos/beach.jpg#access@(directories:/photos#access) -files:/photos/mountains.jpg#access@(files:/photos/mountains.jpg#owner) -files:/photos/mountains.jpg#access@(directories:/photos#access) - -// the follwoing tuples are required to allow the subject set rewrites (not supported yet) -directories:/photos#parent@(files:/photos/beach.jpg#_) -directories:/photos#parent@(files:/photos/mountains.jpg#_) -``` - -The user `maureen` now wants to manage `access` for the file -`/photos/beach.jpg`. Therefore, the application uses the expand-API to get a -tree of everyone who has access to that file: - - - -### Maximum Tree Depth - -The `max-depth` parameter is important to keep the request latency within an -acceptable bound, but also abstract away the most basic subject sets. In many -cases the application does not want to resolve all subject sets, but rather -wants to display that e.g. `Everyone in the company` or `Admins` have a specific -relation. - -In this example the application knows the rough structure of the relation tuples -it uses and can therefore determine that `max-depth=3` is sufficient to display -all relevant relations: - -1. directly granted access (depth 1) -2. indirectly granted access through ownership (depth 2) -3. indirectly granted access through ownership of the parent (depth 3) - -### Analyzing the Tree - -The tree does not only include the subject IDs (in this case usernames), but -also for what reason they were included. This can be useful for users to audits -permissions. Also, in many cases the application would not want to list all -subject IDs but rather abstract away some subject sets. diff --git a/docs/docs/guides/list-api-display-objects.mdx b/docs/docs/guides/list-api-display-objects.mdx deleted file mode 100644 index 2e684c198..000000000 --- a/docs/docs/guides/list-api-display-objects.mdx +++ /dev/null @@ -1,129 +0,0 @@ ---- -title: 'List API: Display all Objects a User has Access to' ---- - -import CodeTabs from '@theme/CodeTabs' - -In this guide you will learn how to use Ory Keto's list API to display a list of -all objects (e.g. files, ...) a user has access to. Please refer to the -[gRPC](../reference/proto-api.mdx) and [REST](../reference/rest-api.mdx) API -reference documentation for all details. In general, the list API allows you to -query relation tuples based on partial relation tuples. - -## Example - -As an example, we want to look at a chat application. Every user is part of one -or more chats, and each chat has one or more members. - -Chats are stored in Ory Keto within the `chats` namespace. They are identified -by a UUID that the application maps to the actual object metadata. Users are -also identified by and mapped to a UUID. - -:::info - -For the sake of readability, the code samples use the name of the chat and -username instead of the UUIDs. Please refer to the -[objects](../concepts/objects.mdx) and [subjects](../concepts/subjects.mdx) -pages for why the mapping is necessary. - -::: - -### Listing Objects - -Our example application allows users to browse the chats they belong to. To -achieve that, it uses Ory Keto's list API. - -We assume that the application currently has the following chats: - -```yml -memes: - members: - - PM - - Vincent - - Julia -cars: - members: - - PM - - Julia -coffee-break: - members: - - PM - - Vincent - - Julia - - Patrik -``` - -This is represented in Ory Keto by the following -[relation tuples](../concepts/relation-tuples.mdx): - -```keto-relation-tuples -chats:memes#member@PM -chats:memes#member@Vincent -chats:memes#member@Julia - -chats:cars#member@PM -chats:cars#member@Julia - -chats:coffee-break#member@PM -chats:coffee-break#member@Vincent -chats:coffee-break#member@Julia -chats:coffee-break#member@Patrik -``` - -The user `PM` now opens the chat application. To display a list of all of `PM`'s -chats, the application uses Keto's list API: - - - -As a response, the application gets the list of all chats the user `PM` is a -member of. It can then use the information to build the UI. - -### Listing Subjects - -Another view of the chat application has to display all members of a specific -group to the user. This can also be achieved using the list API. In cases where -such a membership would be modeled through -[subject sets](../concepts/subjects.mdx#subject-sets), you have to use the -[expand-API](./expand-api-display-who-has-access.mdx). - -:::caution - -In this case the application should probably first use the -[check-API](./simple-access-check-guide.mdx) to check whether the user is -allowed to list the members of a group. This step is not part of this example. - -::: - -In our example, a user wants to see who is a member of the `coffee-break` group: - - - -## Application Context - -It is important to note that the list API does **not** expand -[subject sets](../concepts/subjects.mdx#subject-sets). Usually the application -has some context to determine what tuples to query anyway. That could be e.g. -knowledge of the structure of subject sets like depth or hierarchy, or the UI -context, like a "My Items" view which should probably contain other objects than -a "My Organizations" or "Shared with Me" views. If there really is no way to -narrow down a query, you will have to use the -[expand-API](./expand-api-display-who-has-access) instead, or repeatedly call -the list API. Try to avoid such cases because they require a lot of resources -and can quickly degrade the service quality for all users. Please refer to the -[performance considerations](../performance.mdx). - -## Pagination - -The list API only returns paginated results. Currently, it is not possible to -customize the order of results. The response returns an opaque token that has to -be used to retrieve the following page. The first page can be retrieved by -passing no, or an empty token. - -The page size can be adjusted at any point, not only when requesting the first -page. It defaults to 100 items. diff --git a/docs/docs/guides/production.md b/docs/docs/guides/production.md deleted file mode 100644 index 97962b3a6..000000000 --- a/docs/docs/guides/production.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -id: production -title: Going to Production ---- - -:::warning - -This document is still in development. - -::: - -## Database - -ORY Keto requires a production-grade database such as PostgreSQL, MySQL, -CockroachDB. Do not use SQLite in production! - -### Write API - -Never expose the ORY Keto Write API to the internet unsecured. Always require -authorization. A good practice is to not expose the Write API at all to the -public internet and use a Zero Trust Networking Architecture within your -intranet. - -## Scaling - -There are no additional requirements for scaling ORY Keto, just spin up another -container! diff --git a/docs/docs/guides/rbac.mdx b/docs/docs/guides/rbac.mdx deleted file mode 100644 index 52083459e..000000000 --- a/docs/docs/guides/rbac.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Role Based Access Control (RBAC) ---- - -This guide will explain how to implement RBAC using Ory Keto. It is still work -in progress. If you happened to figure this out yourself, please open a PR to -add your findings on this page. diff --git a/docs/docs/guides/simple-access-check-guide.mdx b/docs/docs/guides/simple-access-check-guide.mdx deleted file mode 100644 index f61f03744..000000000 --- a/docs/docs/guides/simple-access-check-guide.mdx +++ /dev/null @@ -1,144 +0,0 @@ ---- -title: Check whether a User has Access to Something ---- - -import Mermaid from '@theme/Mermaid' -import CodeTabs from '@theme/CodeTabs' - -This guide will explain how you can use Ory Keto's -[check-API](../concepts/api-overview.mdx#check-relation-tuple) to determine -whether a [subject](../concepts/subjects.mdx) has a specific -[relation](../concepts/relation-tuples.mdx) on an -[object](../concepts/objects.mdx). The result can be used for controlling access -to specific resources. - -## Synchronous Authorization Flow - -We recommend offloading the whole burden of access control to Ory Keto. -Typically, this means that the application forwards every incoming request as a -check request to Ory Keto. The following chart demonstrates how such a flow can -look like: - ->A: decypher(02y_15_4w350m3) - A->>K: check(messages:02y_15_4w350m3#35;decypher@john) -%% - alt is allowed - K-->>A: true - A-->>U: ory_is_awesome - else is not allowed - K-->>A: false - A-->>U: Error 403 - end -`} -/> - -Note that the channel of communication between user <-> application, and -application <-> Ory Keto can vastly differ. The application could offer a JSON -API towards the user, while communicating with Keto through gRPC. - -As a first step, the application has to authenticate the user reliably to -provide the subject to Keto. This can be achieved e.g. by using -[Ory Kratos](https://www.ory.sh/kratos/docs/) or any other authentication -system. - -The request (here `decypher` of the message `02y_15_4w350m3`) is then translated -into a request to Ory Keto's -[check-API](../concepts/api-overview.mdx#check-relation-tuple). Basically, the -application is asking Keto "Is john allowed to decypher the text -02y_15_4w350m3?" - -This question is encoded as the following -[relation tuple](../concepts/relation-tuples.mdx): - -```keto-relation-tuples -messages:02y_15_4w350m3#decypher@john -``` - -:::caution Important - -It is up to the application and its defined relation tuples how the check -requests have to be encoded. In this example we assume that the known cypher -messages are stored in Ory Keto and access to the cleartext is encoded by the -`decypher` relation. - -::: - -### Directly Defined Access - -Ory Keto can know the exact relation tuple that the application is checking. -Intuitively, this means that `john` was allowed to `decypher` the message -`02y_15_4w350m3` directly (imagine a "Share with `john`" input in a UI). - -Try this yourself by first adding the relation tuple using the -[write API](../concepts/api-overview.mdx#write-apis): - - - -Now, we can use the check-API to verify that `john` is allowed to `decypher` the -message: - - - -### Indirectly Defined Access - -On the other hand, it is possible to indirectly grant `john` access to the -resource. This could e.g. be done by adding a group, lets call it `hackers`. Now -we can grant access to the resource to everyone in that group by adding the -following relation tuple to Ory Keto: - -```keto-relation-tuples -messages:02y_15_4w350m3#decypher@(groups:hackers#member) -``` - -We also have to make `john` a `member` of `hackers` by adding the relation -tuple: - -```keto-relation-tuples -groups:hackers#member@john -``` - -Now, when Keto receives above check request, it will resolve the -[subject set](../concepts/subjects.mdx#subject-sets) - -```keto-relation-tuples -groups:hackers#member -``` - -and determine that `john` is a subject in the resulting set. Therefore, it -approves the check request. - -There is no limit on the number of indirections through subject sets. It is -however important to follow our -[best practices](./access-control-list-design-best-practices.mdx) to ensure a -good [performance](../performance.mdx). - -## Caching Keto's responses - -We do not recommend that you cache the responses from Ory Keto. It is designed -to respond quickly and still provide -[some consistency guarantees](../concepts/snaptokens-evaluation-consistency.mdx). -Especially, for the revocation of access it is important to not use a local -cache. Be ensured that Ory Keto heavily utilizes caching wherever possible. If -you still happen to find unacceptably slow check requests, check that you follow -our [best practices](./access-control-list-design-best-practices.mdx) for good -[performance](../performance.mdx), or open an issue if the problem still -persists. - -## Conclusion - -We learned how to integrate check requests and access control into an -application using Ory Keto's -[check-API](../concepts/api-overview.mdx#check-relation-tuple). diff --git a/docs/docs/guides/v0.7-migration.mdx b/docs/docs/guides/v0.7-migration.mdx deleted file mode 100644 index 827db4023..000000000 --- a/docs/docs/guides/v0.7-migration.mdx +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: Migrating to Keto v0.7 ---- - -Ory Keto v0.6 used the table-separated namespaces database schema described in -the [Google Zanzibar paper](https://research.google/pubs/pub48190/). However, we -found for various reasons outlined in -[#613](https://github.com/ory/keto/issues/613) that this is not ideal for Keto. - -Because the database schema changed significantly, and it is not possible to -have SQL-only migrations, there is a special migration procedure needed to -upgrade Ory Keto v0.6. - -## Preparations - -:::danger - -As always with database migrations, please make a backup of your data and try -the migration process first on a non-production copy of the database. - -::: - -This migration has to download all the data from the database, transform them, -and then write them back to the database. Make sure that you run it as close to -the database as possible to reduce the latency and failure rate. In case of a -failure, just restart the process. It is run as one big SQL transaction. - -## Recommended Procedure - -:::caution - -This is the **recommended** procedure. Please adjust to your setup and **test** -before applying to a production system. You might want to create a migration -script that applies all these steps and handles errors. - -::: - -This procedure is zero-downtime only for read API requests. The write API will -not be available during migration. - -1. Create a new database user (from now on `keto_new`) with the same privileges - as the one used until now (let's say it was `keto`). -2. Start a server instance of Keto v0.7 next to the already running Keto v0.6. - It should have the same settings, but use `keto_new` for accessing the - database. -3. Change the privileges of `keto` to be read-only on all tables. -4. Still route all traffic to the old Keto. Write API requests will fail from - now on, but the Read API will be zero-downtime. -5. Run `keto migrate up --yes` considering the points raised in - [preparations](#preparations). This command will apply SQL schema changes, - but not yet migrate data. -6. Run `keto namespace migrate legacy --yes` considering the points raised in - [preparations](#preparations). This command will migrate **all** namespaces - **and** delete the old tables on success. -7. In case of failure, re-run the command until it succeeds. -8. In case of log statements stating - `Skipping relation tuple, it seems to be in a broken state. Please recreate it manually.` - note down the logged data somewhere and recreate the relation tuples in - question once the migration is done using the API. -9. After the migration is successfully done, route all traffic to Keto v0.7 and - shut down Keto v0.6. At this point the API is fully operational again. - -## Options for Adjusting the Migration Process - -The `keto namespace migrate legacy` command supports multiple options: - -- interactive mode with manual approval by not specifying `--yes` -- migrate single namespace by specifying its name as an argument -- only delete old tables by specifying `--down-only`; useful if you did not - approve the down migration previously diff --git a/docs/docs/implemented-planned-features.mdx b/docs/docs/implemented-planned-features.mdx deleted file mode 100644 index eb7917d64..000000000 --- a/docs/docs/implemented-planned-features.mdx +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Implemented and Planned Features ---- - -In October 2020 we decided to rewrite Ory Keto from scratch, implementing -state-of-the-art access control and permissions. We decided to make Ory Keto the -first Open Source implementation of -[Google's Zanzibar paper](https://research.google/pubs/pub48190/). - -This document gives an overview of all implemented and planned features. -Unfortunately we cannot give delivery time estimates for Open Source products, -but you can help us to accelerate development by -[supporting Ory](https://opencollective.com/ory). - -## Implemented Features - -- [Read-API](https://github.com/ory/keto/pull/269) -- [Write-API](https://github.com/ory/keto/pull/275) -- [Check-API](https://github.com/ory/keto/pull/277) -- [Expand-API](https://github.com/ory/keto/pull/285) -- [Namespaces](https://github.com/ory/keto/pull/324) - -## Next Upcoming Features - -- [Subject Set rewrites](https://github.com/ory/keto/issues/263) -- [Native ABAC & RBAC Support](https://github.com/ory/keto/issues/319) -- [Integration with other policy servers](https://github.com/ory/keto/issues/318) - -## Planned Features - -- [Database sharding](https://github.com/ory/keto/issues/306) -- [Namespace-specific database settings](https://github.com/ory/keto/issues/303) -- [Cockroach optimized persistence layer](https://github.com/ory/keto/issues/504) -- [Latency reduction through aggressive caching](https://github.com/ory/keto/issues/312) - -... and many more, tracked as [issues](https://github.com/ory/keto/issues) diff --git a/docs/docs/index.md b/docs/docs/index.md deleted file mode 100644 index 141340a3c..000000000 --- a/docs/docs/index.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -id: index -slug: / -title: Introduction ---- - -Ory Keto is the first and only open source implementation of "Zanzibar: Google's -Consistent, Global Authorization System": - -> Determining whether online users are authorized to access digital objects is -> central to preserving privacy. This paper presents the design, implementation, -> and deployment of Zanzibar, a global system for storing and evaluating access -> control lists. Zanzibar provides a uniform data model and configuration -> language for expressing a wide range of access control policies from hundreds -> of client services at Google, including Calendar, Cloud, Drive, Maps, Photos, -> and YouTube. Its authorization decisions respect causal ordering of user -> actions and thus provide external consistency amid changes to access control -> lists and object contents. Zanzibar scales to trillions of access control -> lists and millions of authorization requests per second to support services -> used by billions of people. It has maintained 95th-percentile latency of less -> than 10 milliseconds and availability of greater than 99.999% over 3 years of -> production use. -> -> [Source](https://research.google/pubs/pub48190/) - -If you need to know if a user (or robot, car, service) is allowed to do -something - Ory Keto is the right fit for you. - -Currently, Ory Keto implements the basic API contracts for managing and checking -relations ("permissions") with HTTP and gRPC APIs. Future versions will include -features such as userset rewrites (e.g. RBAC-style role-permission models), -Zookies, and more. An overview of what is implemented and upcoming can be found -at [Implemented and Planned Features](implemented-planned-features.mdx). diff --git a/docs/docs/install.md b/docs/docs/install.md deleted file mode 100644 index 8d4def870..000000000 --- a/docs/docs/install.md +++ /dev/null @@ -1,84 +0,0 @@ ---- -id: install -title: Installation ---- - -Installing Ory Keto on any system is straightforward. We provide pre-built -binaries, Docker images, and support a number of package managers. - -## Docker - -We recommend using Docker to run Ory Keto: - -```shell -$ docker pull oryd/keto:v0.7.0-alpha.1 -$ docker run --rm -it oryd/keto:v0.7.0-alpha.1 help -``` - -## macOS - -You can install Ory Keto using [homebrew](https://brew.sh/) on macOS: - -```shell -$ brew tap ory/keto -$ brew install ory/keto/keto -$ keto help -``` - -## Linux - -On linux, you can use `bash <(curl ...)` to fetch the latest stable binary -using: - -```shell -$ bash <(curl https://raw.githubusercontent.com/ory/keto/master/install.sh) -b . v0.7.0-alpha.1 -$ ./keto help -``` - -You may want to move Ory Keto into your `$PATH`: - -```shell -$ sudo mv ./keto /usr/local/bin/ -$ keto help -``` - -## Windows - -You can install Ory Keto using [scoop](https://scoop.sh) on Windows: - -```shell -> scoop bucket add ory-keto https://github.com/ory/scoop-keto.git -> scoop install keto -> keto help -``` - -## Download Binaries - -The client and server **binaries are downloadable via -[GitHub releases](https://github.com/ory/keto/releases)**. There is currently no -installer available. You have to add the Keto binary to the PATH environment -variable yourself or put the binary in a location that is already in your -`$PATH`, for example `/usr/local/bin`. - -Once installed, you should be able to run: - -```shell -$ keto help -``` - -## Building from Source - -If you wish to compile Ory Keto yourself, you need to install and set up -[Go 1.16+](https://golang.org/) and add `$GOPATH/bin` to your `$PATH`. - -The following commands check out the latest release tag of Ory Keto, compile it, -and set up flags so that `keto version` works as expected. Please note that this -will only work with a Linux shell like bash or sh. - -```shell -$ git clone https://github.com/ory/keto.git -$ cd keto -$ git checkout v0.7.0-alpha.1 -$ make install -$ keto help -``` diff --git a/docs/docs/milestones.md b/docs/docs/milestones.md deleted file mode 100644 index 9aa961c94..000000000 --- a/docs/docs/milestones.md +++ /dev/null @@ -1,457 +0,0 @@ ---- -id: milestones -title: Milestones and Roadmap ---- - -## [v0.8.0](https://github.com/ory/keto/milestone/6) - -_This milestone does not have a description._ - -### [Bug](https://github.com/ory/keto/labels/bug) - -Something is not working. - -#### Issues - -- [ ] Query relation tuples API returns 500 when no subject parameter present - ([keto#601](https://github.com/ory/keto/issues/601)) -- [ ] Expand API behaves weirdly when no object is specified - ([keto#608](https://github.com/ory/keto/issues/608)) - - [@Patrik](https://github.com/zepatrik) -- [ ] Doc and implement do not match for delete tuple REST API. - ([keto#695](https://github.com/ory/keto/issues/695)) - - [@Patrik](https://github.com/zepatrik) -- [x] docker compose files using invalid migrate syntax - ([keto#773](https://github.com/ory/keto/issues/773)) - -### [Feat](https://github.com/ory/keto/labels/feat) - -New feature or request. - -#### Issues - -- [ ] Automatic Subject/Object encoding - ([keto#792](https://github.com/ory/keto/issues/792)) -- [x] Bulk deletion of relation tuples - ([keto#599](https://github.com/ory/keto/issues/599)) - -### [Rfc](https://github.com/ory/keto/labels/rfc) - -A request for comments to discuss and share ideas. - -#### Issues - -- [ ] Document best practices on how to check permissions for inserting/creating - an object ([keto#728](https://github.com/ory/keto/issues/728)) -- [x] Bulk deletion of relation tuples - ([keto#599](https://github.com/ory/keto/issues/599)) - -## [v0.7.0](https://github.com/ory/keto/milestone/5) - -The biggest change for the next release will be the new SQL table structure -(https://github.com/ory/keto/pull/638). The main goal is to improve the QoS, big -features are planned for the next release. - -### [Bug](https://github.com/ory/keto/labels/bug) - -Something is not working. - -#### Issues - -- [x] Check valid relation-tuple characters on insert - ([keto#661](https://github.com/ory/keto/issues/661)) -- [x] Keto version API does not work in REST API and CLI. - ([keto#696](https://github.com/ory/keto/issues/696)) - - [@Patrik](https://github.com/zepatrik) -- [x] Keto patch relation tuple REST API panic rather than return bad request - for wrong input. ([keto#706](https://github.com/ory/keto/issues/706)) - - [@Patrik](https://github.com/zepatrik) -- [x] Change REST API to not work with encoded subjects - ([keto#708](https://github.com/ory/keto/issues/708)) -- [x] Config schema: replace `ory://*` references with something actually - resolvable ([keto#719](https://github.com/ory/keto/issues/719)) - - [@Patrik](https://github.com/zepatrik) -- [x] Docker files and docker-compose.yml do not work on master - ([keto#725](https://github.com/ory/keto/issues/725)) - - [@Patrik](https://github.com/zepatrik) - -### [Feat](https://github.com/ory/keto/labels/feat) - -New feature or request. - -#### Issues - -- [x] Ensure telemetry is running for GRPC - ([keto#298](https://github.com/ory/keto/issues/298)) - - [@hackerman](https://github.com/aeneasr), - [@Patrik](https://github.com/zepatrik), - [@Robin Brämer](https://github.com/robinbraemer) -- [x] Single table migration: run as one big transaction - ([keto#734](https://github.com/ory/keto/issues/734)) - - [@Patrik](https://github.com/zepatrik) - -### [Blocking](https://github.com/ory/keto/labels/blocking) - -Blocks milestones or other issues or pulls. - -#### Issues - -- [x] Ensure telemetry is running for GRPC - ([keto#298](https://github.com/ory/keto/issues/298)) - - [@hackerman](https://github.com/aeneasr), - [@Patrik](https://github.com/zepatrik), - [@Robin Brämer](https://github.com/robinbraemer) -- [x] Config schema: replace `ory://*` references with something actually - resolvable ([keto#719](https://github.com/ory/keto/issues/719)) - - [@Patrik](https://github.com/zepatrik) -- [x] Docker files and docker-compose.yml do not work on master - ([keto#725](https://github.com/ory/keto/issues/725)) - - [@Patrik](https://github.com/zepatrik) - -## [Next Gen Keto - first working version](https://github.com/ory/keto/milestone/4) - -Goals: - -- check/expand/read/write APIs -- SQL persistence (only local database) -- operation using one node in one data center -- namespace configuration including subject set rewrites - -Non-goals: - -- watch API -- caching -- fan-out -- Leopard indexing system -- fancy query features - -### [Bug](https://github.com/ory/keto/labels/bug) - -Something is not working. - -#### Issues - -- [x] CLI remote flag should be required - ([keto#287](https://github.com/ory/keto/issues/287)) - - [@Patrik](https://github.com/zepatrik) -- [x] REST Relations API returns null instead of `[]` - ([keto#289](https://github.com/ory/keto/issues/289)) - - [@Patrik](https://github.com/zepatrik) -- [x] REST API create relation should mirror payload in 201 OK response - ([keto#290](https://github.com/ory/keto/issues/290)) - - [@Patrik](https://github.com/zepatrik) -- [x] REST API create and subsequent get relation does not properly persist - fields ([keto#291](https://github.com/ory/keto/issues/291)) - - [@Patrik](https://github.com/zepatrik) -- [x] Unable to create relations using REST API and string notation - ([keto#293](https://github.com/ory/keto/issues/293)) - - [@Patrik](https://github.com/zepatrik) -- [x] Replace in-memory persister with SQLite schema - ([keto#294](https://github.com/ory/keto/issues/294)) - - [@Patrik](https://github.com/zepatrik) -- [x] Write GRPC handler and tests for check engine - ([keto#296](https://github.com/ory/keto/issues/296)) - - [@Patrik](https://github.com/zepatrik), - [@Robin Brämer](https://github.com/robinbraemer) -- [x] Remove `config.Provider` interface - ([keto#403](https://github.com/ory/keto/issues/403)) - - [@Patrik](https://github.com/zepatrik) -- [x] Abort early in subjectIsAllowed - ([keto#405](https://github.com/ory/keto/issues/405)) - - [@Patrik](https://github.com/zepatrik) -- [x] Check REST API should return JSON Object - ([keto#406](https://github.com/ory/keto/issues/406)) - - [@Patrik](https://github.com/zepatrik) -- [x] Clarify where handlers are tested - ([keto#407](https://github.com/ory/keto/issues/407)) - - [@Patrik](https://github.com/zepatrik) -- [x] Write relationtuple tests - ([keto#408](https://github.com/ory/keto/issues/408)) - - [@Patrik](https://github.com/zepatrik) -- [x] Write dedicated persistence tests - ([keto#409](https://github.com/ory/keto/issues/409)) - - [@Patrik](https://github.com/zepatrik) -- [x] Persistence errors are not properly handled and wrapped - ([keto#432](https://github.com/ory/keto/issues/432)) - - [@Patrik](https://github.com/zepatrik) -- [x] Non-nil return values despite errors - ([keto#433](https://github.com/ory/keto/issues/433)) - - [@Patrik](https://github.com/zepatrik) -- [x] Don't use fmt.Sprintf to construct queries - ([keto#434](https://github.com/ory/keto/issues/434)) - - [@Patrik](https://github.com/zepatrik) -- [x] Make errors debuggable and understandable - ([keto#438](https://github.com/ory/keto/issues/438)) - - [@Patrik](https://github.com/zepatrik) -- [x] Command status --block is not blocking until healthy - ([keto#456](https://github.com/ory/keto/issues/456)) - - [@Patrik](https://github.com/zepatrik) - -### [Feat](https://github.com/ory/keto/labels/feat) - -New feature or request. - -#### Issues - -- [x] Write relationtuple tests for http and grpc handlers - ([keto#297](https://github.com/ory/keto/issues/297)) - - [@Patrik](https://github.com/zepatrik), - [@Robin Brämer](https://github.com/robinbraemer) -- [x] Define and architect SQL schema and queries for querying relations - ([keto#300](https://github.com/ory/keto/issues/300)) - - [@Patrik](https://github.com/zepatrik) -- [x] Move buf configs to project root - ([keto#399](https://github.com/ory/keto/issues/399)) - - [@Patrik](https://github.com/zepatrik) -- [x] Follow buf style guide - ([keto#400](https://github.com/ory/keto/issues/400)) - - [@Patrik](https://github.com/zepatrik) -- [x] Remove stale protobuf definitions - ([keto#401](https://github.com/ory/keto/issues/401)) - - [@Patrik](https://github.com/zepatrik) -- [x] Relation Tuple Migrations should not be hardcoded but use prefixed tables - ([keto#404](https://github.com/ory/keto/issues/404)) - - [@Patrik](https://github.com/zepatrik) -- [x] Use `errors.WithStack` where ever non-keto code returns errors. - ([keto#437](https://github.com/ory/keto/issues/437)) - - [@Patrik](https://github.com/zepatrik) -- [x] Allow deletion of relation tuples - ([keto#452](https://github.com/ory/keto/issues/452)) - - [@Patrik](https://github.com/zepatrik) -- [x] Add tracing and metrics (prometheus/jaeger/...) capabilities - ([keto#463](https://github.com/ory/keto/issues/463)) - - [@Andreas Bucksteeg](https://github.com/tricky42), - [@Piotr Mścichowski](https://github.com/piotrmsc) -- [x] Namespace migrate status command - ([keto#502](https://github.com/ory/keto/issues/502)) - - [@Patrik](https://github.com/zepatrik) - -### [Blocking](https://github.com/ory/keto/labels/blocking) - -Blocks milestones or other issues or pulls. - -#### Issues - -- [x] Define and architect SQL schema and queries for querying relations - ([keto#300](https://github.com/ory/keto/issues/300)) - - [@Patrik](https://github.com/zepatrik) -- [x] Ensure goreleaser config is still working - ([keto#410](https://github.com/ory/keto/issues/410)) - - [@hackerman](https://github.com/aeneasr) -- [x] Next Gen Documentation - ([keto#420](https://github.com/ory/keto/issues/420)) - - [@Patrik](https://github.com/zepatrik) -- [x] Add health check and version endpoints to read/write REST (and gRPC?) API - ([keto#422](https://github.com/ory/keto/issues/422)) - - [@Patrik](https://github.com/zepatrik) -- [x] SQL: make strings variable length - ([keto#430](https://github.com/ory/keto/issues/430)) -- [x] Persistence errors are not properly handled and wrapped - ([keto#432](https://github.com/ory/keto/issues/432)) - - [@Patrik](https://github.com/zepatrik) -- [x] Non-nil return values despite errors - ([keto#433](https://github.com/ory/keto/issues/433)) - - [@Patrik](https://github.com/zepatrik) -- [x] Don't use fmt.Sprintf to construct queries - ([keto#434](https://github.com/ory/keto/issues/434)) - - [@Patrik](https://github.com/zepatrik) -- [x] Add golangci-lint with gosec linter - ([keto#435](https://github.com/ory/keto/issues/435)) - - [@Patrik](https://github.com/zepatrik) -- [x] Use `errors.WithStack` where ever non-keto code returns errors. - ([keto#437](https://github.com/ory/keto/issues/437)) - - [@Patrik](https://github.com/zepatrik) -- [x] Make errors debuggable and understandable - ([keto#438](https://github.com/ory/keto/issues/438)) - - [@Patrik](https://github.com/zepatrik) -- [x] Allow deletion of relation tuples - ([keto#452](https://github.com/ory/keto/issues/452)) - - [@Patrik](https://github.com/zepatrik) -- [x] Command status --block is not blocking until healthy - ([keto#456](https://github.com/ory/keto/issues/456)) - - [@Patrik](https://github.com/zepatrik) -- [x] Namespace migrate status command - ([keto#502](https://github.com/ory/keto/issues/502)) - - [@Patrik](https://github.com/zepatrik) - -#### Pull Requests - -- [x] feat: first API draft and generation - ([keto#315](https://github.com/ory/keto/pull/315)) - - [@Patrik](https://github.com/zepatrik), - [@Robin Brämer](https://github.com/robinbraemer) - -### [Rfc](https://github.com/ory/keto/labels/rfc) - -A request for comments to discuss and share ideas. - -#### Issues - -- [x] Consider rename WriteRelationTuples in WriteService - ([keto#351](https://github.com/ory/keto/issues/351)) - - [@Patrik](https://github.com/zepatrik), - [@Robin Brämer](https://github.com/robinbraemer) -- [x] Allow deletion of relation tuples - ([keto#452](https://github.com/ory/keto/issues/452)) - - [@Patrik](https://github.com/zepatrik) - -#### Pull Requests - -- [x] feat: first API draft and generation - ([keto#315](https://github.com/ory/keto/pull/315)) - - [@Patrik](https://github.com/zepatrik), - [@Robin Brämer](https://github.com/robinbraemer) - -## [Next Gen Keto - next milestone](https://github.com/ory/keto/milestone/3) - -Tracks all the issues contributing to next gen Keto. - -### [Bug](https://github.com/ory/keto/labels/bug) - -Something is not working. - -#### Issues - -- [ ] Relations are not unique - ([keto#292](https://github.com/ory/keto/issues/292)) - - [@Patrik](https://github.com/zepatrik) -- [x] Move models package to relations - ([keto#295](https://github.com/ory/keto/issues/295)) - - [@Patrik](https://github.com/zepatrik) -- [x] Handle circular relation tuples - ([keto#411](https://github.com/ory/keto/issues/411)) - - [@Patrik](https://github.com/zepatrik) -- [x] Listing relation tuples where none match cause SQL error - ([keto#439](https://github.com/ory/keto/issues/439)) - - [@Patrik](https://github.com/zepatrik) - -### [Feat](https://github.com/ory/keto/labels/feat) - -New feature or request. - -#### Issues - -- [ ] Define naming conventions for objects, relations, namespaces - ([keto#288](https://github.com/ory/keto/issues/288)) - - [@Patrik](https://github.com/zepatrik) -- [ ] Database sharding ([keto#306](https://github.com/ory/keto/issues/306)) - - [@Patrik](https://github.com/zepatrik) -- [ ] Integrate Next Gen Keto with wider policy ecosystems / Open Policy Agent - ([keto#318](https://github.com/ory/keto/issues/318)) - - [@hackerman](https://github.com/aeneasr) -- [ ] Allow defining ABAC relation tuples - ([keto#319](https://github.com/ory/keto/issues/319)) -- [ ] Allow narrowed ACL evaluation in check requests - ([keto#323](https://github.com/ory/keto/issues/323)) -- [ ] Allow modifying relation tuples with consistency guarantees - ([keto#328](https://github.com/ory/keto/issues/328)) - - [@Robin Brämer](https://github.com/robinbraemer) -- [ ] Add TTL support to relation tuple - ([keto#346](https://github.com/ory/keto/issues/346)) -- [ ] [next-gen] Allow defining userset rewrites - ([keto#263](https://github.com/ory/keto/issues/263)) - - [@Patrik](https://github.com/zepatrik) -- [ ] Namespace configuration - ([keto#303](https://github.com/ory/keto/issues/303)) - - [@Patrik](https://github.com/zepatrik) -- [x] Remove support for AND/OR/XOR in GetRelationTuples - ([keto#299](https://github.com/ory/keto/issues/299)) - - [@Patrik](https://github.com/zepatrik) -- [x] Write benchmark tests for relationtuple package - ([keto#301](https://github.com/ory/keto/issues/301)) - - [@Patrik](https://github.com/zepatrik) -- [x] Rewrite check engine to search the graph in the other direction - ([keto#302](https://github.com/ory/keto/issues/302)) - - [@Patrik](https://github.com/zepatrik) - -### [Blocking](https://github.com/ory/keto/labels/blocking) - -Blocks milestones or other issues or pulls. - -#### Issues - -- [ ] Namespace configuration - ([keto#303](https://github.com/ory/keto/issues/303)) - - [@Patrik](https://github.com/zepatrik) -- [x] Write benchmark tests for relationtuple package - ([keto#301](https://github.com/ory/keto/issues/301)) - - [@Patrik](https://github.com/zepatrik) -- [x] Protobuf APIs & tooling - ([keto#311](https://github.com/ory/keto/issues/311)) - - [@Patrik](https://github.com/zepatrik), - [@Robin Brämer](https://github.com/robinbraemer) -- [x] Listing relation tuples where none match cause SQL error - ([keto#439](https://github.com/ory/keto/issues/439)) - - [@Patrik](https://github.com/zepatrik) -- [x] Use fizz migrations to generate SQL migrations - ([keto#448](https://github.com/ory/keto/issues/448)) - - [@Patrik](https://github.com/zepatrik) - -#### Pull Requests - -- [x] chore: make all go packages internal - ([keto#313](https://github.com/ory/keto/pull/313)) - -### [Rfc](https://github.com/ory/keto/labels/rfc) - -A request for comments to discuss and share ideas. - -#### Issues - -- [ ] Distributed cache: loading and coordination - ([keto#312](https://github.com/ory/keto/issues/312)) -- [ ] Integrate Next Gen Keto with wider policy ecosystems / Open Policy Agent - ([keto#318](https://github.com/ory/keto/issues/318)) - - [@hackerman](https://github.com/aeneasr) -- [ ] Allow defining ABAC relation tuples - ([keto#319](https://github.com/ory/keto/issues/319)) -- [ ] Allow narrowed ACL evaluation in check requests - ([keto#323](https://github.com/ory/keto/issues/323)) -- [ ] Allow modifying relation tuples with consistency guarantees - ([keto#328](https://github.com/ory/keto/issues/328)) - - [@Robin Brämer](https://github.com/robinbraemer) -- [x] Design decisions, Clarifications and Proposals - ([keto#307](https://github.com/ory/keto/issues/307)) - - [@hackerman](https://github.com/aeneasr), - [@Patrik](https://github.com/zepatrik) -- [x] Handle circular relation tuples - ([keto#411](https://github.com/ory/keto/issues/411)) - - [@Patrik](https://github.com/zepatrik) - -## [next](https://github.com/ory/keto/milestone/2) - -_This milestone does not have a description._ - -### [Bug](https://github.com/ory/keto/labels/bug) - -Something is not working. - -#### Issues - -- [x] Slash (/) in role or policy id causes 404 error for GET and DELETE - ([keto#140](https://github.com/ory/keto/issues/140)) -- [x] Keto is posting plain text passwords when there is an issue with DSN - ([keto#237](https://github.com/ory/keto/issues/237)) - -### [Feat](https://github.com/ory/keto/labels/feat) - -New feature or request. - -#### Issues - -- [x] Roles and Policies Filter by using flavor strategy - ([keto#186](https://github.com/ory/keto/issues/186)) -- [x] Evaluate queries needs to get the entire database in cache to works - ([keto#187](https://github.com/ory/keto/issues/187)) -- [x] Add a description attribute to access control policy role - ([keto#213](https://github.com/ory/keto/issues/213)) - -### [Rfc](https://github.com/ory/keto/labels/rfc) - -A request for comments to discuss and share ideas. - -#### Issues - -- [x] IDs being limited to varchar(64) reduces the usefulness of URNs when you - are using them globally - ([keto#197](https://github.com/ory/keto/issues/197)) diff --git a/docs/docs/performance.mdx b/docs/docs/performance.mdx deleted file mode 100644 index ef2dcce4f..000000000 --- a/docs/docs/performance.mdx +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: Performance ---- - -import Mermaid from '@theme/Mermaid' - -This document explains the time complexity of Ory Keto. Main memory complexity -will be analyzed and added at a later point. We only examine the evaluation -engines (check- and expand-API) as all other parts are mainly determined by -dependencies like your database of choice, or the de-/encoding of messages. -Examples given omit the namespace for clarity. - -## Check Engine - -In essence, the check-engine assumes that the relation tuples and their -indirections assemble an acyclic directed graph, known as -[the graph of relations](concepts/graph-of-relations). - -Consider the following example: - -```keto-relation-tuples -file#access@(file#owner) // probably defined via subjectset rewrites -file#access@user1 // access was granted directly -file#owner@user2 // file owner record; indirectly gets access -``` - -This is interpreted as the following graph: - -|access| B{{file#owner}} - A -->|owner| C([user2]) - A -->|access| D([user1]) - B -. file#access .-> C -`} -/> - -A check request of the form `object#relation@user` will be evaluated by -searching the graph starting at `object` going through `relation` trying to -reach `user`. The request is allowed iff there is such a path. - -The algorithm used in Ory Keto for this graph traversal is breadth-first search. -In the worst case it has a time complexity of `O(n+e)` where `n` is the number -of nodes reachable from the node `object#relation` through `e` edges. Space -complexity is `O(n)`. Rearranged, both space and time complexity are `O(b^d)` -where `b` is the maximum breadth and `d` the maximum depth in the graph, seen -from the search root. [[1]](#references) - -This means that the complexity heavily depends on the structure of the graph. If -it contains deeply nested indirections, it will require many recursive calls to -resolve those indirections. Analogously, if there are widely nested -indirections, Ory Keto has to possibly resolve all of them. The goal is to -design the ACL tuples in a way such that there are only view indirections to -resolve. Learn more in our -[best practices around ACL design](./guides/access-control-list-design-best-practices.mdx). - -Because of this we decided that generic benchmarks will not yield any meaningful -result. We will therefore add a comparison with other similar projects later on. - -## Expand Engine - -Similar to how the check-engine traverses the graph of relationtuples, the -expand-engine builds the tree of all set operations it encounters. It resolves -all indirections starting at the requested subjectset up to the specified depth. -Because it also uses breadth-first search, time and space complexity linearly -depend on the nodes reachable from the requested subjectset. The same -performance considerations apply here, while it is important to note that -requesting a low depth will further limit the complexity of the operation. The -returned tree can also exceed reasonable size limits quickly if the -relationtuples are deeply and/or widely nested. - -## References - -[[1] Breadth-first search](https://en.wikipedia.org/wiki/Breadth-first_search) -on Wikipedia diff --git a/docs/docs/quickstart.mdx b/docs/docs/quickstart.mdx deleted file mode 100644 index b706384c2..000000000 --- a/docs/docs/quickstart.mdx +++ /dev/null @@ -1,151 +0,0 @@ ---- -title: 'Quickstart: Cat Videos Example' ---- - -This example describes a video sharing service. The individual videos are -organized in directories. Every directory has an owner and every video has the -same owner as it's parent directory. The owner has elevated privileges about the -video files that are not modeled individually in Ory Keto. The only other -privilege modeled in this example is "view access." Every owner has view access -to their objects, and this privilege can be granted to other users as well. The -video sharing application interprets the special `*` user ID as any user, -including anonymous users. Note that Ory Keto does not interpret this subject -any differently from other subjects. It also does not know anything about -directory structures or induced ownership. - -:::info Terminology - -The "Keto client" is the application interacting with Keto. In this case we -refer to the video sharing service backend as the Keto client. - -::: - -## Starting the Example - -First, [install Keto](./install.md). - -Now you can start the example using either `docker-compose` or a bash script. -The bash script requires you to have the `keto` binary in your `$PATH`. - -Alternatively, use Docker to automatically get the required images. - -```shell -# clone the repository if you don't have it yet -git clone git@github.com:ory/keto.git && cd keto - -docker-compose -f contrib/cat-videos-example/docker-compose.yml up -# or -./contrib/cat-videos-example/up.sh - -# output: all initially created relation tuples - -# NAMESPACE OBJECT RELATION NAME SUBJECT -# videos /cats/1.mp4 owner videos:/cats#owner -# videos /cats/1.mp4 view videos:/cats/1.mp4#owner -# videos /cats/1.mp4 view * -# videos /cats/2.mp4 owner videos:/cats#owner -# videos /cats/2.mp4 view videos:/cats/2.mp4#owner -# videos /cats owner cat lady -# videos /cats view videos:/cats#owner -``` - -## State of the System - -At the current state only one user with the username `cat lady` has added -videos. Both videos are in the `/cats` directory owned by `cat lady`. The file -`/cats/1.mp4` can be viewed by anyone (`*`), while `/cats/2.mp4` has no extra -sharing options, and can therefore only be viewed by its owner, `cat lady`. The -relation tuple definitions are located in the -`contrib/cat-videos-example/relation-tuples` directory. - -## Simulating the Video Sharing Application - -Now you can open a second terminal to run the queries against, just like the -video service client would do. In this example we will use the Keto CLI client. - -If you want to run the Keto CLI within **Docker**, set the alias - -```shell -alias keto="docker run -it --network cat-videos-example_default -e KETO_READ_REMOTE=\"keto:4466\" oryd/keto:v0.7.0-alpha.1" -``` - -in your terminal session. Alternatively, you need to set the remote endpoint so -that the Keto CLI knows where to connect to (not necessary if using Docker): - -```shell -export KETO_READ_REMOTE="127.0.0.1:4466" -``` - -### Check Incoming Requests - -First off, we get a request by an anonymous user that would like to view -`/cats/2.mp4`. The client now has to ask Keto if that operation should be -allowed or denied. - -```shell -# Is "*" allowed to "view" the object "videos":"/cats/2.mp4"? -keto check "*" view videos /cats/2.mp4 -# output: - -# Denied -``` - -We already discussed that this request should be denied, but it is always good -to see this in action. - -Now `cat lady` wants to change some view permissions of `/cats/1.mp4`. For this, -the video service application has to show all users that are currently allowed -to view the video. It uses Keto's -[expand-API](./concepts/api-overview.mdx#expand-subject-set) to get these data: - -```shell -# Who is allowed to "view" the object "videos":"/cats/2.mp4"? -keto expand view videos /cats/1.mp4 -# output: - -# ∪ videos:/cats/1.mp4#view -# ├─ ∪ videos:/cats/1.mp4#owner -# │ ├─ ∪ videos:/cats#owner -# │ │ ├─ ☘ cat lady️ -# ├─ ☘ *️ -``` - -Here we can see the full subject set expansion. The first branch - -```keto-relation-tuples -videos:/cats/1.mp4#view -``` - -indicates that every owner of the object is allowed to view - -```keto-relation-tuples -videos:/cats/1.mp4#owner -``` - -In the next step we see that the object's owners are the owners of `/cats` - -```keto-relation-tuples -videos:/cats#owner -``` - -Finally, we see that `cat lady` is the owner of `/cats`. - -Note that there is no direct relation tuple that would grant `cat lady` view -access on `/cats/1.mp4` as this is indirectly defined via the ownership -relation. - -The special user `*` on the other hand was directly granted view access on the -object, as it is a first-level leaf of the expansion tree. The following CLI -command proves that this is the case: - -```shell -# Is "*" allowed to "view" the object "videos":"/cats/1.mp4"? -keto check "*" view videos /cats/1.mp4 -# output: - -# Allowed -``` - - - -Updating the view permissions will be added here at a later stage. diff --git a/docs/docs/reference/configuration.md b/docs/docs/reference/configuration.md deleted file mode 100644 index 73dde800d..000000000 --- a/docs/docs/reference/configuration.md +++ /dev/null @@ -1,744 +0,0 @@ ---- -id: configuration -title: Configuration ---- - - - -You can load the config file from another source using the -`-c path/to/config.yaml` or `--config path/to/config.yaml` flag: -`keto --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. - -:::warning Disclaimer - -This reference configuration documents all keys, also deprecated ones! It is a -reference for all possible configuration values. - -If you are looking for an example configuration, it is better to try out the -quickstart. - -::: - -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 Keto Configuration -# - -## serve ## -# -serve: - ## Write API (http and gRPC) ## - # - write: - ## Host ## - # - # The network interface to listen on. - # - # Examples: - # - localhost - # - 127.0.0.1 - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_WRITE_HOST= - # - Windows Command Line (CMD): - # > set SERVE_WRITE_HOST= - # - host: localhost - - ## Cross Origin Resource Sharing (CORS) ## - # - # Configure [Cross Origin Resource Sharing (CORS)](http://www.w3.org/TR/cors/) using the following options. - # - cors: - ## Allowed Origins ## - # - # A list of origins a cross-domain request can be executed from. If the special * value is present in the list, all origins will be allowed. An origin may contain a wildcard (*) to replace 0 or more characters (i.e.: http://*.domain.com). Usage of wildcards implies a small performance penality. Only one wildcard can be used per origin. - # - # Default value: * - # - # Examples: - # - - https://example.com - # - https://*.example.com - # - https://*.foo.example.com - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_WRITE_CORS_ALLOWED_ORIGINS= - # - Windows Command Line (CMD): - # > set SERVE_WRITE_CORS_ALLOWED_ORIGINS= - # - allowed_origins: - - https://example.com - - https://*.example.com - - https://*.foo.example.com - - ## Allowed HTTP Methods ## - # - # A list of methods the client is allowed to use with cross-domain requests. - # - # Default value: GET,POST,PUT,PATCH,DELETE - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_WRITE_CORS_ALLOWED_METHODS= - # - Windows Command Line (CMD): - # > set SERVE_WRITE_CORS_ALLOWED_METHODS= - # - allowed_methods: - - GET - - ## Allowed Request HTTP Headers ## - # - # A list of non simple headers the client is allowed to use with cross-domain requests. - # - # Default value: Authorization,Content-Type - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_WRITE_CORS_ALLOWED_HEADERS= - # - Windows Command Line (CMD): - # > set SERVE_WRITE_CORS_ALLOWED_HEADERS= - # - allowed_headers: - - '' - - ## Allowed Response HTTP Headers ## - # - # Indicates which headers are safe to expose to the API of a CORS API specification - # - # Default value: Content-Type - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_WRITE_CORS_EXPOSED_HEADERS= - # - Windows Command Line (CMD): - # > set SERVE_WRITE_CORS_EXPOSED_HEADERS= - # - exposed_headers: - - '' - - ## Allow HTTP Credentials ## - # - # Indicates whether the request can include user credentials like cookies, HTTP authentication or client side SSL certificates. - # - # Default value: false - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_WRITE_CORS_ALLOW_CREDENTIALS= - # - Windows Command Line (CMD): - # > set SERVE_WRITE_CORS_ALLOW_CREDENTIALS= - # - allow_credentials: false - - ## Maximum Age ## - # - # Indicates how long (in seconds) the results of a preflight request can be cached. The default is 0 which stands for no max age. - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_WRITE_CORS_MAX_AGE= - # - Windows Command Line (CMD): - # > set SERVE_WRITE_CORS_MAX_AGE= - # - max_age: -100000000 - - ## Enable Debugging ## - # - # Set to true to debug server side CORS issues. - # - # Default value: false - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_WRITE_CORS_DEBUG= - # - Windows Command Line (CMD): - # > set SERVE_WRITE_CORS_DEBUG= - # - debug: false - - ## Enable CORS ## - # - # If set to true, CORS will be enabled and preflight-requests (OPTION) will be answered. - # - # Default value: false - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_WRITE_CORS_ENABLED= - # - Windows Command Line (CMD): - # > set SERVE_WRITE_CORS_ENABLED= - # - enabled: false - - ## HTTPS ## - # - # Configure HTTP over TLS (HTTPS). All options can also be set using environment variables by replacing dots (`.`) with underscores (`_`) and uppercasing the key. For example, `some.prefix.tls.key.path` becomes `export SOME_PREFIX_TLS_KEY_PATH`. If all keys are left undefined, TLS will be disabled. - # - tls: - ## TLS Certificate (PEM) ## - # - cert: - ## base64 ## - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_WRITE_TLS_CERT_BASE64= - # - Windows Command Line (CMD): - # > set SERVE_WRITE_TLS_CERT_BASE64= - # - base64: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tXG5NSUlEWlRDQ0FrMmdBd0lCQWdJRVY1eE90REFOQmdr... - - ## path ## - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_WRITE_TLS_CERT_PATH= - # - Windows Command Line (CMD): - # > set SERVE_WRITE_TLS_CERT_PATH= - # - path: path/to/file.pem - - ## Private Key (PEM) ## - # - key: - ## base64 ## - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_WRITE_TLS_KEY_BASE64= - # - Windows Command Line (CMD): - # > set SERVE_WRITE_TLS_KEY_BASE64= - # - base64: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tXG5NSUlEWlRDQ0FrMmdBd0lCQWdJRVY1eE90REFOQmdr... - - ## path ## - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_WRITE_TLS_KEY_PATH= - # - Windows Command Line (CMD): - # > set SERVE_WRITE_TLS_KEY_PATH= - # - path: path/to/file.pem - - ## Port ## - # - # The port to listen on. - # - # Default value: 4467 - # - # Minimum value: 0 - # - # Maximum value: 65535 - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_WRITE_PORT= - # - Windows Command Line (CMD): - # > set SERVE_WRITE_PORT= - # - port: 0 - - ## Read API (http and gRPC) ## - # - read: - ## Host ## - # - # The network interface to listen on. - # - # Examples: - # - localhost - # - 127.0.0.1 - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_READ_HOST= - # - Windows Command Line (CMD): - # > set SERVE_READ_HOST= - # - host: localhost - - ## Cross Origin Resource Sharing (CORS) ## - # - # Configure [Cross Origin Resource Sharing (CORS)](http://www.w3.org/TR/cors/) using the following options. - # - cors: - ## Allowed Origins ## - # - # A list of origins a cross-domain request can be executed from. If the special * value is present in the list, all origins will be allowed. An origin may contain a wildcard (*) to replace 0 or more characters (i.e.: http://*.domain.com). Usage of wildcards implies a small performance penality. Only one wildcard can be used per origin. - # - # Default value: * - # - # Examples: - # - - https://example.com - # - https://*.example.com - # - https://*.foo.example.com - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_READ_CORS_ALLOWED_ORIGINS= - # - Windows Command Line (CMD): - # > set SERVE_READ_CORS_ALLOWED_ORIGINS= - # - allowed_origins: - - https://example.com - - https://*.example.com - - https://*.foo.example.com - - ## Allowed HTTP Methods ## - # - # A list of methods the client is allowed to use with cross-domain requests. - # - # Default value: GET,POST,PUT,PATCH,DELETE - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_READ_CORS_ALLOWED_METHODS= - # - Windows Command Line (CMD): - # > set SERVE_READ_CORS_ALLOWED_METHODS= - # - allowed_methods: - - GET - - ## Allowed Request HTTP Headers ## - # - # A list of non simple headers the client is allowed to use with cross-domain requests. - # - # Default value: Authorization,Content-Type - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_READ_CORS_ALLOWED_HEADERS= - # - Windows Command Line (CMD): - # > set SERVE_READ_CORS_ALLOWED_HEADERS= - # - allowed_headers: - - '' - - ## Allowed Response HTTP Headers ## - # - # Indicates which headers are safe to expose to the API of a CORS API specification - # - # Default value: Content-Type - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_READ_CORS_EXPOSED_HEADERS= - # - Windows Command Line (CMD): - # > set SERVE_READ_CORS_EXPOSED_HEADERS= - # - exposed_headers: - - '' - - ## Allow HTTP Credentials ## - # - # Indicates whether the request can include user credentials like cookies, HTTP authentication or client side SSL certificates. - # - # Default value: false - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_READ_CORS_ALLOW_CREDENTIALS= - # - Windows Command Line (CMD): - # > set SERVE_READ_CORS_ALLOW_CREDENTIALS= - # - allow_credentials: false - - ## Maximum Age ## - # - # Indicates how long (in seconds) the results of a preflight request can be cached. The default is 0 which stands for no max age. - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_READ_CORS_MAX_AGE= - # - Windows Command Line (CMD): - # > set SERVE_READ_CORS_MAX_AGE= - # - max_age: -100000000 - - ## Enable Debugging ## - # - # Set to true to debug server side CORS issues. - # - # Default value: false - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_READ_CORS_DEBUG= - # - Windows Command Line (CMD): - # > set SERVE_READ_CORS_DEBUG= - # - debug: false - - ## Enable CORS ## - # - # If set to true, CORS will be enabled and preflight-requests (OPTION) will be answered. - # - # Default value: false - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_READ_CORS_ENABLED= - # - Windows Command Line (CMD): - # > set SERVE_READ_CORS_ENABLED= - # - enabled: false - - ## HTTPS ## - # - # Configure HTTP over TLS (HTTPS). All options can also be set using environment variables by replacing dots (`.`) with underscores (`_`) and uppercasing the key. For example, `some.prefix.tls.key.path` becomes `export SOME_PREFIX_TLS_KEY_PATH`. If all keys are left undefined, TLS will be disabled. - # - tls: - ## TLS Certificate (PEM) ## - # - cert: - ## base64 ## - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_READ_TLS_CERT_BASE64= - # - Windows Command Line (CMD): - # > set SERVE_READ_TLS_CERT_BASE64= - # - base64: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tXG5NSUlEWlRDQ0FrMmdBd0lCQWdJRVY1eE90REFOQmdr... - - ## path ## - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_READ_TLS_CERT_PATH= - # - Windows Command Line (CMD): - # > set SERVE_READ_TLS_CERT_PATH= - # - path: path/to/file.pem - - ## Private Key (PEM) ## - # - key: - ## base64 ## - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_READ_TLS_KEY_BASE64= - # - Windows Command Line (CMD): - # > set SERVE_READ_TLS_KEY_BASE64= - # - base64: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tXG5NSUlEWlRDQ0FrMmdBd0lCQWdJRVY1eE90REFOQmdr... - - ## path ## - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_READ_TLS_KEY_PATH= - # - Windows Command Line (CMD): - # > set SERVE_READ_TLS_KEY_PATH= - # - path: path/to/file.pem - - ## Port ## - # - # The port to listen on. - # - # Default value: 4466 - # - # Minimum value: 0 - # - # Maximum value: 65535 - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_READ_PORT= - # - Windows Command Line (CMD): - # > set SERVE_READ_PORT= - # - port: 0 - -## Profiling ## -# -# Enables CPU or memory profiling if set. For more details on profiling Go programs read [Profiling Go Programs](https://blog.golang.org/profiling-go-programs). -# -# One of: -# - cpu -# - mem -# - "" -# -# Set this value using environment variables on -# - Linux/macOS: -# $ export PROFILING= -# - Windows Command Line (CMD): -# > set PROFILING= -# -profiling: cpu - -## Log ## -# -# Configure logging using the following options. Logs will always be sent to stdout and stderr. -# -log: - ## Log Format ## - # - # The output format of log messages. - # - # Default value: text - # - # One of: - # - json - # - json_pretty - # - gelf - # - text - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export LOG_FORMAT= - # - Windows Command Line (CMD): - # > set LOG_FORMAT= - # - format: json - - ## Leak Sensitive Log Values ## - # - # If set will leak sensitive values (e.g. emails) in the logs. - # - # Default value: false - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export LOG_LEAK_SENSITIVE_VALUES= - # - Windows Command Line (CMD): - # > set LOG_LEAK_SENSITIVE_VALUES= - # - leak_sensitive_values: false - - ## Level ## - # - # The level of log entries to show. Debug enables stack traces on errors. - # - # Default value: info - # - # One of: - # - panic - # - fatal - # - error - # - warn - # - info - # - debug - # - trace - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export LOG_LEVEL= - # - Windows Command Line (CMD): - # > set LOG_LEVEL= - # - level: panic - -## tracing ## -# -# Configure distributed tracing. -# -tracing: - ## service_name ## - # - # Specifies the service name to use on the tracer. - # - # Examples: - # - Ory Hydra - # - Ory Kratos - # - Ory Keto - # - Ory Oathkeeper - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export TRACING_SERVICE_NAME= - # - Windows Command Line (CMD): - # > set TRACING_SERVICE_NAME= - # - service_name: Ory Hydra - - ## providers ## - # - providers: - ## zipkin ## - # - # Configures the zipkin tracing backend. - # - # Examples: - # - server_url: http://localhost:9411/api/v2/spans - # - zipkin: - ## server_url ## - # - # The address of Zipkin server where spans should be sent to. - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export TRACING_PROVIDERS_ZIPKIN_SERVER_URL= - # - Windows Command Line (CMD): - # > set TRACING_PROVIDERS_ZIPKIN_SERVER_URL= - # - server_url: http://localhost:9411/api/v2/spans - - ## jaeger ## - # - # Configures the jaeger tracing backend. - # - jaeger: - ## propagation ## - # - # The tracing header format - # - # Examples: - # - jaeger - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export TRACING_PROVIDERS_JAEGER_PROPAGATION= - # - Windows Command Line (CMD): - # > set TRACING_PROVIDERS_JAEGER_PROPAGATION= - # - propagation: jaeger - - ## max_tag_value_length ## - # - # The value passed to the max tag value length that has been configured. - # - # Minimum value: 0 - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export TRACING_PROVIDERS_JAEGER_MAX_TAG_VALUE_LENGTH= - # - Windows Command Line (CMD): - # > set TRACING_PROVIDERS_JAEGER_MAX_TAG_VALUE_LENGTH= - # - max_tag_value_length: 0 - - ## sampling ## - # - # Examples: - # - type: const - # value: 1 - # server_url: http://localhost:5778/sampling - # - sampling: - ## type ## - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export TRACING_PROVIDERS_JAEGER_SAMPLING_TYPE= - # - Windows Command Line (CMD): - # > set TRACING_PROVIDERS_JAEGER_SAMPLING_TYPE= - # - type: const - - ## value ## - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export TRACING_PROVIDERS_JAEGER_SAMPLING_VALUE= - # - Windows Command Line (CMD): - # > set TRACING_PROVIDERS_JAEGER_SAMPLING_VALUE= - # - value: 1 - - ## server_url ## - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export TRACING_PROVIDERS_JAEGER_SAMPLING_SERVER_URL= - # - Windows Command Line (CMD): - # > set TRACING_PROVIDERS_JAEGER_SAMPLING_SERVER_URL= - # - server_url: http://localhost:5778/sampling - - ## local_agent_address ## - # - # The address of the jaeger-agent where spans should be sent to. - # - # Examples: - # - 127.0.0.1:6831 - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export TRACING_PROVIDERS_JAEGER_LOCAL_AGENT_ADDRESS= - # - Windows Command Line (CMD): - # > set TRACING_PROVIDERS_JAEGER_LOCAL_AGENT_ADDRESS= - # - local_agent_address: 127.0.0.1:6831 - - ## provider ## - # - # Set this to the tracing backend you wish to use. Supports Jaeger, Zipkin DataDog, Elastic APM and Instana. If omitted or empty, tracing will be disabled. Use environment variables to configure DataDog (see https://docs.datadoghq.com/tracing/setup/go/#configuration). - # - # One of: - # - jaeger - # - zipkin - # - datadog - # - elastic-apm - # - instana - # - # Examples: - # - jaeger - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export TRACING_PROVIDER= - # - Windows Command Line (CMD): - # > set TRACING_PROVIDER= - # - provider: jaeger - -## namespaces ## -# -# Namespace configuration or it's location. -# -# Default value: file://./keto_namespaces -# -# Set this value using environment variables on -# - Linux/macOS: -# $ export NAMESPACES= -# - Windows Command Line (CMD): -# > set NAMESPACES= -# -namespaces: http://a.aaa - -## The Keto version this config is written for. ## -# -# SemVer according to https://semver.org/ prefixed with `v` as in our releases. -# -# Set this value using environment variables on -# - Linux/macOS: -# $ export VERSION= -# - Windows Command Line (CMD): -# > set VERSION= -# -version: v0.0.0 - -## Data Source Name ## -# -# Sets the data source name. This configures the backend where ORY Keto persists data. If dsn is "memory", data will be written to memory and is lost when you restart this instance. ORY Hydra supports popular SQL databases. For more detailed configuration information go to: https://www.ory.sh/docs/hydra/dependencies-environment#sql -# -# Examples: -# - postgres://user:password@host:123/database -# - mysql://user:password@tcp(host:123)/database -# - memory -# -# Set this value using environment variables on -# - Linux/macOS: -# $ export DSN= -# - Windows Command Line (CMD): -# > set DSN= -# -dsn: postgres://user:password@host:123/database -``` diff --git a/docs/docs/reference/proto-api.mdx b/docs/docs/reference/proto-api.mdx deleted file mode 100644 index 18cc1bfea..000000000 --- a/docs/docs/reference/proto-api.mdx +++ /dev/null @@ -1,296 +0,0 @@ ---- -title: Protocol Buffers API ---- - - - -The API is divided into the [read APIs](../concepts/api-overview.mdx#read-apis) -and [write APIs](../concepts/api-overview.mdx#write-apis). Each service is -annotated with the API it belongs to. - -## ory/keto/acl/v1alpha1/acl.proto - -### RelationTuple - -RelationTuple defines a relation between an Object and a Subject. - -| Field | Type | Label | Description | -| --------- | ----------------------------------------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------- | -| namespace | [string](#string) | | The namespace this relation tuple lives in. | -| object | [string](#string) | | The object related by this tuple. It is an object in the namespace of the tuple. | -| relation | [string](#string) | | The relation between an Object and a Subject. | -| subject | [Subject](#ory.keto.acl.v1alpha1.Subject) | | The subject related by this tuple. A Subject either represents a concrete subject id or a `SubjectSet` that expands to more Subjects. | - -### Subject - -Subject is either a concrete subject id or a `SubjectSet` expanding to more -Subjects. - -| Field | Type | Label | Description | -| ----- | ----------------------------------------------- | ----- | ----------------------------------------------------------------------------------------------------------------------- | -| id | [string](#string) | | A concrete id of the subject. | -| set | [SubjectSet](#ory.keto.acl.v1alpha1.SubjectSet) | | A subject set that expands to more Subjects. More information are available under [concepts](../concepts/subjects.mdx). | - -### SubjectSet - -SubjectSet refers to all subjects who have the same `relation` on an `object`. - -| Field | Type | Label | Description | -| --------- | ----------------- | ----- | ------------------------------------------------------------------------ | -| namespace | [string](#string) | | The namespace of the object and relation referenced in this subject set. | -| object | [string](#string) | | The object related by this subject set. | -| relation | [string](#string) | | The relation between the object and the subjects. | - -## ory/keto/acl/v1alpha1/check_service.proto - -### CheckService - -The service that performs authorization checks based on the stored Access -Control Lists. - -This service is part of the [read-APIs](../concepts/api-overview.mdx#read-apis). - -| Method Name | Request Type | Response Type | Description | -| ----------- | --------------------------------------------------- | ----------------------------------------------------- | -------------------------------- | -| Check | [CheckRequest](#ory.keto.acl.v1alpha1.CheckRequest) | [CheckResponse](#ory.keto.acl.v1alpha1.CheckResponse) | Performs an authorization check. | - -### CheckRequest - -The request for a CheckService.Check RPC. Checks whether a specific subject is -related to an object. - -| Field | Type | Label | Description | -| --------- | ----------------------------------------- | ----- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| namespace | [string](#string) | | The namespace to evaluate the check.
Note: If you use the expand-API and the check evaluates a RelationTuple specifying a SubjectSet as subject or due to a rewrite rule in a namespace config this check request may involve other namespaces automatically. | -| object | [string](#string) | | The related object in this check. | -| relation | [string](#string) | | The relation between the Object and the Subject. | -| subject | [Subject](#ory.keto.acl.v1alpha1.Subject) | | The related subject in this check. | -| latest | [bool](#bool) | | This field is not implemented yet and has no effect. | -| snaptoken | [string](#string) | | This field is not implemented yet and has no effect. | -| max_depth | [int32](#int32) | | The maximum depth to search for a relation.
If the value is less than 1 or greater than the global max-depth then the global max-depth will be used instead. | - -### CheckResponse - -The response for a CheckService.Check rpc. - -| Field | Type | Label | Description | -| --------- | ----------------- | ----- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| allowed | [bool](#bool) | | Whether the specified subject (id) is related to the requested object.
It is false by default if no ACL matches. | -| snaptoken | [string](#string) | | This field is not implemented yet and has no effect. | - -## ory/keto/acl/v1alpha1/expand_service.proto - -### ExpandService - -The service that performs subject set expansion based on the stored Access -Control Lists. - -This service is part of the [read-APIs](../concepts/api-overview.mdx#read-apis). - -| Method Name | Request Type | Response Type | Description | -| ----------- | ----------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------ | -| Expand | [ExpandRequest](#ory.keto.acl.v1alpha1.ExpandRequest) | [ExpandResponse](#ory.keto.acl.v1alpha1.ExpandResponse) | Expands the subject set into a tree of subjects. | - -### ExpandRequest - -The request for an ExpandService.Expand RPC. Expands the given subject set. - -| Field | Type | Label | Description | -| --------- | ----------------------------------------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| subject | [Subject](#ory.keto.acl.v1alpha1.Subject) | | The subject to expand. | -| max_depth | [int32](#int32) | | The maximum depth of tree to build.
If the value is less than 1 or greater than the global max-depth then the global max-depth will be used instead.
It is important to set this parameter to a meaningful value. Ponder how deep you really want to display this. | -| snaptoken | [string](#string) | | This field is not implemented yet and has no effect. | - -### ExpandResponse - -The response for a ExpandService.Expand RPC. - -| Field | Type | Label | Description | -| ----- | ------------------------------------------------- | ----- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | -| tree | [SubjectTree](#ory.keto.acl.v1alpha1.SubjectTree) | | The tree the requested subject set expands to. The requested subject set is the subject of the root.
This field can be nil in some circumstances. | - -### SubjectTree - -| Field | Type | Label | Description | -| --------- | ------------------------------------------------- | -------- | ------------------------------------------------------------------------------------ | -| node_type | [NodeType](#ory.keto.acl.v1alpha1.NodeType) | | The type of the node. | -| subject | [Subject](#ory.keto.acl.v1alpha1.Subject) | | The subject this node represents. | -| children | [SubjectTree](#ory.keto.acl.v1alpha1.SubjectTree) | repeated | The children of this node.
This is never set if `node_type` == `NODE_TYPE_LEAF`. | - -### NodeType - -| Name | Number | Description | -| ---------------------- | ------ | ---------------------------------------------------------------------------------------------------------- | -| NODE_TYPE_UNSPECIFIED | 0 | | -| NODE_TYPE_UNION | 1 | This node expands to a union of all children. | -| NODE_TYPE_EXCLUSION | 2 | Not implemented yet. | -| NODE_TYPE_INTERSECTION | 3 | Not implemented yet. | -| NODE_TYPE_LEAF | 4 | This node is a leaf and contains no children. Its subject is a `SubjectID` unless `max_depth` was reached. | - -## ory/keto/acl/v1alpha1/read_service.proto - -### ReadService - -The service to query relation tuples. - -This service is part of the [read-APIs](../concepts/api-overview.mdx#read-apis). - -| Method Name | Request Type | Response Type | Description | -| ------------------ | ----------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | -------------------------- | -| ListRelationTuples | [ListRelationTuplesRequest](#ory.keto.acl.v1alpha1.ListRelationTuplesRequest) | [ListRelationTuplesResponse](#ory.keto.acl.v1alpha1.ListRelationTuplesResponse) | Lists ACL relation tuples. | - -### ListRelationTuplesRequest - -Request for ReadService.ListRelationTuples RPC. See -`ListRelationTuplesRequest_Query` for how to filter the query. - -| Field | Type | Label | Description | -| ----------- | ----------------------------------------------------------------------------------------- | ----- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| query | [ListRelationTuplesRequest.Query](#ory.keto.acl.v1alpha1.ListRelationTuplesRequest.Query) | | All query constraints are concatenated with a logical AND operator.
The RelationTuple list from ListRelationTuplesResponse is ordered from the newest RelationTuple to the oldest. | -| expand_mask | [google.protobuf.FieldMask](#google.protobuf.FieldMask) | | This field is not implemented yet and has no effect. | -| snaptoken | [string](#string) | | This field is not implemented yet and has no effect. | -| page_size | [int32](#int32) | | Optional. The maximum number of RelationTuples to return in the response.
Default: 100 | -| page_token | [string](#string) | | Optional. An opaque pagination token returned from a previous call to `ListRelationTuples` that indicates where the page should start at.
An empty token denotes the first page. All successive pages require the token from the previous page. | - -### ListRelationTuplesRequest.Query - -The query for listing relation tuples. Clients can specify any optional field to -partially filter for specific relation tuples. - -Example use cases (namespace is always required): - -- object only: display a list of all permissions referring to a specific object -- relation only: get all groups that have members; get all directories that have - content -- object & relation: display all subjects that have a specific permission - relation -- subject & relation: display all groups a subject belongs to; display all - objects a subject has access to -- object & relation & subject: check whether the relation tuple already exists - -| Field | Type | Label | Description | -| --------- | ----------------------------------------- | ----- | ------------------------------------ | -| namespace | [string](#string) | | Required. The namespace to query. | -| object | [string](#string) | | Optional. The object to query for. | -| relation | [string](#string) | | Optional. The relation to query for. | -| subject | [Subject](#ory.keto.acl.v1alpha1.Subject) | | Optional. The subject to query for. | - -### ListRelationTuplesResponse - -The response of a ReadService.ListRelationTuples RPC. - -| Field | Type | Label | Description | -| --------------- | ----------------------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------ | -| relation_tuples | [RelationTuple](#ory.keto.acl.v1alpha1.RelationTuple) | repeated | The relation tuples matching the list request. | -| next_page_token | [string](#string) | | The token required to get the next page. If this is the last page, the token will be the empty string. | - -## ory/keto/acl/v1alpha1/version.proto - -### VersionService - -The service returning the specific Ory Keto instance version. - -This service is part of the [read-APIs](../concepts/api-overview.mdx#read-apis) -and [write-APIs](../concepts/api-overview.mdx#write-apis). - -| Method Name | Request Type | Response Type | Description | -| ----------- | ------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------- | -| GetVersion | [GetVersionRequest](#ory.keto.acl.v1alpha1.GetVersionRequest) | [GetVersionResponse](#ory.keto.acl.v1alpha1.GetVersionResponse) | Returns the version of the Ory Keto instance. | - -### GetVersionRequest - -Request for the VersionService.GetVersion RPC. - -### GetVersionResponse - -Response of the VersionService.GetVersion RPC. - -| Field | Type | Label | Description | -| ------- | ----------------- | ----- | -------------------------------------------- | -| version | [string](#string) | | The version string of the Ory Keto instance. | - -## ory/keto/acl/v1alpha1/write_service.proto - -### WriteService - -The write service to create and delete Access Control Lists. - -This service is part of the -[write-APIs](../concepts/api-overview.mdx#write-apis). - -| Method Name | Request Type | Response Type | Description | -| ---------------------- | ------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | ----------------------------------------------------------- | -| TransactRelationTuples | [TransactRelationTuplesRequest](#ory.keto.acl.v1alpha1.TransactRelationTuplesRequest) | [TransactRelationTuplesResponse](#ory.keto.acl.v1alpha1.TransactRelationTuplesResponse) | Writes one or more relation tuples in a single transaction. | -| DeleteRelationTuples | [DeleteRelationTuplesRequest](#ory.keto.acl.v1alpha1.DeleteRelationTuplesRequest) | [DeleteRelationTuplesResponse](#ory.keto.acl.v1alpha1.DeleteRelationTuplesResponse) | Deletes relation tuples based on relation query | - -### DeleteRelationTuplesRequest - -| Field | Type | Label | Description | -| ----- | --------------------------------------------------------------------------------------------- | ----- | ----------- | -| query | [DeleteRelationTuplesRequest.Query](#ory.keto.acl.v1alpha1.DeleteRelationTuplesRequest.Query) | | | - -### DeleteRelationTuplesRequest.Query - -The query for deleting relation tuples - -| Field | Type | Label | Description | -| --------- | ----------------------------------------- | ----- | ------------------------------------ | -| namespace | [string](#string) | | Optional. The namespace to query. | -| object | [string](#string) | | Optional. The object to query for. | -| relation | [string](#string) | | Optional. The relation to query for. | -| subject | [Subject](#ory.keto.acl.v1alpha1.Subject) | | Optional. The subject to query for. | - -### DeleteRelationTuplesResponse - -### RelationTupleDelta - -Write-delta for a TransactRelationTuplesRequest. - -| Field | Type | Label | Description | -| -------------- | ----------------------------------------------------------------------------- | ----- | -------------------------------------- | -| action | [RelationTupleDelta.Action](#ory.keto.acl.v1alpha1.RelationTupleDelta.Action) | | The action to do on the RelationTuple. | -| relation_tuple | [RelationTuple](#ory.keto.acl.v1alpha1.RelationTuple) | | The target RelationTuple. | - -### TransactRelationTuplesRequest - -The request of a WriteService.TransactRelationTuples RPC. - -| Field | Type | Label | Description | -| --------------------- | --------------------------------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------ | -| relation_tuple_deltas | [RelationTupleDelta](#ory.keto.acl.v1alpha1.RelationTupleDelta) | repeated | The write delta for the relation tuples operated in one single transaction. Either all actions succeed or no change takes effect on error. | - -### TransactRelationTuplesResponse - -The response of a WriteService.TransactRelationTuples rpc. - -| Field | Type | Label | Description | -| ---------- | ----------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| snaptokens | [string](#string) | repeated | This field is not implemented yet and has no effect. | - -### RelationTupleDelta.Action - -| Name | Number | Description | -| ------------------ | ------ | ----------------------------------------------------------------------------------------------------------- | -| ACTION_UNSPECIFIED | 0 | Unspecified. The `TransactRelationTuples` RPC ignores this RelationTupleDelta if an action was unspecified. | -| INSERT | 1 | Insertion of a new RelationTuple. It is ignored if already existing. | -| DELETE | 2 | Deletion of the RelationTuple. It is ignored if it does not exist. | - -## Scalar Value Types - -| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby | -| ------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | ------ | ---------- | ----------- | ------- | ---------- | -------------- | ------------------------------ | -| double | | double | double | float | float64 | double | float | Float | -| float | | float | float | float | float32 | float | float | Float | -| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | -| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum | -| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) | -| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) | -| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | -| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum | -| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) | -| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum | -| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | -| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum | -| bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | -| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | -| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) | diff --git a/docs/docs/reference/rest-api.mdx b/docs/docs/reference/rest-api.mdx deleted file mode 100644 index a1ebca3bc..000000000 --- a/docs/docs/reference/rest-api.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -id: rest-api -hide_title: true -title: HTTP API Documentation -description: Ory Keto HTTP API Documentation -sidebar_label: HTTP API ---- - -import API from '@theme/API' -import spec from '../.static/api.json' - - diff --git a/docs/docs/sdk/index.md b/docs/docs/sdk/index.md deleted file mode 100644 index c94429855..000000000 --- a/docs/docs/sdk/index.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -id: index -title: Overview ---- - -All SDKs use automated code generation provided by -[`openapi-generator`](https://github.com/OpenAPITools/openapi-generator) and -[protoc](https://github.com/protocolbuffers/protobuf). 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](../reference/rest-api.mdx) and [gRPC API](../reference/proto-api.mdx) -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: - -- [Dart](https://pub.dev/packages/ory_keto_client) -- [.NET](https://www.nuget.org/packages/Ory.Keto.Client/) -- [Go gRPC](https://github.com/ory/keto/blob/master/proto/go.mod) (import using - `go get github.com/ory/keto/proto`) -- [Go REST](https://github.com/ory/keto-client-go) -- [Java](https://search.maven.org/artifact/sh.ory.keto/keto-client) -- [PHP](https://packagist.org/packages/ory/keto-client) -- [Python](https://pypi.org/project/ory-keto-client/) -- [Ruby](https://rubygems.org/gems/ory-keto-client) -- [Rust](https://crates.io/crates/ory-keto-client) -- [NodeJS REST](https://www.npmjs.com/package/@ory/keto-client) (with - TypeScript) -- [NodeJS gRPC](https://www.npmjs.com/package/@ory/keto-grpc-client) (with - TypeScript) - -Take a look at the source: -[Generated SDKs for Ory Keto](https://github.com/ory/sdk/tree/master/clients/keto/) - -Missing your programming language? -[Create an issue](https://github.com/ory/keto/issues) and help us build, test -and publish the SDK for your programming language! diff --git a/docs/docs/secure.md b/docs/docs/secure.md deleted file mode 100644 index 988f4d133..000000000 --- a/docs/docs/secure.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -id: secure -title: Secure ---- - -Similar to other services in our ecosystem, Ory Keto's APIs have no integrated -access control on their own. Any request made to any Keto API is considered -authenticated, authorized, and is thus being executed. However, these endpoints -are very sensitive as they define who is allowed to do what in your system. - -Please protect these endpoints using -[Ory Oathkeeper](https://github.com/ory/oathkeeper) or a comparable API Gateway. -How you protect them, is up to you. - -If you require support for this, consider [asking us](mailto:hi@ory.sh). diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js deleted file mode 100644 index dcee2443f..000000000 --- a/docs/docusaurus.config.js +++ /dev/null @@ -1,205 +0,0 @@ -const config = require('./contrib/config.js') -const fs = require('fs') - -const githubRepoName = - config.projectSlug === 'ecosystem' ? 'docs' : config.projectSlug - -const baseUrl = config.baseUrl ? config.baseUrl : `/${config.projectSlug}/docs/` - -let links = [ - { - to: 'https://www.ory.sh/', - label: `Home`, - position: 'left' - }, - { - href: `https://github.com/ory/${githubRepoName}/discussions`, - label: 'Discussions', - position: 'right' - }, - { - href: 'https://www.ory.sh/chat', - label: 'Slack', - position: 'right' - }, - { - href: `https://github.com/ory/${githubRepoName}`, - label: 'GitHub', - position: 'right' - } -] - -const customCss = [require.resolve('./contrib/theme.css')] - -if (fs.existsSync('./src/css/theme.css')) { - customCss.push(require.resolve('./src/css/theme.css')) -} - -const githubPrismTheme = require('prism-react-renderer/themes/github') - -const prismThemeLight = { - ...githubPrismTheme, - styles: [ - ...githubPrismTheme.styles, - { - languages: ['keto-relation-tuples'], - types: ['namespace'], - style: { - color: '#666' - } - }, - { - languages: ['keto-relation-tuples'], - types: ['object'], - style: { - color: '#939' - } - }, - { - languages: ['keto-relation-tuples'], - types: ['relation'], - style: { - color: '#e80' - } - }, - { - languages: ['keto-relation-tuples'], - types: ['delimiter'], - style: { - color: '#555' - } - }, - { - languages: ['keto-relation-tuples'], - types: ['comment'], - style: { - color: '#999' - } - }, - { - languages: ['keto-relation-tuples'], - types: ['subject'], - style: { - color: '#903' - } - } - ] -} - -module.exports = { - title: config.projectName, - tagline: config.projectTagLine, - url: `https://www.ory.sh/`, - baseUrl, - favicon: 'img/favico.png', - onBrokenLinks: 'warn', - onBrokenMarkdownLinks: 'warn', - organizationName: 'ory', // Usually your GitHub org/user name. - projectName: config.projectSlug, // Usually your repo name. - themeConfig: { - prism: { - theme: prismThemeLight, - darkTheme: require('prism-react-renderer/themes/dracula'), - additionalLanguages: ['json5', 'pug', 'shell-session'] - }, - announcementBar: { - id: 'supportus', - content: - config.projectSlug === 'docs' - ? `Sign up for important security announcements and if you like the ${config.projectName} give us some ⭐️ on GitHub!` - : `Sign up for important security announcements and if you like ${config.projectName} give it a ⭐️ on GitHub!` - }, - algolia: { - appId: 'V2EFIWEJ25', - apiKey: 'dc6b220f7d2bcd12da60b9cce431d8c5', - indexName: 'ory', - contextualSearch: true, - searchParameters: { - facetFilters: [[`tags:${config.projectSlug}`, `tags:docs`]] - } - }, - navbar: { - hideOnScroll: false, - logo: { - alt: config.projectName, - src: `img/logo-${config.projectSlug}.svg`, - srcDark: `img/logo-${config.projectSlug}.svg`, - href: - config.projectSlug === 'docs' - ? `https://www.ory.sh` - : `https://www.ory.sh/${config.projectSlug}` - }, - items: [ - ...links, - { - type: 'docsVersionDropdown', - position: 'right', - dropdownActiveClassDisabled: true, - dropdownItemsAfter: [ - { - to: '/versions', - label: 'All versions' - } - ] - } - ] - }, - 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/ory/${githubRepoName}/edit/master/docs`, - editCurrentVersion: false, - routeBasePath: '/', - showLastUpdateAuthor: true, - showLastUpdateTime: true, - disableVersioning: false, - include: ['**/*.md', '**/*.mdx', '**/*.jsx'], - docLayoutComponent: '@theme/RoutedDocPage' - } - ], - '@docusaurus/plugin-content-pages', - require.resolve('./src/plugins/ory-scripts-loader'), - require.resolve('./src/plugins/docusaurus-plugin-matamo'), - '@docusaurus/plugin-sitemap' - ], - themes: [ - [ - '@docusaurus/theme-classic', - { - customCss - } - ], - '@docusaurus/theme-search-algolia', - 'docusaurus-theme-redoc' - ] -} diff --git a/docs/package-lock.json b/docs/package-lock.json deleted file mode 100644 index 8be47f245..000000000 --- a/docs/package-lock.json +++ /dev/null @@ -1,29869 +0,0 @@ -{ - "name": "docusaurus-template", - "version": "0.0.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "docusaurus-template", - "version": "0.0.0", - "dependencies": { - "@docusaurus/core": "2.0.0-beta.9", - "@docusaurus/plugin-content-docs": "2.0.0-beta.9", - "@docusaurus/plugin-content-pages": "2.0.0-beta.9", - "@docusaurus/plugin-sitemap": "2.0.0-beta.9", - "@docusaurus/theme-classic": "2.0.0-beta.9", - "@docusaurus/theme-search-algolia": "2.0.0-beta.9", - "classnames": "2.3.1", - "file-loader": "6.2.0", - "mermaid": "8.13.8", - "node-fetch": "2.6.1", - "parser-front-matter": "1.6.4", - "prism-react-renderer": "1.2.1", - "prismjs": "1.24.1", - "react": "17.0.2", - "react-dom": "17.0.2", - "redocusaurus": "0.4.4", - "sync-request": "6.1.0", - "url-loader": "4.1.1" - }, - "devDependencies": { - "json-schema-faker": "0.5.0-rcv.35", - "json-schema-ref-parser": "9.0.9", - "npm-run-all": "^4.1.5", - "ory-prettier-styles": "1.1.2", - "prettier": "2.3.2", - "ramda": "0.27.1", - "raw-loader": "4.0.2", - "remark-admonitions": "1.2.1", - "remarkable": "2.0.1", - "widdershins": "4.0.1", - "yaml": "1.10.2" - } - }, - "node_modules/@algolia/autocomplete-core": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.2.1.tgz", - "integrity": "sha512-/SLS6636Wpl7eFiX7eEy0E3wBo60sUm1qRYybJBDt1fs8reiJ1+OSy+dZgrLBfLL4mSFqRIIUHXbVp25QdZ+iw==", - "dependencies": { - "@algolia/autocomplete-shared": "1.2.1" - } - }, - "node_modules/@algolia/autocomplete-preset-algolia": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.2.1.tgz", - "integrity": "sha512-Lf4PpPVgHNXm1ytrnVdrZYV7hAYSCpAI/TrebF8UC6xflPY6sKb1RL/2OfrO9On7SDjPBtNd+6MArSar5JmK0g==", - "dependencies": { - "@algolia/autocomplete-shared": "1.2.1" - }, - "peerDependencies": { - "@algolia/client-search": "^4.9.1", - "algoliasearch": "^4.9.1" - } - }, - "node_modules/@algolia/autocomplete-shared": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.2.1.tgz", - "integrity": "sha512-RHCwcXAYFwDXTlomstjWRFIzOfyxtQ9KmViacPE5P5hxUSSjkmG3dAb77xdydift1PaZNbho5TNTCi5UZe0RpA==" - }, - "node_modules/@algolia/cache-browser-local-storage": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.11.0.tgz", - "integrity": "sha512-4sr9vHIG1fVA9dONagdzhsI/6M5mjs/qOe2xUP0yBmwsTsuwiZq3+Xu6D3dsxsuFetcJgC6ydQoCW8b7fDJHYQ==", - "dependencies": { - "@algolia/cache-common": "4.11.0" - } - }, - "node_modules/@algolia/cache-common": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.11.0.tgz", - "integrity": "sha512-lODcJRuPXqf+6mp0h6bOxPMlbNoyn3VfjBVcQh70EDP0/xExZbkpecgHyyZK4kWg+evu+mmgvTK3GVHnet/xKw==" - }, - "node_modules/@algolia/cache-in-memory": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.11.0.tgz", - "integrity": "sha512-aBz+stMSTBOBaBEQ43zJXz2DnwS7fL6dR0e2myehAgtfAWlWwLDHruc/98VOy1ZAcBk1blE2LCU02bT5HekGxQ==", - "dependencies": { - "@algolia/cache-common": "4.11.0" - } - }, - "node_modules/@algolia/client-account": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.11.0.tgz", - "integrity": "sha512-jwmFBoUSzoMwMqgD3PmzFJV/d19p1RJXB6C1ADz4ju4mU7rkaQLtqyZroQpheLoU5s5Tilmn/T8/0U2XLoJCRQ==", - "dependencies": { - "@algolia/client-common": "4.11.0", - "@algolia/client-search": "4.11.0", - "@algolia/transporter": "4.11.0" - } - }, - "node_modules/@algolia/client-analytics": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.11.0.tgz", - "integrity": "sha512-v5U9585aeEdYml7JqggHAj3E5CQ+jPwGVztPVhakBk8H/cmLyPS2g8wvmIbaEZCHmWn4TqFj3EBHVYxAl36fSA==", - "dependencies": { - "@algolia/client-common": "4.11.0", - "@algolia/client-search": "4.11.0", - "@algolia/requester-common": "4.11.0", - "@algolia/transporter": "4.11.0" - } - }, - "node_modules/@algolia/client-common": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.11.0.tgz", - "integrity": "sha512-Qy+F+TZq12kc7tgfC+FM3RvYH/Ati7sUiUv/LkvlxFwNwNPwWGoZO81AzVSareXT/ksDDrabD4mHbdTbBPTRmQ==", - "dependencies": { - "@algolia/requester-common": "4.11.0", - "@algolia/transporter": "4.11.0" - } - }, - "node_modules/@algolia/client-personalization": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.11.0.tgz", - "integrity": "sha512-mI+X5IKiijHAzf9fy8VSl/GTT67dzFDnJ0QAM8D9cMPevnfX4U72HRln3Mjd0xEaYUOGve8TK/fMg7d3Z5yG6g==", - "dependencies": { - "@algolia/client-common": "4.11.0", - "@algolia/requester-common": "4.11.0", - "@algolia/transporter": "4.11.0" - } - }, - "node_modules/@algolia/client-search": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.11.0.tgz", - "integrity": "sha512-iovPLc5YgiXBdw2qMhU65sINgo9umWbHFzInxoNErWnYoTQWfXsW6P54/NlKx5uscoLVjSf+5RUWwFu5BX+lpw==", - "dependencies": { - "@algolia/client-common": "4.11.0", - "@algolia/requester-common": "4.11.0", - "@algolia/transporter": "4.11.0" - } - }, - "node_modules/@algolia/logger-common": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.11.0.tgz", - "integrity": "sha512-pRMJFeOY8hoWKIxWuGHIrqnEKN/kqKh7UilDffG/+PeEGxBuku+Wq5CfdTFG0C9ewUvn8mAJn5BhYA5k8y0Jqg==" - }, - "node_modules/@algolia/logger-console": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.11.0.tgz", - "integrity": "sha512-wXztMk0a3VbNmYP8Kpc+F7ekuvaqZmozM2eTLok0XIshpAeZ/NJDHDffXK2Pw+NF0wmHqurptLYwKoikjBYvhQ==", - "dependencies": { - "@algolia/logger-common": "4.11.0" - } - }, - "node_modules/@algolia/requester-browser-xhr": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.11.0.tgz", - "integrity": "sha512-Fp3SfDihAAFR8bllg8P5ouWi3+qpEVN5e7hrtVIYldKBOuI/qFv80Zv/3/AMKNJQRYglS4zWyPuqrXm58nz6KA==", - "dependencies": { - "@algolia/requester-common": "4.11.0" - } - }, - "node_modules/@algolia/requester-common": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.11.0.tgz", - "integrity": "sha512-+cZGe/9fuYgGuxjaBC+xTGBkK7OIYdfapxhfvEf03dviLMPmhmVYFJtJlzAjQ2YmGDJpHrGgAYj3i/fbs8yhiA==" - }, - "node_modules/@algolia/requester-node-http": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.11.0.tgz", - "integrity": "sha512-qJIk9SHRFkKDi6dMT9hba8X1J1z92T5AZIgl+tsApjTGIRQXJLTIm+0q4yOefokfu4CoxYwRZ9QAq+ouGwfeOg==", - "dependencies": { - "@algolia/requester-common": "4.11.0" - } - }, - "node_modules/@algolia/transporter": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.11.0.tgz", - "integrity": "sha512-k4dyxiaEfYpw4UqybK9q7lrFzehygo6KV3OCYJMMdX0IMWV0m4DXdU27c1zYRYtthaFYaBzGF4Kjcl8p8vxCKw==", - "dependencies": { - "@algolia/cache-common": "4.11.0", - "@algolia/logger-common": "4.11.0", - "@algolia/requester-common": "4.11.0" - } - }, - "node_modules/@apidevtools/json-schema-ref-parser": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz", - "integrity": "sha512-GBD2Le9w2+lVFoc4vswGI/TjkNIZSVp7+9xPf+X3uidBfWnAeUWmquteSyt0+VCrhNMWj/FTABISQrD3Z/YA+w==", - "dev": true, - "dependencies": { - "@jsdevtools/ono": "^7.1.3", - "@types/json-schema": "^7.0.6", - "call-me-maybe": "^1.0.1", - "js-yaml": "^4.1.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "dependencies": { - "@babel/highlight": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", - "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.14.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.6.tgz", - "integrity": "sha512-gJnOEWSqTk96qG5BoIrl5bVtc23DCycmIePPYnamY9RboYdI4nFy5vAQMSl81O5K/W0sLDWfGysnOECC+KUUCA==", - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.14.5", - "@babel/helper-compilation-targets": "^7.14.5", - "@babel/helper-module-transforms": "^7.14.5", - "@babel/helpers": "^7.14.6", - "@babel/parser": "^7.14.6", - "@babel/template": "^7.14.5", - "@babel/traverse": "^7.14.5", - "@babel/types": "^7.14.5", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/generator": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz", - "integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==", - "dependencies": { - "@babel/types": "^7.15.6", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz", - "integrity": "sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA==", - "dependencies": { - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.14.5.tgz", - "integrity": "sha512-YTA/Twn0vBXDVGJuAX6PwW7x5zQei1luDDo2Pl6q1qZ7hVNl0RZrhHCQG/ArGpR29Vl7ETiB8eJyrvpuRp300w==", - "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.14.5", - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz", - "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==", - "dependencies": { - "@babel/compat-data": "^7.15.0", - "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.16.6", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.4.tgz", - "integrity": "sha512-7ZmzFi+DwJx6A7mHRwbuucEYpyBwmh2Ca0RvI6z2+WLZYCqV0JOaLb+u0zbtmDicebgKBZgqbYfLaKNqSgv5Pw==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz", - "integrity": "sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "regexpu-core": "^4.7.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz", - "integrity": "sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew==", - "dependencies": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0-0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.14.5.tgz", - "integrity": "sha512-Htb24gnGJdIGT4vnRKMdoXiOIlqOLmdiUYpAQ0mYfgVT/GDm8GOYhgi4GL+hMKrkiPRohO4ts34ELFsGAPQLDQ==", - "dependencies": { - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", - "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", - "dependencies": { - "@babel/helper-get-function-arity": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-get-function-arity": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", - "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", - "dependencies": { - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", - "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", - "dependencies": { - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", - "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", - "dependencies": { - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", - "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", - "dependencies": { - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz", - "integrity": "sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg==", - "dependencies": { - "@babel/helper-module-imports": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-simple-access": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", - "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", - "dependencies": { - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", - "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.15.4.tgz", - "integrity": "sha512-v53MxgvMK/HCwckJ1bZrq6dNKlmwlyRNYM6ypaRTdXWGOE2c1/SCa6dL/HimhPulGhZKw9W0QhREM583F/t0vQ==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.15.4", - "@babel/helper-wrap-function": "^7.15.4", - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", - "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", - "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", - "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", - "dependencies": { - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.15.4.tgz", - "integrity": "sha512-BMRLsdh+D1/aap19TycS4eD1qELGrCBJwzaY9IE8LrpJtJb+H7rQkPIdsfgnMtLBA6DJls7X9z93Z4U8h7xw0A==", - "dependencies": { - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", - "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", - "dependencies": { - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.15.4.tgz", - "integrity": "sha512-Y2o+H/hRV5W8QhIfTpRIBwl57y8PrZt6JM3V8FOo5qarjshHItyH5lXlpMfBfmBefOqSCpKZs/6Dxqp0E/U+uw==", - "dependencies": { - "@babel/helper-function-name": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.14.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.6.tgz", - "integrity": "sha512-yesp1ENQBiLI+iYHSJdoZKUtRpfTlL1grDIX9NRlAVppljLw/4tTyYupIB7uIYmC3stW/imAv8EqaKaS/ibmeA==", - "dependencies": { - "@babel/template": "^7.14.5", - "@babel/traverse": "^7.14.5", - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/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==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/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==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "node_modules/@babel/highlight/node_modules/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=", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/parser": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", - "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==", - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.15.4.tgz", - "integrity": "sha512-eBnpsl9tlhPhpI10kU06JHnrYXwg3+V6CaP2idsCXNef0aeslpqyITXQ74Vfk5uHgY7IG7XP0yIH8b42KSzHog==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.15.4", - "@babel/plugin-proposal-optional-chaining": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" - } - }, - "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.15.8.tgz", - "integrity": "sha512-2Z5F2R2ibINTc63mY7FLqGfEbmofrHU9FitJW1Q7aPaKFhiPvSq6QEt/BoWN5oME3GVyjcRuNNSRbb9LC0CSWA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.15.4", - "@babel/plugin-syntax-async-generators": "^7.8.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz", - "integrity": "sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg==", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.15.4.tgz", - "integrity": "sha512-M682XWrrLNk3chXCjoPUQWOyYsB93B9z3mRyjtqqYJWDf2mfCdIYgDrA11cgNVhAQieaq6F2fn2f3wI0U4aTjA==", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" - } - }, - "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz", - "integrity": "sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz", - "integrity": "sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz", - "integrity": "sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-json-strings": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz", - "integrity": "sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz", - "integrity": "sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz", - "integrity": "sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.15.6.tgz", - "integrity": "sha512-qtOHo7A1Vt+O23qEAX+GdBpqaIuD3i9VRrWgCJeq7WO6H2d14EK3q11urj5Te2MAeK97nMiIdRpwd/ST4JFbNg==", - "dependencies": { - "@babel/compat-data": "^7.15.0", - "@babel/helper-compilation-targets": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz", - "integrity": "sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz", - "integrity": "sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz", - "integrity": "sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g==", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.15.4.tgz", - "integrity": "sha512-X0UTixkLf0PCCffxgu5/1RQyGGbgZuKoI+vXP4iSbJSYwPb7hu06omsFGBvQ9lJEvwgrxHdS8B5nbfcd8GyUNA==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.15.4", - "@babel/helper-create-class-features-plugin": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz", - "integrity": "sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q==", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz", - "integrity": "sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz", - "integrity": "sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz", - "integrity": "sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz", - "integrity": "sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA==", - "dependencies": { - "@babel/helper-module-imports": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz", - "integrity": "sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.15.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.15.3.tgz", - "integrity": "sha512-nBAzfZwZb4DkaGtOes1Up1nOAp9TDRRFw4XBzBBSG9QK7KVFmYzgj9o9sbPv7TX5ofL4Auq4wZnxCoPnI/lz2Q==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.15.4.tgz", - "integrity": "sha512-Yjvhex8GzBmmPQUvpXRPWQ9WnxXgAFuZSrqOK/eJlOGIXwvv8H3UEdUigl1gb/bnjTrln+e8bkZUYCBt/xYlBg==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz", - "integrity": "sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz", - "integrity": "sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz", - "integrity": "sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw==", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz", - "integrity": "sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz", - "integrity": "sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA==", - "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.15.4.tgz", - "integrity": "sha512-DRTY9fA751AFBDh2oxydvVm4SYevs5ILTWLs6xKXps4Re/KG5nfUkr+TdHCrRWB8C69TlzVgA9b3RmGWmgN9LA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz", - "integrity": "sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ==", - "dependencies": { - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz", - "integrity": "sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz", - "integrity": "sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz", - "integrity": "sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g==", - "dependencies": { - "@babel/helper-module-transforms": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-amd/node_modules/babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dependencies": { - "object.assign": "^4.1.0" - } - }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.15.4.tgz", - "integrity": "sha512-qg4DPhwG8hKp4BbVDvX1s8cohM8a6Bvptu4l6Iingq5rW+yRUAhe/YRup/YcW2zCOlrysEWVhftIcKzrEZv3sA==", - "dependencies": { - "@babel/helper-module-transforms": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-simple-access": "^7.15.4", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-commonjs/node_modules/babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dependencies": { - "object.assign": "^4.1.0" - } - }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.15.4.tgz", - "integrity": "sha512-fJUnlQrl/mezMneR72CKCgtOoahqGJNVKpompKwzv3BrEXdlPspTcyxrZ1XmDTIr9PpULrgEQo3qNKp6dW7ssw==", - "dependencies": { - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-module-transforms": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-identifier": "^7.14.9", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-systemjs/node_modules/babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dependencies": { - "object.assign": "^4.1.0" - } - }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz", - "integrity": "sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA==", - "dependencies": { - "@babel/helper-module-transforms": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.14.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.9.tgz", - "integrity": "sha512-l666wCVYO75mlAtGFfyFwnWmIXQm3kSH0C3IRnJqWcZbWkoihyAdDhFm2ZWaxWTqvBvhVFfJjMRQ0ez4oN1yYA==", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz", - "integrity": "sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz", - "integrity": "sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-replace-supers": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.15.4.tgz", - "integrity": "sha512-9WB/GUTO6lvJU3XQsSr6J/WKvBC2hcs4Pew8YxZagi6GkTdniyqp8On5kqdK8MN0LMeu0mGbhPN+O049NV/9FQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz", - "integrity": "sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-constant-elements": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.14.5.tgz", - "integrity": "sha512-NBqLEx1GxllIOXJInJAQbrnwwYJsV3WaMHIcOwD8rhYS0AabTWn7kHdHgPgu5RmHLU0q4DMxhAMu8ue/KampgQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.14.5.tgz", - "integrity": "sha512-07aqY1ChoPgIxsuDviptRpVkWCSbXWmzQqcgy65C6YSFOfPFvb/DX3bBRHh7pCd/PMEEYHYWUTSVkCbkVainYQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.14.5.tgz", - "integrity": "sha512-7RylxNeDnxc1OleDm0F5Q/BSL+whYRbOAR+bwgCxIr0L32v7UFh/pz1DLMZideAUxKT6eMoS2zQH6fyODLEi8Q==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "@babel/helper-module-imports": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-jsx": "^7.14.5", - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-development": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.14.5.tgz", - "integrity": "sha512-rdwG/9jC6QybWxVe2UVOa7q6cnTpw8JRRHOxntG/h6g/guAOe6AhtQHJuJh5FwmnXIT1bdm5vC2/5huV8ZOorQ==", - "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.14.5.tgz", - "integrity": "sha512-3X4HpBJimNxW4rhUy/SONPyNQHp5YRr0HhJdT2OH1BRp0of7u3Dkirc7x9FRJMKMqTBI079VZ1hzv7Ouuz///g==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz", - "integrity": "sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg==", - "dependencies": { - "regenerator-transform": "^0.14.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz", - "integrity": "sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-runtime": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.15.8.tgz", - "integrity": "sha512-+6zsde91jMzzvkzuEA3k63zCw+tm/GvuuabkpisgbDMTPQsIMHllE3XczJFFtEHLjjhKQFZmGQVRdELetlWpVw==", - "dependencies": { - "@babel/helper-module-imports": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "babel-plugin-polyfill-corejs2": "^0.2.2", - "babel-plugin-polyfill-corejs3": "^0.2.5", - "babel-plugin-polyfill-regenerator": "^0.2.2", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz", - "integrity": "sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.15.8.tgz", - "integrity": "sha512-/daZ8s2tNaRekl9YJa9X4bzjpeRZLt122cpgFnQPLGUe61PH8zMEBmYqKkW5xF5JUEh5buEGXJoQpqBmIbpmEQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz", - "integrity": "sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz", - "integrity": "sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz", - "integrity": "sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typescript": { - "version": "7.14.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.14.6.tgz", - "integrity": "sha512-XlTdBq7Awr4FYIzqhmYY80WN0V0azF74DMPyFqVHBvf81ZUgc4X7ZOpx6O8eLDK6iM5cCQzeyJw0ynTaefixRA==", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.14.6", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-typescript": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz", - "integrity": "sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz", - "integrity": "sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw==", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-env": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.15.8.tgz", - "integrity": "sha512-rCC0wH8husJgY4FPbHsiYyiLxSY8oMDJH7Rl6RQMknbN9oDDHhM9RDFvnGM2MgkbUJzSQB4gtuwygY5mCqGSsA==", - "dependencies": { - "@babel/compat-data": "^7.15.0", - "@babel/helper-compilation-targets": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.15.4", - "@babel/plugin-proposal-async-generator-functions": "^7.15.8", - "@babel/plugin-proposal-class-properties": "^7.14.5", - "@babel/plugin-proposal-class-static-block": "^7.15.4", - "@babel/plugin-proposal-dynamic-import": "^7.14.5", - "@babel/plugin-proposal-export-namespace-from": "^7.14.5", - "@babel/plugin-proposal-json-strings": "^7.14.5", - "@babel/plugin-proposal-logical-assignment-operators": "^7.14.5", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5", - "@babel/plugin-proposal-numeric-separator": "^7.14.5", - "@babel/plugin-proposal-object-rest-spread": "^7.15.6", - "@babel/plugin-proposal-optional-catch-binding": "^7.14.5", - "@babel/plugin-proposal-optional-chaining": "^7.14.5", - "@babel/plugin-proposal-private-methods": "^7.14.5", - "@babel/plugin-proposal-private-property-in-object": "^7.15.4", - "@babel/plugin-proposal-unicode-property-regex": "^7.14.5", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.14.5", - "@babel/plugin-transform-async-to-generator": "^7.14.5", - "@babel/plugin-transform-block-scoped-functions": "^7.14.5", - "@babel/plugin-transform-block-scoping": "^7.15.3", - "@babel/plugin-transform-classes": "^7.15.4", - "@babel/plugin-transform-computed-properties": "^7.14.5", - "@babel/plugin-transform-destructuring": "^7.14.7", - "@babel/plugin-transform-dotall-regex": "^7.14.5", - "@babel/plugin-transform-duplicate-keys": "^7.14.5", - "@babel/plugin-transform-exponentiation-operator": "^7.14.5", - "@babel/plugin-transform-for-of": "^7.15.4", - "@babel/plugin-transform-function-name": "^7.14.5", - "@babel/plugin-transform-literals": "^7.14.5", - "@babel/plugin-transform-member-expression-literals": "^7.14.5", - "@babel/plugin-transform-modules-amd": "^7.14.5", - "@babel/plugin-transform-modules-commonjs": "^7.15.4", - "@babel/plugin-transform-modules-systemjs": "^7.15.4", - "@babel/plugin-transform-modules-umd": "^7.14.5", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.14.9", - "@babel/plugin-transform-new-target": "^7.14.5", - "@babel/plugin-transform-object-super": "^7.14.5", - "@babel/plugin-transform-parameters": "^7.15.4", - "@babel/plugin-transform-property-literals": "^7.14.5", - "@babel/plugin-transform-regenerator": "^7.14.5", - "@babel/plugin-transform-reserved-words": "^7.14.5", - "@babel/plugin-transform-shorthand-properties": "^7.14.5", - "@babel/plugin-transform-spread": "^7.15.8", - "@babel/plugin-transform-sticky-regex": "^7.14.5", - "@babel/plugin-transform-template-literals": "^7.14.5", - "@babel/plugin-transform-typeof-symbol": "^7.14.5", - "@babel/plugin-transform-unicode-escapes": "^7.14.5", - "@babel/plugin-transform-unicode-regex": "^7.14.5", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.15.6", - "babel-plugin-polyfill-corejs2": "^0.2.2", - "babel-plugin-polyfill-corejs3": "^0.2.5", - "babel-plugin-polyfill-regenerator": "^0.2.2", - "core-js-compat": "^3.16.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-env/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/preset-modules": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", - "dependencies": { - "@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" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-react": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.14.5.tgz", - "integrity": "sha512-XFxBkjyObLvBaAvkx1Ie95Iaq4S/GUEIrejyrntQ/VCMKUYvKLoyKxOBzJ2kjA3b6rC9/KL6KXfDC2GqvLiNqQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-transform-react-display-name": "^7.14.5", - "@babel/plugin-transform-react-jsx": "^7.14.5", - "@babel/plugin-transform-react-jsx-development": "^7.14.5", - "@babel/plugin-transform-react-pure-annotations": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-typescript": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.14.5.tgz", - "integrity": "sha512-u4zO6CdbRKbS9TypMqrlGH7sd2TAJppZwn3c/ZRLeO/wGsbddxgbPDUZVNrie3JWYLQ9vpineKlsrWFvO6Pwkw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-transform-typescript": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.4.tgz", - "integrity": "sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==", - "dependencies": { - "regenerator-runtime": "^0.13.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/runtime-corejs3": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.15.4.tgz", - "integrity": "sha512-lWcAqKeB624/twtTc3w6w/2o9RqJPaNBhPGK6DKLSiwuVWC7WFkypWyNg+CpZoyJH0jVzv1uMtXZ/5/lQOLtCg==", - "dependencies": { - "core-js-pure": "^3.16.0", - "regenerator-runtime": "^0.13.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", - "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.9", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@braintree/sanitize-url": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-3.1.0.tgz", - "integrity": "sha512-GcIY79elgB+azP74j8vqkiXz8xLFfIzbQJdlwOPisgbKT00tviJQuEghOXSMVxJ00HoYJbGswr4kcllUc4xCcg==" - }, - "node_modules/@docsearch/css": { - "version": "3.0.0-alpha.39", - "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.0.0-alpha.39.tgz", - "integrity": "sha512-lr10MFTgcR3NRea/FtJ7uNtIpQz0XVwYxbpO5wxykgfHu1sxZTr6zwkuPquRgFYXnccxsTvfoIiK3rMH0fLr/w==" - }, - "node_modules/@docsearch/react": { - "version": "3.0.0-alpha.39", - "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.0.0-alpha.39.tgz", - "integrity": "sha512-urTIt82tan6CU+D2kO6xXpWQom/r1DA7L/55m2JiCIK/3SLh2z15FJFVN2abeK7B4wl8pCfWunYOwCsSHhWDLA==", - "dependencies": { - "@algolia/autocomplete-core": "1.2.1", - "@algolia/autocomplete-preset-algolia": "1.2.1", - "@docsearch/css": "3.0.0-alpha.39", - "algoliasearch": "^4.0.0" - }, - "peerDependencies": { - "@types/react": ">= 16.8.0 < 18.0.0", - "react": ">= 16.8.0 < 18.0.0", - "react-dom": ">= 16.8.0 < 18.0.0" - } - }, - "node_modules/@docusaurus/core": { - "version": "2.0.0-beta.9", - "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-2.0.0-beta.9.tgz", - "integrity": "sha512-Bf9c6+yftZfAJk2h4HyaDvzBp5TLhqYtfnfWKKNi0Gdw9vRLXhi7IaiGaLWIuNAIJLTi++Ql0BAn+C0OO8EsWA==", - "dependencies": { - "@babel/core": "^7.12.16", - "@babel/generator": "^7.12.15", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-transform-runtime": "^7.15.0", - "@babel/preset-env": "^7.15.6", - "@babel/preset-react": "^7.12.13", - "@babel/preset-typescript": "^7.12.16", - "@babel/runtime": "^7.15.4", - "@babel/runtime-corejs3": "^7.15.4", - "@babel/traverse": "^7.12.13", - "@docusaurus/cssnano-preset": "2.0.0-beta.9", - "@docusaurus/react-loadable": "5.5.2", - "@docusaurus/types": "2.0.0-beta.9", - "@docusaurus/utils": "2.0.0-beta.9", - "@docusaurus/utils-common": "2.0.0-beta.9", - "@docusaurus/utils-validation": "2.0.0-beta.9", - "@slorber/static-site-generator-webpack-plugin": "^4.0.0", - "@svgr/webpack": "^5.5.0", - "autoprefixer": "^10.3.5", - "babel-loader": "^8.2.2", - "babel-plugin-dynamic-import-node": "2.3.0", - "boxen": "^5.0.1", - "chalk": "^4.1.2", - "chokidar": "^3.5.2", - "clean-css": "^5.1.5", - "commander": "^5.1.0", - "copy-webpack-plugin": "^9.0.1", - "core-js": "^3.18.0", - "css-loader": "^5.1.1", - "css-minimizer-webpack-plugin": "^3.0.2", - "cssnano": "^5.0.8", - "del": "^6.0.0", - "detect-port": "^1.3.0", - "escape-html": "^1.0.3", - "eta": "^1.12.3", - "file-loader": "^6.2.0", - "fs-extra": "^10.0.0", - "github-slugger": "^1.4.0", - "globby": "^11.0.2", - "html-minifier-terser": "^6.0.2", - "html-tags": "^3.1.0", - "html-webpack-plugin": "^5.4.0", - "import-fresh": "^3.3.0", - "is-root": "^2.1.0", - "leven": "^3.1.0", - "lodash": "^4.17.20", - "mini-css-extract-plugin": "^1.6.0", - "nprogress": "^0.2.0", - "postcss": "^8.3.7", - "postcss-loader": "^6.1.1", - "prompts": "^2.4.1", - "react-dev-utils": "12.0.0-next.47", - "react-error-overlay": "^6.0.9", - "react-helmet": "^6.1.0", - "react-loadable": "npm:@docusaurus/react-loadable@5.5.2", - "react-loadable-ssr-addon-v5-slorber": "^1.0.1", - "react-router": "^5.2.0", - "react-router-config": "^5.1.1", - "react-router-dom": "^5.2.0", - "remark-admonitions": "^1.2.1", - "resolve-pathname": "^3.0.0", - "rtl-detect": "^1.0.4", - "semver": "^7.3.4", - "serve-handler": "^6.1.3", - "shelljs": "^0.8.4", - "std-env": "^2.2.1", - "strip-ansi": "^6.0.0", - "terser-webpack-plugin": "^5.2.4", - "tslib": "^2.3.1", - "update-notifier": "^5.1.0", - "url-loader": "^4.1.1", - "wait-on": "^6.0.0", - "webpack": "^5.61.0", - "webpack-bundle-analyzer": "^4.4.2", - "webpack-dev-server": "^4.4.0", - "webpack-merge": "^5.8.0", - "webpackbar": "^5.0.0-3" - }, - "bin": { - "docusaurus": "bin/docusaurus.js" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "react": "^16.8.4 || ^17.0.0", - "react-dom": "^16.8.4 || ^17.0.0" - } - }, - "node_modules/@docusaurus/core/node_modules/react-loadable": { - "name": "@docusaurus/react-loadable", - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz", - "integrity": "sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==", - "dependencies": { - "@types/react": "*", - "prop-types": "^15.6.2" - }, - "peerDependencies": { - "react": "*" - } - }, - "node_modules/@docusaurus/cssnano-preset": { - "version": "2.0.0-beta.9", - "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-2.0.0-beta.9.tgz", - "integrity": "sha512-oIdoiZ/i4LXRxmuLN2ZmvGpMqtwba+ck9TlaQDWC7wvHx+EA9mvvcewKWgc7e4dxPA00+777cQvrDctAreAqLw==", - "dependencies": { - "cssnano-preset-advanced": "^5.1.4", - "postcss": "^8.3.7", - "postcss-sort-media-queries": "^4.1.0" - } - }, - "node_modules/@docusaurus/mdx-loader": { - "version": "2.0.0-beta.9", - "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-2.0.0-beta.9.tgz", - "integrity": "sha512-qb+/Ew69kaAIiot+1lJ13ozsyCY+7/VryzopDTgr60BDCsLUvuDzjNKreBqo1xdC4JxYD/hJMV7UAHkZ8rWB8Q==", - "dependencies": { - "@babel/parser": "^7.12.16", - "@babel/traverse": "^7.12.13", - "@docusaurus/core": "2.0.0-beta.9", - "@docusaurus/utils": "2.0.0-beta.9", - "@mdx-js/mdx": "^1.6.21", - "@mdx-js/react": "^1.6.21", - "chalk": "^4.1.2", - "escape-html": "^1.0.3", - "file-loader": "^6.2.0", - "fs-extra": "^10.0.0", - "github-slugger": "^1.4.0", - "gray-matter": "^4.0.3", - "mdast-util-to-string": "^2.0.0", - "remark-emoji": "^2.1.0", - "stringify-object": "^3.3.0", - "unist-util-visit": "^2.0.2", - "url-loader": "^4.1.1", - "webpack": "^5.61.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "react": "^16.8.4 || ^17.0.0", - "react-dom": "^16.8.4 || ^17.0.0" - } - }, - "node_modules/@docusaurus/plugin-content-blog": { - "version": "2.0.0-beta.9", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.0.0-beta.9.tgz", - "integrity": "sha512-KZ6UmUa/P4SSX8/xnZpwSt7krnAfRg3S/ghZ7zeIzcp12iumSZBmLNi5rIIXcsFVH0IPOnIofEoWEaEIwaNerg==", - "dependencies": { - "@docusaurus/core": "2.0.0-beta.9", - "@docusaurus/mdx-loader": "2.0.0-beta.9", - "@docusaurus/types": "2.0.0-beta.9", - "@docusaurus/utils": "2.0.0-beta.9", - "@docusaurus/utils-validation": "2.0.0-beta.9", - "chalk": "^4.1.2", - "escape-string-regexp": "^4.0.0", - "feed": "^4.2.2", - "fs-extra": "^10.0.0", - "globby": "^11.0.2", - "js-yaml": "^4.0.0", - "loader-utils": "^2.0.0", - "lodash": "^4.17.20", - "reading-time": "^1.5.0", - "remark-admonitions": "^1.2.1", - "tslib": "^2.3.1", - "utility-types": "^3.10.0", - "webpack": "^5.61.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "react": "^16.8.4 || ^17.0.0", - "react-dom": "^16.8.4 || ^17.0.0" - } - }, - "node_modules/@docusaurus/plugin-content-blog/node_modules/loader-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.1.tgz", - "integrity": "sha512-g4miPa9uUrZz4iElkaVJgDFwKJGh8aQGM7pUL4ejXl6cu7kSb30seQOVGNMP6sW8j7DW77X68hJZ+GM7UGhXeQ==", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/@docusaurus/plugin-content-docs": { - "version": "2.0.0-beta.9", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.0.0-beta.9.tgz", - "integrity": "sha512-GC+CvqKuravPpK5fqlYJVmj9hc6nkd/c/rM2ONueFCqw2wyuH7esWL8RpMqgS0JM1qwwuRpi0Dd3R/zdOptHIQ==", - "dependencies": { - "@docusaurus/core": "2.0.0-beta.9", - "@docusaurus/mdx-loader": "2.0.0-beta.9", - "@docusaurus/types": "2.0.0-beta.9", - "@docusaurus/utils": "2.0.0-beta.9", - "@docusaurus/utils-validation": "2.0.0-beta.9", - "chalk": "^4.1.2", - "combine-promises": "^1.1.0", - "escape-string-regexp": "^4.0.0", - "execa": "^5.0.0", - "fs-extra": "^10.0.0", - "globby": "^11.0.2", - "import-fresh": "^3.2.2", - "js-yaml": "^4.0.0", - "loader-utils": "^2.0.0", - "lodash": "^4.17.20", - "remark-admonitions": "^1.2.1", - "shelljs": "^0.8.4", - "tslib": "^2.3.1", - "utility-types": "^3.10.0", - "webpack": "^5.61.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "react": "^16.8.4 || ^17.0.0", - "react-dom": "^16.8.4 || ^17.0.0" - } - }, - "node_modules/@docusaurus/plugin-content-docs/node_modules/loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/@docusaurus/plugin-content-pages": { - "version": "2.0.0-beta.9", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.0.0-beta.9.tgz", - "integrity": "sha512-27nFHhPpZEWra6izyWgY+EkBspr3OAUUHojRXzMUKplYLZ5gIciM224PXbwLyECjpn51eaf8/2Ay+/H9BdTCBw==", - "dependencies": { - "@docusaurus/core": "2.0.0-beta.9", - "@docusaurus/mdx-loader": "2.0.0-beta.9", - "@docusaurus/types": "2.0.0-beta.9", - "@docusaurus/utils": "2.0.0-beta.9", - "@docusaurus/utils-validation": "2.0.0-beta.9", - "globby": "^11.0.2", - "lodash": "^4.17.20", - "remark-admonitions": "^1.2.1", - "tslib": "^2.3.1", - "webpack": "^5.61.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "react": "^16.8.4 || ^17.0.0", - "react-dom": "^16.8.4 || ^17.0.0" - } - }, - "node_modules/@docusaurus/plugin-sitemap": { - "version": "2.0.0-beta.9", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.0.0-beta.9.tgz", - "integrity": "sha512-p6Qc1vo/yb1v767/u0E72inkGKayx77HDKsDOGrNj2IH0db0cMsskBLeKYcDfVz5+dtmFrR+lubINp7TyofkvA==", - "dependencies": { - "@docusaurus/core": "2.0.0-beta.9", - "@docusaurus/types": "2.0.0-beta.9", - "@docusaurus/utils": "2.0.0-beta.9", - "@docusaurus/utils-common": "2.0.0-beta.9", - "@docusaurus/utils-validation": "2.0.0-beta.9", - "fs-extra": "^10.0.0", - "sitemap": "^7.0.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "react": "^16.8.4 || ^17.0.0", - "react-dom": "^16.8.4 || ^17.0.0" - } - }, - "node_modules/@docusaurus/react-loadable": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz", - "integrity": "sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==", - "dependencies": { - "@types/react": "*", - "prop-types": "^15.6.2" - }, - "peerDependencies": { - "react": "*" - } - }, - "node_modules/@docusaurus/theme-classic": { - "version": "2.0.0-beta.9", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-2.0.0-beta.9.tgz", - "integrity": "sha512-vTijCGrkFkaqzpOu7w1AaXOBFOo6wirkNEN0+TMkx3oTu95Yj7h98rt/9Z60f6L9HVjOFQ18h3fU6cWloNG+Bg==", - "dependencies": { - "@docusaurus/core": "2.0.0-beta.9", - "@docusaurus/plugin-content-blog": "2.0.0-beta.9", - "@docusaurus/plugin-content-docs": "2.0.0-beta.9", - "@docusaurus/plugin-content-pages": "2.0.0-beta.9", - "@docusaurus/theme-common": "2.0.0-beta.9", - "@docusaurus/types": "2.0.0-beta.9", - "@docusaurus/utils": "2.0.0-beta.9", - "@docusaurus/utils-common": "2.0.0-beta.9", - "@docusaurus/utils-validation": "2.0.0-beta.9", - "@mdx-js/mdx": "^1.6.21", - "@mdx-js/react": "^1.6.21", - "chalk": "^4.1.2", - "clsx": "^1.1.1", - "copy-text-to-clipboard": "^3.0.1", - "fs-extra": "^10.0.0", - "globby": "^11.0.2", - "infima": "0.2.0-alpha.34", - "lodash": "^4.17.20", - "parse-numeric-range": "^1.3.0", - "postcss": "^8.3.7", - "prism-react-renderer": "^1.2.1", - "prismjs": "^1.23.0", - "prop-types": "^15.7.2", - "react-router-dom": "^5.2.0", - "rtlcss": "^3.3.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "react": "^16.8.4 || ^17.0.0", - "react-dom": "^16.8.4 || ^17.0.0" - } - }, - "node_modules/@docusaurus/theme-classic/node_modules/prismjs": { - "version": "1.25.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.25.0.tgz", - "integrity": "sha512-WCjJHl1KEWbnkQom1+SzftbtXMKQoezOCYs5rECqMN+jP+apI7ftoflyqigqzopSO3hMhTEb0mFClA8lkolgEg==" - }, - "node_modules/@docusaurus/theme-common": { - "version": "2.0.0-beta.9", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-2.0.0-beta.9.tgz", - "integrity": "sha512-ZsFP+wH1CY6SBqkBGAdj9kHZHkV/7Y77Jw0rnEVbVU4zX2Jh6apWRCOJVaPrroDES8/9D6WWKQgQifeoJ2EeIA==", - "dependencies": { - "@docusaurus/core": "2.0.0-beta.9", - "@docusaurus/plugin-content-blog": "2.0.0-beta.9", - "@docusaurus/plugin-content-docs": "2.0.0-beta.9", - "@docusaurus/plugin-content-pages": "2.0.0-beta.9", - "@docusaurus/types": "2.0.0-beta.9", - "clsx": "^1.1.1", - "fs-extra": "^10.0.0", - "tslib": "^2.3.1", - "utility-types": "^3.10.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "prism-react-renderer": "^1.2.1", - "react": "^16.8.4 || ^17.0.0", - "react-dom": "^16.8.4 || ^17.0.0" - } - }, - "node_modules/@docusaurus/theme-search-algolia": { - "version": "2.0.0-beta.9", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.0.0-beta.9.tgz", - "integrity": "sha512-pbpA18kqr5H7A7snmHf4dzMYV+3nsTDYMhV9f2Tms7yP9cxW7ZMHJwaEKXh1myE58Nbkv84AF734TR1UgYrziw==", - "dependencies": { - "@docsearch/react": "^3.0.0-alpha.39", - "@docusaurus/core": "2.0.0-beta.9", - "@docusaurus/theme-common": "2.0.0-beta.9", - "@docusaurus/utils": "2.0.0-beta.9", - "@docusaurus/utils-validation": "2.0.0-beta.9", - "algoliasearch": "^4.10.5", - "algoliasearch-helper": "^3.5.5", - "clsx": "^1.1.1", - "eta": "^1.12.3", - "lodash": "^4.17.20" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "react": "^16.8.4 || ^17.0.0", - "react-dom": "^16.8.4 || ^17.0.0" - } - }, - "node_modules/@docusaurus/types": { - "version": "2.0.0-beta.9", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-2.0.0-beta.9.tgz", - "integrity": "sha512-7qK7PCwRImHzv9RMi5HJ7RoHKQ8r7oqZK79UucmzBXl5nyfZridBC7JQ+LG7GBqYVaIjfOHUflOOLIVn+gK2/g==", - "dependencies": { - "commander": "^5.1.0", - "joi": "^17.4.2", - "querystring": "0.2.0", - "utility-types": "^3.10.0", - "webpack": "^5.61.0", - "webpack-merge": "^5.8.0" - } - }, - "node_modules/@docusaurus/utils": { - "version": "2.0.0-beta.9", - "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-2.0.0-beta.9.tgz", - "integrity": "sha512-f5TUY72Qux0wv1tjxsvjFDjfRnsWtQjsjR5Q/gJ5V021H9lycC9YCk0cEReg3bI3+IVL2iGvQqNnH3R1G7NcRw==", - "dependencies": { - "@docusaurus/types": "2.0.0-beta.9", - "@mdx-js/runtime": "^1.6.22", - "@types/github-slugger": "^1.3.0", - "chalk": "^4.1.2", - "escape-string-regexp": "^4.0.0", - "fs-extra": "^10.0.0", - "globby": "^11.0.4", - "gray-matter": "^4.0.3", - "lodash": "^4.17.20", - "micromatch": "^4.0.4", - "remark-mdx-remove-exports": "^1.6.22", - "remark-mdx-remove-imports": "^1.6.22", - "resolve-pathname": "^3.0.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "react": "*", - "react-dom": "*" - } - }, - "node_modules/@docusaurus/utils-common": { - "version": "2.0.0-beta.9", - "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-2.0.0-beta.9.tgz", - "integrity": "sha512-ftVRifnVXW9eQjwOSuTzhEb9P55KSVfqEbQHgUlMm8KYXHC4NNdn4V+9sHmdJ8rDWNU+PA/+FMjGxWLVejMkxg==", - "dependencies": { - "@docusaurus/types": "2.0.0-beta.9", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@docusaurus/utils-validation": { - "version": "2.0.0-beta.9", - "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-2.0.0-beta.9.tgz", - "integrity": "sha512-8XZ2wdg+HPSVqgFzhfvntPLwX0+sCypvODatXR8A3YUraZYqQU0NK7SLqD1epLpmHjT/bztSq5DydoGoFRJdIA==", - "dependencies": { - "@docusaurus/utils": "2.0.0-beta.9", - "chalk": "^4.1.2", - "joi": "^17.4.2", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@docusaurus/utils/node_modules/@mdx-js/runtime": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/@mdx-js/runtime/-/runtime-1.6.22.tgz", - "integrity": "sha512-p17spaO2+55VLCuxXA3LVHC4phRx60NR2XMdZ+qgVU1lKvEX4y88dmFNOzGDCPLJ03IZyKrJ/rPWWRiBrd9JrQ==", - "dependencies": { - "@mdx-js/mdx": "1.6.22", - "@mdx-js/react": "1.6.22", - "buble-jsx-only": "^0.19.8" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - }, - "peerDependencies": { - "react": "^16.13.1" - } - }, - "node_modules/@emotion/is-prop-valid": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", - "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", - "dependencies": { - "@emotion/memoize": "0.7.4" - } - }, - "node_modules/@emotion/memoize": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", - "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==" - }, - "node_modules/@emotion/stylis": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", - "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==" - }, - "node_modules/@emotion/unitless": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", - "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" - }, - "node_modules/@exodus/schemasafe": { - "version": "1.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@exodus/schemasafe/-/schemasafe-1.0.0-rc.3.tgz", - "integrity": "sha512-GoXw0U2Qaa33m3eUcxuHnHpNvHjNlLo0gtV091XBpaRINaB4X6FGCG5XKxSFNFiPpugUDqNruHzaqpTdDm4AOg==" - }, - "node_modules/@hapi/hoek": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.0.tgz", - "integrity": "sha512-sqKVVVOe5ivCaXDWivIJYVSaEgdQK9ul7a4Kity5Iw7u9+wBAPbX1RMSnLLmp7O4Vzj0WOWwMAJsTL00xwaNug==" - }, - "node_modules/@hapi/topo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", - "dependencies": { - "@hapi/hoek": "^9.0.0" - } - }, - "node_modules/@jsdevtools/ono": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz", - "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==", - "dev": true - }, - "node_modules/@mdx-js/mdx": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.6.22.tgz", - "integrity": "sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA==", - "dependencies": { - "@babel/core": "7.12.9", - "@babel/plugin-syntax-jsx": "7.12.1", - "@babel/plugin-syntax-object-rest-spread": "7.8.3", - "@mdx-js/util": "1.6.22", - "babel-plugin-apply-mdx-type-prop": "1.6.22", - "babel-plugin-extract-import-names": "1.6.22", - "camelcase-css": "2.0.1", - "detab": "2.0.4", - "hast-util-raw": "6.0.1", - "lodash.uniq": "4.5.0", - "mdast-util-to-hast": "10.0.1", - "remark-footnotes": "2.0.0", - "remark-mdx": "1.6.22", - "remark-parse": "8.0.3", - "remark-squeeze-paragraphs": "4.0.0", - "style-to-object": "0.3.0", - "unified": "9.2.0", - "unist-builder": "2.0.3", - "unist-util-visit": "2.0.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@mdx-js/mdx/node_modules/@babel/core": { - "version": "7.12.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz", - "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==", - "dependencies": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.12.5", - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helpers": "^7.12.5", - "@babel/parser": "^7.12.7", - "@babel/template": "^7.12.7", - "@babel/traverse": "^7.12.9", - "@babel/types": "^7.12.7", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.2", - "lodash": "^4.17.19", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@mdx-js/mdx/node_modules/@babel/plugin-syntax-jsx": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", - "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@mdx-js/mdx/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/@mdx-js/react": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-1.6.22.tgz", - "integrity": "sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - }, - "peerDependencies": { - "react": "^16.13.1 || ^17.0.0" - } - }, - "node_modules/@mdx-js/util": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/@mdx-js/util/-/util-1.6.22.tgz", - "integrity": "sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.7.tgz", - "integrity": "sha512-BTIhocbPBSrRmHxOAJFtR18oLhxTtAFDAvL8hY1S3iU8k+E60W/YFs4jrixGzQjMpF4qPXxIQHcjVD9dz1C2QA==", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@polka/url": { - "version": "1.0.0-next.15", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.15.tgz", - "integrity": "sha512-15spi3V28QdevleWBNXE4pIls3nFZmBbUGrW9IVPwiQczuSb9n76TCB4bsk8TSel+I1OkHEdPhu5QKMfY6rQHA==" - }, - "node_modules/@redocly/ajv": { - "version": "8.6.2", - "resolved": "https://registry.npmjs.org/@redocly/ajv/-/ajv-8.6.2.tgz", - "integrity": "sha512-tU8fQs0D76ZKhJ2cWtnfQthWqiZgGBx0gH0+5D8JvaBEBaqA8foPPBt3Nonwr3ygyv5xrw2IzKWgIY86BlGs+w==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@redocly/openapi-core": { - "version": "1.0.0-beta.53", - "resolved": "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-1.0.0-beta.53.tgz", - "integrity": "sha512-n5WixBRb7oWS31v3/cdOW/eNXbr2M4N8+HjHfCA/oQX6Z4ZYqPOJCekw64sQ/fnUQMIQyT6fKqyaf+iO4tG7YA==", - "dependencies": { - "@redocly/ajv": "^8.6.2", - "@types/node": "^14.11.8", - "colorette": "^1.2.0", - "js-levenshtein": "^1.1.6", - "js-yaml": "^3.14.1", - "lodash.isequal": "^4.5.0", - "minimatch": "^3.0.4", - "node-fetch": "^2.6.1", - "yaml-ast-parser": "0.0.43" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@redocly/openapi-core/node_modules/@types/node": { - "version": "14.17.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.4.tgz", - "integrity": "sha512-8kQ3+wKGRNN0ghtEn7EGps/B8CzuBz1nXZEIGGLP2GnwbqYn4dbTs7k+VKLTq1HvZLRCIDtN3Snx1Ege8B7L5A==" - }, - "node_modules/@redocly/openapi-core/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/@redocly/openapi-core/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@redocly/react-dropdown-aria": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@redocly/react-dropdown-aria/-/react-dropdown-aria-2.0.12.tgz", - "integrity": "sha512-feQEZlyBvQsbT/fvpJ4jJ5OLGaUPpnskHYDsY8DGpPymN+HUeDQrqkBEbbKRwMKidFTI2cxk2kJNNTnvdS9jyw==", - "peerDependencies": { - "react": "^16.8.4 || ^17.0.0", - "react-dom": "^16.8.4 || ^17.0.0", - "styled-components": "^5.1.1" - } - }, - "node_modules/@sideway/address": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.2.tgz", - "integrity": "sha512-idTz8ibqWFrPU8kMirL0CoPH/A29XOzzAzpyN3zQ4kAWnzmNfFmRaoMNN6VI8ske5M73HZyhIaW4OuSFIdM4oA==", - "dependencies": { - "@hapi/hoek": "^9.0.0" - } - }, - "node_modules/@sideway/formula": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", - "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==" - }, - "node_modules/@sideway/pinpoint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" - }, - "node_modules/@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/@slorber/static-site-generator-webpack-plugin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@slorber/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-4.0.1.tgz", - "integrity": "sha512-PSv4RIVO1Y3kvHxjvqeVisk3E9XFoO04uwYBDWe217MFqKspplYswTuKLiJu0aLORQWzuQjfVsSlLPojwfYsLw==", - "dependencies": { - "bluebird": "^3.7.1", - "cheerio": "^0.22.0", - "eval": "^0.1.4", - "url": "^0.11.0", - "webpack-sources": "^1.4.3" - } - }, - "node_modules/@svgr/babel-plugin-add-jsx-attribute": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz", - "integrity": "sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==", - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz", - "integrity": "sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==", - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz", - "integrity": "sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==", - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz", - "integrity": "sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==", - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/babel-plugin-svg-dynamic-title": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz", - "integrity": "sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==", - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/babel-plugin-svg-em-dimensions": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz", - "integrity": "sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==", - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/babel-plugin-transform-react-native-svg": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz", - "integrity": "sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==", - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/babel-plugin-transform-svg-component": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz", - "integrity": "sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==", - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/babel-preset": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz", - "integrity": "sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==", - "dependencies": { - "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0", - "@svgr/babel-plugin-remove-jsx-attribute": "^5.4.0", - "@svgr/babel-plugin-remove-jsx-empty-expression": "^5.0.1", - "@svgr/babel-plugin-replace-jsx-attribute-value": "^5.0.1", - "@svgr/babel-plugin-svg-dynamic-title": "^5.4.0", - "@svgr/babel-plugin-svg-em-dimensions": "^5.4.0", - "@svgr/babel-plugin-transform-react-native-svg": "^5.4.0", - "@svgr/babel-plugin-transform-svg-component": "^5.5.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/core": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz", - "integrity": "sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==", - "dependencies": { - "@svgr/plugin-jsx": "^5.5.0", - "camelcase": "^6.2.0", - "cosmiconfig": "^7.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/hast-util-to-babel-ast": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz", - "integrity": "sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==", - "dependencies": { - "@babel/types": "^7.12.6" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/plugin-jsx": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz", - "integrity": "sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==", - "dependencies": { - "@babel/core": "^7.12.3", - "@svgr/babel-preset": "^5.5.0", - "@svgr/hast-util-to-babel-ast": "^5.5.0", - "svg-parser": "^2.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/plugin-svgo": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz", - "integrity": "sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==", - "dependencies": { - "cosmiconfig": "^7.0.0", - "deepmerge": "^4.2.2", - "svgo": "^1.2.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/webpack": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz", - "integrity": "sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==", - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/plugin-transform-react-constant-elements": "^7.12.1", - "@babel/preset-env": "^7.12.1", - "@babel/preset-react": "^7.12.5", - "@svgr/core": "^5.5.0", - "@svgr/plugin-jsx": "^5.5.0", - "@svgr/plugin-svgo": "^5.5.0", - "loader-utils": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/webpack/node_modules/loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "dependencies": { - "defer-to-connect": "^1.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@trysound/sax": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/@types/concat-stream": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-1.6.0.tgz", - "integrity": "sha1-OU2+C7X+5Gs42JZzXoto7yOQ0A0=", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/eslint": { - "version": "7.2.13", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.13.tgz", - "integrity": "sha512-LKmQCWAlnVHvvXq4oasNUMTJJb2GwSyTY8+1C7OH5ILR8mPLaljv1jxL1bXW3xB3jFbQxTKxJAvI8PyjB09aBg==", - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.0.tgz", - "integrity": "sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw==", - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "0.0.50", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" - }, - "node_modules/@types/form-data": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz", - "integrity": "sha1-yayFsqX9GENbjIXZ7LUObWyJP/g=", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/github-slugger": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@types/github-slugger/-/github-slugger-1.3.0.tgz", - "integrity": "sha512-J/rMZa7RqiH/rT29TEVZO4nBoDP9XJOjnbbIofg7GQKs4JIduEO3WLpte+6WeUz/TcrXKlY+bM7FYrp8yFB+3g==" - }, - "node_modules/@types/hast": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.1.tgz", - "integrity": "sha512-viwwrB+6xGzw+G1eWpF9geV3fnsDgXqHG+cqgiHrvQfDUW5hzhCyV7Sy3UJxhfRFBsgky2SSW33qi/YrIkjX5Q==", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/html-minifier-terser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.0.0.tgz", - "integrity": "sha512-NZwaaynfs1oIoLAV1vg18e7QMVDvw+6SQrdJc8w3BwUaoroVSf6EBj/Sk4PBWGxsq0dzhA2drbsuMC1/6C6KgQ==" - }, - "node_modules/@types/http-proxy": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.7.tgz", - "integrity": "sha512-9hdj6iXH64tHSLTY+Vt2eYOGzSogC+JQ2H7bdPWkuh7KXP5qLllWx++t+K9Wk556c3dkDdPws/SpMRi0sdCT1w==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==" - }, - "node_modules/@types/mdast": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.3.tgz", - "integrity": "sha512-SXPBMnFVQg1s00dlMCc/jCdvPqdE4mXaMMCeRlxLDmTAEoegHT53xKtkDnzDTOcmMHUfcjyf36/YYZ6SxRdnsw==", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/node": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.0.0.tgz", - "integrity": "sha512-TmCW5HoZ2o2/z2EYi109jLqIaPIi9y/lc2LmDCWzuCi35bcaQ+OtUh6nwBiFK7SOu25FAU5+YKdqFZUwtqGSdg==" - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" - }, - "node_modules/@types/parse5": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-5.0.3.tgz", - "integrity": "sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==" - }, - "node_modules/@types/prop-types": { - "version": "15.7.4", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", - "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==" - }, - "node_modules/@types/q": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", - "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==" - }, - "node_modules/@types/qs": { - "version": "6.9.6", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.6.tgz", - "integrity": "sha512-0/HnwIfW4ki2D8L8c9GVcG5I72s9jP5GSLVF0VIXDW00kmIpA6O33G7a8n59Tmh7Nz0WUC3rSb7PTY/sdW2JzA==" - }, - "node_modules/@types/react": { - "version": "17.0.15", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.15.tgz", - "integrity": "sha512-uTKHDK9STXFHLaKv6IMnwp52fm0hwU+N89w/p9grdUqcFA6WuqDyPhaWopbNyE1k/VhgzmHl8pu1L4wITtmlLw==", - "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "node_modules/@types/retry": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", - "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==" - }, - "node_modules/@types/sax": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.1.tgz", - "integrity": "sha512-dqYdvN7Sbw8QT/0Ci5rhjE4/iCMJEM0Y9rHpCu+gGXD9Lwbz28t6HI2yegsB6BoV1sShRMU6lAmAcgRjmFy7LA==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/scheduler": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" - }, - "node_modules/@types/unist": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.4.tgz", - "integrity": "sha512-zfyYsDTK1HTGYXU3fTiM76+om93HcFtsZd2M0bO/CL4DiETV7mSa/pIVN/6+G3esOqEMdg2An5cHHbK5t+9w+A==" - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" - }, - "node_modules/@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==" - }, - "node_modules/accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "dependencies": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.4.1.tgz", - "integrity": "sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.1.1.tgz", - "integrity": "sha512-FbJdceMlPHEAWJOILDk1fXD8lnTlEIWFkqtfk+MvmL5q/qlHfN7GEHcsFZWt/Tea9jRNPWUZG4G976nqAAmU9w==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/address": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", - "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==", - "engines": { - "node": ">= 0.12.0" - } - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/ajv/node_modules/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==" - }, - "node_modules/algoliasearch": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.11.0.tgz", - "integrity": "sha512-IXRj8kAP2WrMmj+eoPqPc6P7Ncq1yZkFiyDrjTBObV1ADNL8Z/KdZ+dWC5MmYcBLAbcB/mMCpak5N/D1UIZvsA==", - "dependencies": { - "@algolia/cache-browser-local-storage": "4.11.0", - "@algolia/cache-common": "4.11.0", - "@algolia/cache-in-memory": "4.11.0", - "@algolia/client-account": "4.11.0", - "@algolia/client-analytics": "4.11.0", - "@algolia/client-common": "4.11.0", - "@algolia/client-personalization": "4.11.0", - "@algolia/client-search": "4.11.0", - "@algolia/logger-common": "4.11.0", - "@algolia/logger-console": "4.11.0", - "@algolia/requester-browser-xhr": "4.11.0", - "@algolia/requester-common": "4.11.0", - "@algolia/requester-node-http": "4.11.0", - "@algolia/transporter": "4.11.0" - } - }, - "node_modules/algoliasearch-helper": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.6.2.tgz", - "integrity": "sha512-Xx0NOA6k4ySn+R2l3UMSONAaMkyfmrZ3AP1geEMo32MxDJQJesZABZYsldO9fa6FKQxH91afhi4hO1G0Zc2opg==", - "dependencies": { - "events": "^1.1.1" - }, - "peerDependencies": { - "algoliasearch": ">= 3.1 < 5" - } - }, - "node_modules/alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=" - }, - "node_modules/ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", - "dependencies": { - "string-width": "^4.1.0" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-html-community": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", - "engines": [ - "node >= 0.8.0" - ], - "bin": { - "ansi-html": "bin/ansi-html" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/arg": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.0.tgz", - "integrity": "sha512-4P8Zm2H+BRS+c/xX1LrHw0qKpEhdlZjLCgWy+d78T9vqa2Z2SiD2wMrYuWIAFy5IZUD7nnNXroRttz+0RzlrzQ==" - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "node_modules/array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" - }, - "node_modules/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" - }, - "node_modules/asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/asn1.js/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/assert": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz", - "integrity": "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==", - "dependencies": { - "es6-object-assign": "^1.1.0", - "is-nan": "^1.2.1", - "object-is": "^1.0.1", - "util": "^0.12.0" - } - }, - "node_modules/async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "dependencies": { - "lodash": "^4.17.14" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/autolinker": { - "version": "3.14.3", - "resolved": "https://registry.npmjs.org/autolinker/-/autolinker-3.14.3.tgz", - "integrity": "sha512-t81i2bCpS+s+5FIhatoww9DmpjhbdiimuU9ATEuLxtZMQ7jLv9fyFn7SWNG8IkEfD4AmYyirL1ss9k1aqVWRvg==", - "dev": true, - "dependencies": { - "tslib": "^1.9.3" - } - }, - "node_modules/autolinker/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/autoprefixer": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.0.tgz", - "integrity": "sha512-7FdJ1ONtwzV1G43GDD0kpVMn/qbiNqyOPMFTX5nRffI+7vgWoFEc6DcXOxHJxrWNDXrZh18eDsZjvZGUljSRGA==", - "dependencies": { - "browserslist": "^4.17.5", - "caniuse-lite": "^1.0.30001272", - "fraction.js": "^4.1.1", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.1.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.4.tgz", - "integrity": "sha512-SA5mXJWrId1TaQjfxUYghbqQ/hYioKmLJvPJyDuYRtXXenFNMjj4hSSt1Cf1xsuXSXrtxrVC5Ot4eU6cOtBDdA==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "dependencies": { - "follow-redirects": "^1.14.0" - } - }, - "node_modules/babel-loader": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz", - "integrity": "sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==", - "dependencies": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^1.4.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - }, - "engines": { - "node": ">= 8.9" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "webpack": ">=2" - } - }, - "node_modules/babel-plugin-apply-mdx-type-prop": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.22.tgz", - "integrity": "sha512-VefL+8o+F/DfK24lPZMtJctrCVOfgbqLAGZSkxwhazQv4VxPg3Za/i40fu22KR2m8eEda+IfSOlPLUSIiLcnCQ==", - "dependencies": { - "@babel/helper-plugin-utils": "7.10.4", - "@mdx-js/util": "1.6.22" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - }, - "peerDependencies": { - "@babel/core": "^7.11.6" - } - }, - "node_modules/babel-plugin-apply-mdx-type-prop/node_modules/@babel/helper-plugin-utils": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", - "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" - }, - "node_modules/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==", - "dependencies": { - "object.assign": "^4.1.0" - } - }, - "node_modules/babel-plugin-extract-import-names": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.22.tgz", - "integrity": "sha512-yJ9BsJaISua7d8zNT7oRG1ZLBJCIdZ4PZqmH8qa9N5AK01ifk3fnkc98AXhtzE7UkfCsEumvoQWgoYLhOnJ7jQ==", - "dependencies": { - "@babel/helper-plugin-utils": "7.10.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/babel-plugin-extract-import-names/node_modules/@babel/helper-plugin-utils": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", - "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz", - "integrity": "sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ==", - "dependencies": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.2.2", - "semver": "^6.1.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.5.tgz", - "integrity": "sha512-ninF5MQNwAX9Z7c9ED+H2pGt1mXdP4TqzlHKyPIYmJIYz0N+++uwdM7RnJukklhzJ54Q84vA4ZJkgs7lu5vqcw==", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.2.2", - "core-js-compat": "^3.16.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz", - "integrity": "sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg==", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.2.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-styled-components": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-1.13.1.tgz", - "integrity": "sha512-iY11g5orsdBnvWtXKCFBzDyTxZ9jvmkcYCCs5ONlvASYltDRhieCVzeDC7Do0fSW7psAL0zfVoXB3FHz2CkUSg==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-module-imports": "^7.0.0", - "babel-plugin-syntax-jsx": "^6.18.0", - "lodash": "^4.17.11" - }, - "peerDependencies": { - "styled-components": ">= 2" - } - }, - "node_modules/babel-plugin-syntax-jsx": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", - "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=" - }, - "node_modules/bail": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", - "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=" - }, - "node_modules/better-ajv-errors": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/better-ajv-errors/-/better-ajv-errors-0.6.7.tgz", - "integrity": "sha512-PYgt/sCzR4aGpyNy5+ViSQ77ognMnWq7745zM+/flYO4/Yisdtp9wDQW2IKCyVYPUxQt3E/b5GBSwfhd1LPdlg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "@babel/runtime": "^7.0.0", - "chalk": "^2.4.1", - "core-js": "^3.2.1", - "json-to-ast": "^2.0.3", - "jsonpointer": "^4.0.1", - "leven": "^3.1.0" - }, - "peerDependencies": { - "ajv": "4.11.8 - 6" - } - }, - "node_modules/better-ajv-errors/node_modules/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==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/better-ajv-errors/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/better-ajv-errors/node_modules/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==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/better-ajv-errors/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/better-ajv-errors/node_modules/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=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/better-ajv-errors/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/better-ajv-errors/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "engines": { - "node": "*" - } - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, - "node_modules/bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" - }, - "node_modules/body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "dependencies": { - "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" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/node_modules/bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", - "dependencies": { - "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" - } - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" - }, - "node_modules/boxen": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.0.1.tgz", - "integrity": "sha512-49VBlw+PrWEF51aCmy7QIteYPIFZxSpvqBdP/2itCPPlJ49kj9zg/XPRFrdkne2W+CfwXUls8exMvu1RysZpKA==", - "dependencies": { - "ansi-align": "^3.0.0", - "camelcase": "^6.2.0", - "chalk": "^4.1.0", - "cli-boxes": "^2.2.1", - "string-width": "^4.2.0", - "type-fest": "^0.20.2", - "widest-line": "^3.1.0", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" - }, - "node_modules/browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dependencies": { - "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" - } - }, - "node_modules/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==", - "dependencies": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "node_modules/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==", - "dependencies": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "dependencies": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "node_modules/browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "dependencies": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - } - }, - "node_modules/browserify-sign/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/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==", - "dependencies": { - "pako": "~1.0.5" - } - }, - "node_modules/browserslist": { - "version": "4.17.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.5.tgz", - "integrity": "sha512-I3ekeB92mmpctWBoLXe0d5wPS2cBuRvvW0JyyJHMrk9/HmP2ZjrTboNAZ8iuGqaEIlKguljbQY32OkOJIRrgoA==", - "dependencies": { - "caniuse-lite": "^1.0.30001271", - "electron-to-chromium": "^1.3.878", - "escalade": "^3.1.1", - "node-releases": "^2.0.1", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } - }, - "node_modules/browserslist/node_modules/node-releases": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", - "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==" - }, - "node_modules/buble-jsx-only": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/buble-jsx-only/-/buble-jsx-only-0.19.8.tgz", - "integrity": "sha512-7AW19pf7PrKFnGTEDzs6u9+JZqQwM1VnLS19OlqYDhXomtFFknnoQJAPHeg84RMFWAvOhYrG7harizJNwUKJsA==", - "dependencies": { - "acorn": "^6.1.1", - "acorn-dynamic-import": "^4.0.0", - "acorn-jsx": "^5.0.1", - "chalk": "^2.4.2", - "magic-string": "^0.25.3", - "minimist": "^1.2.0", - "regexpu-core": "^4.5.4" - }, - "bin": { - "buble": "bin/buble" - } - }, - "node_modules/buble-jsx-only/node_modules/acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/buble-jsx-only/node_modules/acorn-dynamic-import": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", - "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", - "peerDependencies": { - "acorn": "^6.0.0" - } - }, - "node_modules/buble-jsx-only/node_modules/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==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/buble-jsx-only/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/buble-jsx-only/node_modules/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==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/buble-jsx-only/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "node_modules/buble-jsx-only/node_modules/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=", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/buble-jsx-only/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "engines": { - "node": ">=4" - } - }, - "node_modules/buble-jsx-only/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/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==" - }, - "node_modules/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==" - }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" - }, - "node_modules/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=" - }, - "node_modules/bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cacheable-request/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cacheable-request/node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/cacheable-request/node_modules/normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/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=" - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "node_modules/camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/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==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/camelize": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz", - "integrity": "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs=" - }, - "node_modules/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==", - "dependencies": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001272", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001272.tgz", - "integrity": "sha512-DV1j9Oot5dydyH1v28g25KoVm7l8MTxazwuiH3utWiAS6iL/9Nh//TGwqFEeqqN8nnWYQ8HHhUq+o4QPt9kvYw==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } - }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "node_modules/ccount": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", - "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/character-entities": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", - "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/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==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/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==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/cheerio": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", - "integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=", - "dependencies": { - "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" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/chokidar": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/ci-info": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", - "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==" - }, - "node_modules/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==", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/classnames": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz", - "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" - }, - "node_modules/clean-css": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.1.5.tgz", - "integrity": "sha512-9dr/cU/LjMpU57PXlSvDkVRh0rPxJBXiBtD0+SgYt8ahTCsXtfKjCkNYgIoTC6mBg8CFr5EKhW3DKCaGMUbUfQ==", - "dependencies": { - "source-map": "~0.6.0" - }, - "engines": { - "node": ">= 10.0" - } - }, - "node_modules/clean-css/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "engines": { - "node": ">=6" - } - }, - "node_modules/cli-boxes": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "dependencies": { - "mimic-response": "^1.0.0" - } - }, - "node_modules/clsx": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", - "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true, - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/coa": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", - "dependencies": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/coa/node_modules/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==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/coa/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/coa/node_modules/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==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/coa/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "node_modules/coa/node_modules/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=", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/coa/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "engines": { - "node": ">=4" - } - }, - "node_modules/coa/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/code-error-fragment": { - "version": "0.0.230", - "resolved": "https://registry.npmjs.org/code-error-fragment/-/code-error-fragment-0.0.230.tgz", - "integrity": "sha512-cadkfKp6932H8UkhzE/gcUqhRMNf8jHzkAN7+5Myabswaghu4xABTgPHDCjW+dBAJxj/SpkTYokpzDqY4pCzQw==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/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=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/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==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/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==" - }, - "node_modules/colord": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.1.tgz", - "integrity": "sha512-4LBMSt09vR0uLnPVkOUBnmxgoaeN4ewRbx801wY/bXcltXfpR/G46OdWn96XpYmCWuYvO46aBZP4NgX8HpNAcw==" - }, - "node_modules/colorette": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", - "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==" - }, - "node_modules/combine-promises": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/combine-promises/-/combine-promises-1.1.0.tgz", - "integrity": "sha512-ZI9jvcLDxqwaXEixOhArm3r7ReIivsXkpbyEWyeOhzz1QS0iSgBPnWvEqvIQtYyamGCYA88gFhmUrs9hrrQ0pg==", - "engines": { - "node": ">=10" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/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==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" - }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dependencies": { - "mime-db": ">= 1.43.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "dependencies": { - "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" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/compression/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/compression/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "engines": [ - "node >= 0.8" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/concat-stream/node_modules/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==", - "dependencies": { - "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" - } - }, - "node_modules/concat-stream/node_modules/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==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/configstore": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", - "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", - "dependencies": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/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==", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/consola": { - "version": "2.15.3", - "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", - "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==" - }, - "node_modules/console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" - }, - "node_modules/constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" - }, - "node_modules/content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "dependencies": { - "safe-buffer": "5.1.2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/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==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "node_modules/cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, - "node_modules/copy-text-to-clipboard": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/copy-text-to-clipboard/-/copy-text-to-clipboard-3.0.1.tgz", - "integrity": "sha512-rvVsHrpFcL4F2P8ihsoLdFHmd404+CMg71S756oRSeQgqk51U3kicGdnvfkrxva0xXH92SjGS62B0XIJsbh+9Q==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/copy-webpack-plugin": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-9.0.1.tgz", - "integrity": "sha512-14gHKKdYIxF84jCEgPgYXCPpldbwpxxLbCmA7LReY7gvbaT555DgeBWBgBZM116tv/fO6RRJrsivBqRyRlukhw==", - "dependencies": { - "fast-glob": "^3.2.5", - "glob-parent": "^6.0.0", - "globby": "^11.0.3", - "normalize-path": "^3.0.0", - "p-limit": "^3.1.0", - "schema-utils": "^3.0.0", - "serialize-javascript": "^6.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - } - }, - "node_modules/copy-webpack-plugin/node_modules/glob-parent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.0.tgz", - "integrity": "sha512-Hdd4287VEJcZXUwv1l8a+vXC1GjOQqXe+VS30w/ypihpcnu9M1n3xeYeJu5CBpeEQj2nAab2xxz28GuA3vp4Ww==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/copy-webpack-plugin/node_modules/schema-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", - "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", - "dependencies": { - "@types/json-schema": "^7.0.7", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/copyfiles": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/copyfiles/-/copyfiles-2.4.1.tgz", - "integrity": "sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==", - "dependencies": { - "glob": "^7.0.5", - "minimatch": "^3.0.3", - "mkdirp": "^1.0.4", - "noms": "0.0.0", - "through2": "^2.0.1", - "untildify": "^4.0.0", - "yargs": "^16.1.0" - }, - "bin": { - "copyfiles": "copyfiles", - "copyup": "copyfiles" - } - }, - "node_modules/core-js": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.19.0.tgz", - "integrity": "sha512-L1TpFRWXZ76vH1yLM+z6KssLZrP8Z6GxxW4auoCj+XiViOzNPJCAuTIkn03BGdFe6Z5clX5t64wRIRypsZQrUg==", - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-js-compat": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.0.tgz", - "integrity": "sha512-R09rKZ56ccGBebjTLZHvzDxhz93YPT37gBm6qUhnwj3Kt7aCjjZWD1injyNbyeFHxNKfeZBSyds6O9n3MKq1sw==", - "dependencies": { - "browserslist": "^4.17.5", - "semver": "7.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-js-compat/node_modules/semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/core-js-pure": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.19.0.tgz", - "integrity": "sha512-UEQk8AxyCYvNAs6baNoPqDADv7BX0AmBLGxVsrAifPPx/C8EAzV4Q+2ZUJqVzfI2TQQEZITnwUkWcHpgc/IubQ==", - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/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=" - }, - "node_modules/cosmiconfig": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", - "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dependencies": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - } - }, - "node_modules/create-ecdh/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/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==", - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "node_modules/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==", - "dependencies": { - "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" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/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==", - "dependencies": { - "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" - }, - "engines": { - "node": "*" - } - }, - "node_modules/crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/css-color-keywords": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", - "integrity": "sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU=", - "engines": { - "node": ">=4" - } - }, - "node_modules/css-color-names": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-1.0.1.tgz", - "integrity": "sha512-/loXYOch1qU1biStIFsHH8SxTmOseh1IJqFvy8IujXOm1h+QjUdDhkzOrR5HG8K8mlxREj0yfi8ewCHx0eMxzA==", - "engines": { - "node": "*" - } - }, - "node_modules/css-declaration-sorter": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.0.3.tgz", - "integrity": "sha512-52P95mvW1SMzuRZegvpluT6yEv0FqQusydKQPZsNN5Q7hh8EwQvN8E2nwuJ16BBvNN6LcoIZXu/Bk58DAhrrxw==", - "dependencies": { - "timsort": "^0.3.0" - }, - "engines": { - "node": ">= 10" - }, - "peerDependencies": { - "postcss": "^8.0.9" - } - }, - "node_modules/css-loader": { - "version": "5.2.6", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.2.6.tgz", - "integrity": "sha512-0wyN5vXMQZu6BvjbrPdUJvkCzGEO24HC7IS7nW4llc6BBFC+zwR9CKtYGv63Puzsg10L/o12inMY5/2ByzfD6w==", - "dependencies": { - "icss-utils": "^5.1.0", - "loader-utils": "^2.0.0", - "postcss": "^8.2.15", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.1.0", - "schema-utils": "^3.0.0", - "semver": "^7.3.5" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.27.0 || ^5.0.0" - } - }, - "node_modules/css-loader/node_modules/loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/css-loader/node_modules/schema-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", - "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", - "dependencies": { - "@types/json-schema": "^7.0.7", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/css-minimizer-webpack-plugin": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.0.2.tgz", - "integrity": "sha512-B3I5e17RwvKPJwsxjjWcdgpU/zqylzK1bPVghcmpFHRL48DXiBgrtqz1BJsn68+t/zzaLp9kYAaEDvQ7GyanFQ==", - "dependencies": { - "cssnano": "^5.0.6", - "jest-worker": "^27.0.2", - "p-limit": "^3.0.2", - "postcss": "^8.3.5", - "schema-utils": "^3.0.0", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "clean-css": { - "optional": true - }, - "csso": { - "optional": true - } - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", - "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", - "dependencies": { - "@types/json-schema": "^7.0.7", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", - "dependencies": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" - } - }, - "node_modules/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==" - }, - "node_modules/css-to-react-native": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.0.0.tgz", - "integrity": "sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ==", - "dependencies": { - "camelize": "^1.0.0", - "css-color-keywords": "^1.0.0", - "postcss-value-parser": "^4.0.2" - } - }, - "node_modules/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==", - "dependencies": { - "mdn-data": "2.0.4", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/css-tree/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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==", - "engines": { - "node": "*" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cssnano": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.0.8.tgz", - "integrity": "sha512-Lda7geZU0Yu+RZi2SGpjYuQz4HI4/1Y+BhdD0jL7NXAQ5larCzVn+PUGuZbDMYz904AXXCOgO5L1teSvgu7aFg==", - "dependencies": { - "cssnano-preset-default": "^5.1.4", - "is-resolvable": "^1.1.0", - "lilconfig": "^2.0.3", - "yaml": "^1.10.2" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/cssnano" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/cssnano-preset-advanced": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-5.1.5.tgz", - "integrity": "sha512-1u66ijw1aYyxxr9F2nFlBGS3UlzsRHUrGxVYf1CLiYZhvkcuX/+NHkgyO4P9da/j2C2Y2EvMsqk9Nd4VZkZ9jA==", - "dependencies": { - "autoprefixer": "^10.3.7", - "cssnano-preset-default": "^5.1.5", - "postcss-discard-unused": "^5.0.1", - "postcss-merge-idents": "^5.0.1", - "postcss-reduce-idents": "^5.0.1", - "postcss-zindex": "^5.0.1" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/cssnano-preset-default": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.5.tgz", - "integrity": "sha512-fF00UI+d3PWkGfMd62geqmoUe5h+LOhGE2GH4Fqq3beNKdCU1LWwLUyIcu4/A72lWv0737cHey5zhhWw3rW0sA==", - "dependencies": { - "css-declaration-sorter": "^6.0.3", - "cssnano-utils": "^2.0.1", - "postcss-calc": "^8.0.0", - "postcss-colormin": "^5.2.1", - "postcss-convert-values": "^5.0.2", - "postcss-discard-comments": "^5.0.1", - "postcss-discard-duplicates": "^5.0.1", - "postcss-discard-empty": "^5.0.1", - "postcss-discard-overridden": "^5.0.1", - "postcss-merge-longhand": "^5.0.2", - "postcss-merge-rules": "^5.0.2", - "postcss-minify-font-values": "^5.0.1", - "postcss-minify-gradients": "^5.0.3", - "postcss-minify-params": "^5.0.1", - "postcss-minify-selectors": "^5.1.0", - "postcss-normalize-charset": "^5.0.1", - "postcss-normalize-display-values": "^5.0.1", - "postcss-normalize-positions": "^5.0.1", - "postcss-normalize-repeat-style": "^5.0.1", - "postcss-normalize-string": "^5.0.1", - "postcss-normalize-timing-functions": "^5.0.1", - "postcss-normalize-unicode": "^5.0.1", - "postcss-normalize-url": "^5.0.2", - "postcss-normalize-whitespace": "^5.0.1", - "postcss-ordered-values": "^5.0.2", - "postcss-reduce-initial": "^5.0.1", - "postcss-reduce-transforms": "^5.0.1", - "postcss-svgo": "^5.0.3", - "postcss-unique-selectors": "^5.0.1" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/cssnano-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-2.0.1.tgz", - "integrity": "sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ==", - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "dependencies": { - "css-tree": "^1.1.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/csso/node_modules/css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/csso/node_modules/mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" - }, - "node_modules/csso/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/csstype": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.8.tgz", - "integrity": "sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw==" - }, - "node_modules/d3": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/d3/-/d3-5.16.0.tgz", - "integrity": "sha512-4PL5hHaHwX4m7Zr1UapXW23apo6pexCgdetdJ5kTmADpG/7T9Gkxw0M0tf/pjoB63ezCCm0u5UaFYy2aMt0Mcw==", - "dependencies": { - "d3-array": "1", - "d3-axis": "1", - "d3-brush": "1", - "d3-chord": "1", - "d3-collection": "1", - "d3-color": "1", - "d3-contour": "1", - "d3-dispatch": "1", - "d3-drag": "1", - "d3-dsv": "1", - "d3-ease": "1", - "d3-fetch": "1", - "d3-force": "1", - "d3-format": "1", - "d3-geo": "1", - "d3-hierarchy": "1", - "d3-interpolate": "1", - "d3-path": "1", - "d3-polygon": "1", - "d3-quadtree": "1", - "d3-random": "1", - "d3-scale": "2", - "d3-scale-chromatic": "1", - "d3-selection": "1", - "d3-shape": "1", - "d3-time": "1", - "d3-time-format": "2", - "d3-timer": "1", - "d3-transition": "1", - "d3-voronoi": "1", - "d3-zoom": "1" - } - }, - "node_modules/d3-array": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz", - "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==" - }, - "node_modules/d3-axis": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-1.0.12.tgz", - "integrity": "sha512-ejINPfPSNdGFKEOAtnBtdkpr24c4d4jsei6Lg98mxf424ivoDP2956/5HDpIAtmHo85lqT4pruy+zEgvRUBqaQ==" - }, - "node_modules/d3-brush": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-1.1.6.tgz", - "integrity": "sha512-7RW+w7HfMCPyZLifTz/UnJmI5kdkXtpCbombUSs8xniAyo0vIbrDzDwUJB6eJOgl9u5DQOt2TQlYumxzD1SvYA==", - "dependencies": { - "d3-dispatch": "1", - "d3-drag": "1", - "d3-interpolate": "1", - "d3-selection": "1", - "d3-transition": "1" - } - }, - "node_modules/d3-chord": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-1.0.6.tgz", - "integrity": "sha512-JXA2Dro1Fxw9rJe33Uv+Ckr5IrAa74TlfDEhE/jfLOaXegMQFQTAgAw9WnZL8+HxVBRXaRGCkrNU7pJeylRIuA==", - "dependencies": { - "d3-array": "1", - "d3-path": "1" - } - }, - "node_modules/d3-collection": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.7.tgz", - "integrity": "sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==" - }, - "node_modules/d3-color": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.1.tgz", - "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==" - }, - "node_modules/d3-contour": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-1.3.2.tgz", - "integrity": "sha512-hoPp4K/rJCu0ladiH6zmJUEz6+u3lgR+GSm/QdM2BBvDraU39Vr7YdDCicJcxP1z8i9B/2dJLgDC1NcvlF8WCg==", - "dependencies": { - "d3-array": "^1.1.1" - } - }, - "node_modules/d3-delaunay": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", - "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", - "dependencies": { - "delaunator": "5" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-dispatch": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.6.tgz", - "integrity": "sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA==" - }, - "node_modules/d3-drag": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-1.2.5.tgz", - "integrity": "sha512-rD1ohlkKQwMZYkQlYVCrSFxsWPzI97+W+PaEIBNTMxRuxz9RF0Hi5nJWHGVJ3Om9d2fRTe1yOBINJyy/ahV95w==", - "dependencies": { - "d3-dispatch": "1", - "d3-selection": "1" - } - }, - "node_modules/d3-dsv": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-1.2.0.tgz", - "integrity": "sha512-9yVlqvZcSOMhCYzniHE7EVUws7Fa1zgw+/EAV2BxJoG3ME19V6BQFBwI855XQDsxyOuG7NibqRMTtiF/Qup46g==", - "dependencies": { - "commander": "2", - "iconv-lite": "0.4", - "rw": "1" - }, - "bin": { - "csv2json": "bin/dsv2json", - "csv2tsv": "bin/dsv2dsv", - "dsv2dsv": "bin/dsv2dsv", - "dsv2json": "bin/dsv2json", - "json2csv": "bin/json2dsv", - "json2dsv": "bin/json2dsv", - "json2tsv": "bin/json2dsv", - "tsv2csv": "bin/dsv2dsv", - "tsv2json": "bin/dsv2json" - } - }, - "node_modules/d3-dsv/node_modules/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==" - }, - "node_modules/d3-ease": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.7.tgz", - "integrity": "sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ==" - }, - "node_modules/d3-fetch": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-1.2.0.tgz", - "integrity": "sha512-yC78NBVcd2zFAyR/HnUiBS7Lf6inSCoWcSxFfw8FYL7ydiqe80SazNwoffcqOfs95XaLo7yebsmQqDKSsXUtvA==", - "dependencies": { - "d3-dsv": "1" - } - }, - "node_modules/d3-force": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-1.2.1.tgz", - "integrity": "sha512-HHvehyaiUlVo5CxBJ0yF/xny4xoaxFxDnBXNvNcfW9adORGZfyNF1dj6DGLKyk4Yh3brP/1h3rnDzdIAwL08zg==", - "dependencies": { - "d3-collection": "1", - "d3-dispatch": "1", - "d3-quadtree": "1", - "d3-timer": "1" - } - }, - "node_modules/d3-format": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.4.5.tgz", - "integrity": "sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ==" - }, - "node_modules/d3-geo": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.12.1.tgz", - "integrity": "sha512-XG4d1c/UJSEX9NfU02KwBL6BYPj8YKHxgBEw5om2ZnTRSbIcego6dhHwcxuSR3clxh0EpE38os1DVPOmnYtTPg==", - "dependencies": { - "d3-array": "1" - } - }, - "node_modules/d3-hierarchy": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz", - "integrity": "sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==" - }, - "node_modules/d3-interpolate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.4.0.tgz", - "integrity": "sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==", - "dependencies": { - "d3-color": "1" - } - }, - "node_modules/d3-path": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", - "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==" - }, - "node_modules/d3-polygon": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-1.0.6.tgz", - "integrity": "sha512-k+RF7WvI08PC8reEoXa/w2nSg5AUMTi+peBD9cmFc+0ixHfbs4QmxxkarVal1IkVkgxVuk9JSHhJURHiyHKAuQ==" - }, - "node_modules/d3-quadtree": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-1.0.7.tgz", - "integrity": "sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA==" - }, - "node_modules/d3-random": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-1.1.2.tgz", - "integrity": "sha512-6AK5BNpIFqP+cx/sreKzNjWbwZQCSUatxq+pPRmFIQaWuoD+NrbVWw7YWpHiXpCQ/NanKdtGDuB+VQcZDaEmYQ==" - }, - "node_modules/d3-scale": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-2.2.2.tgz", - "integrity": "sha512-LbeEvGgIb8UMcAa0EATLNX0lelKWGYDQiPdHj+gLblGVhGLyNbaCn3EvrJf0A3Y/uOOU5aD6MTh5ZFCdEwGiCw==", - "dependencies": { - "d3-array": "^1.2.0", - "d3-collection": "1", - "d3-format": "1", - "d3-interpolate": "1", - "d3-time": "1", - "d3-time-format": "2" - } - }, - "node_modules/d3-scale-chromatic": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-1.5.0.tgz", - "integrity": "sha512-ACcL46DYImpRFMBcpk9HhtIyC7bTBR4fNOPxwVSl0LfulDAwyiHyPOTqcDG1+t5d4P9W7t/2NAuWu59aKko/cg==", - "dependencies": { - "d3-color": "1", - "d3-interpolate": "1" - } - }, - "node_modules/d3-selection": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.4.2.tgz", - "integrity": "sha512-SJ0BqYihzOjDnnlfyeHT0e30k0K1+5sR3d5fNueCNeuhZTnGw4M4o8mqJchSwgKMXCNFo+e2VTChiSJ0vYtXkg==" - }, - "node_modules/d3-shape": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", - "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", - "dependencies": { - "d3-path": "1" - } - }, - "node_modules/d3-time": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.1.0.tgz", - "integrity": "sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==" - }, - "node_modules/d3-time-format": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.3.0.tgz", - "integrity": "sha512-guv6b2H37s2Uq/GefleCDtbe0XZAuy7Wa49VGkPVPMfLL9qObgBST3lEHJBMUp8S7NdLQAGIvr2KXk8Hc98iKQ==", - "dependencies": { - "d3-time": "1" - } - }, - "node_modules/d3-timer": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.10.tgz", - "integrity": "sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==" - }, - "node_modules/d3-transition": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-1.3.2.tgz", - "integrity": "sha512-sc0gRU4PFqZ47lPVHloMn9tlPcv8jxgOQg+0zjhfZXMQuvppjG6YuwdMBE0TuqCZjeJkLecku/l9R0JPcRhaDA==", - "dependencies": { - "d3-color": "1", - "d3-dispatch": "1", - "d3-ease": "1", - "d3-interpolate": "1", - "d3-selection": "^1.1.0", - "d3-timer": "1" - } - }, - "node_modules/d3-voronoi": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/d3-voronoi/-/d3-voronoi-1.1.4.tgz", - "integrity": "sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg==" - }, - "node_modules/d3-zoom": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-1.8.3.tgz", - "integrity": "sha512-VoLXTK4wvy1a0JpH2Il+F2CiOhVu7VRXWF5M/LroMIh3/zBAC3WAt7QoIvPibOavVo20hN6/37vwAsdBejLyKQ==", - "dependencies": { - "d3-dispatch": "1", - "d3-drag": "1", - "d3-interpolate": "1", - "d3-selection": "1", - "d3-transition": "1" - } - }, - "node_modules/dagre": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/dagre/-/dagre-0.8.5.tgz", - "integrity": "sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==", - "dependencies": { - "graphlib": "^2.1.8", - "lodash": "^4.17.15" - } - }, - "node_modules/dagre-d3": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/dagre-d3/-/dagre-d3-0.6.4.tgz", - "integrity": "sha512-e/6jXeCP7/ptlAM48clmX4xTZc5Ek6T6kagS7Oz2HrYSdqcLZFLqpAfh7ldbZRFfxCZVyh61NEPR08UQRVxJzQ==", - "dependencies": { - "d3": "^5.14", - "dagre": "^0.8.5", - "graphlib": "^2.1.8", - "lodash": "^4.17.15" - } - }, - "node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decko": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decko/-/decko-1.2.0.tgz", - "integrity": "sha1-/UPHNelnuAEzBohKVvvmZZlraBc=" - }, - "node_modules/decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "dependencies": { - "mimic-response": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/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==", - "dependencies": { - "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" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", - "dependencies": { - "execa": "^5.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" - }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "engines": { - "node": ">=8" - } - }, - "node_modules/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==", - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/del": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", - "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", - "dependencies": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/delaunator": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", - "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", - "dependencies": { - "robust-predicates": "^3.0.0" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, - "node_modules/detab": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detab/-/detab-2.0.4.tgz", - "integrity": "sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g==", - "dependencies": { - "repeat-string": "^1.5.4" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" - }, - "node_modules/detect-port": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.3.0.tgz", - "integrity": "sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ==", - "dependencies": { - "address": "^1.0.1", - "debug": "^2.6.0" - }, - "bin": { - "detect": "bin/detect-port", - "detect-port": "bin/detect-port" - }, - "engines": { - "node": ">= 4.2.1" - } - }, - "node_modules/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==", - "dependencies": { - "address": "^1.0.1", - "debug": "^2.6.0" - }, - "bin": { - "detect": "bin/detect-port", - "detect-port": "bin/detect-port" - }, - "engines": { - "node": ">= 4.2.1" - } - }, - "node_modules/detect-port-alt/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/detect-port-alt/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/detect-port/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/detect-port/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dependencies": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "node_modules/diffie-hellman/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=" - }, - "node_modules/dns-packet": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", - "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", - "dependencies": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", - "dependencies": { - "buffer-indexof": "^1.0.0" - } - }, - "node_modules/docusaurus-plugin-redoc": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/docusaurus-plugin-redoc/-/docusaurus-plugin-redoc-0.4.1.tgz", - "integrity": "sha512-NVfikrSVySGFLNFOkJAZQNldNG+Pb2SVAOdARzUDryIkmiz71UdD5gFr+4SGa3cYAV8ieRLuUr6CrsFpCjSQ1g==", - "dependencies": { - "@docusaurus/types": "^2.0.0-beta.0", - "@docusaurus/utils": "^2.0.0-beta.0", - "joi": "^17.2.1", - "yaml": "^1.10.0" - }, - "engines": { - "node": ">=10.15.1" - } - }, - "node_modules/docusaurus-theme-redoc": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/docusaurus-theme-redoc/-/docusaurus-theme-redoc-0.4.4.tgz", - "integrity": "sha512-TnphakFb3InZF808cDMT6KxMVfZzZY+QIb0TNDJynX3OItmJTx0SYs+q8XyZNkP2TwXSJY0bhsoiVu3kMScI2A==", - "dependencies": { - "@docusaurus/types": "^2.0.0-beta.0", - "clsx": "^1.1.1", - "copyfiles": "^2.4.1", - "lodash": "^4.17.21", - "mobx": "^6.3.0", - "node-polyfill-webpack-plugin": "^1.1.3", - "redoc": "^2.0.0-rc.54", - "styled-components": "^5.3.0", - "to-arraybuffer": "^1.0.1" - }, - "engines": { - "node": ">=10.15.1" - } - }, - "node_modules/dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", - "dependencies": { - "utila": "~0.4" - } - }, - "node_modules/dom-serializer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", - "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", - "dependencies": { - "domelementtype": "^1.3.0", - "entities": "^1.1.1" - } - }, - "node_modules/domain-browser": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.19.0.tgz", - "integrity": "sha512-fRA+BaAWOR/yr/t7T9E9GJztHPeFjj8U35ajyAjCDtAAnTn1Rc1f6W6VGPJrO1tkQv9zWu+JRof7z6oQtiYVFQ==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://bevry.me/fund" - } - }, - "node_modules/domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" - }, - "node_modules/domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "dependencies": { - "domelementtype": "1" - } - }, - "node_modules/dompurify": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.3.4.tgz", - "integrity": "sha512-6BVcgOAVFXjI0JTjEvZy901Rghm+7fDQOrNIcxB4+gdhj6Kwp6T9VBhBY/AbagKHJocRkDYGd6wvI+p4/10xtQ==" - }, - "node_modules/domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", - "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "node_modules/dot": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dot/-/dot-1.1.3.tgz", - "integrity": "sha512-/nt74Rm+PcfnirXGEdhZleTwGC2LMnuKTeeTIlI82xb5loBBoXNYzr2ezCroPSMtilK8EZIfcNZwOcHN+ib1Lg==", - "dev": true, - "engines": [ - "node >=0.2.6" - ], - "bin": { - "dottojs": "bin/dot-packer" - } - }, - "node_modules/dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dependencies": { - "is-obj": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dot-prop/node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "engines": { - "node": ">=8" - } - }, - "node_modules/drange": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/drange/-/drange-1.1.1.tgz", - "integrity": "sha512-pYxfDYpued//QpnLIm4Avk7rsNtAtQkUES2cwAYSvD/wd2pKD71gN2Ebj3e7klzXwjocvE8c5vx/1fxwpqmSxA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" - }, - "node_modules/duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "node_modules/electron-to-chromium": { - "version": "1.3.883", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.883.tgz", - "integrity": "sha512-goyjNx4wB9j911PBteb+AXNbErug7rJVkmDXWdw5SCVn2JlARBwsqucPkvp1h5mXWxHUbBRK3bwXTrqSxSiAIQ==" - }, - "node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/emoticon": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/emoticon/-/emoticon-3.2.0.tgz", - "integrity": "sha512-SNujglcLTTg+lDAcApPNgEdudaqQFiAbJCqzjNxJkvN9vAwCGi0uu8IUVvx+f16h+V44KCY6Y2yboroc9pilHg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/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==", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", - "integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" - }, - "node_modules/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==", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-abstract": { - "version": "1.18.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.3.tgz", - "integrity": "sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw==", - "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.3", - "is-string": "^1.0.6", - "object-inspect": "^1.10.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" - }, - "node_modules/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==", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es6-object-assign": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", - "integrity": "sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=" - }, - "node_modules/es6-promise": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", - "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=" - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-goat": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", - "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eta": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/eta/-/eta-1.12.3.tgz", - "integrity": "sha512-qHixwbDLtekO/d51Yr4glcaUJCIjGVJyTzuqV4GPlgZo1YpgOKG+avQynErZIYrfM6JIJdtiG2Kox8tbb+DoGg==", - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "url": "https://github.com/eta-dev/eta?sponsor=1" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/eval": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/eval/-/eval-0.1.6.tgz", - "integrity": "sha512-o0XUw+5OGkXw4pJZzQoXUk+H87DHuC+7ZE//oSrRGtatTmr12oTnLfg6QOq9DyTt0c/p4TwzgmkKrBzWTSizyQ==", - "dependencies": { - "require-like": ">= 0.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/event-stream": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", - "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", - "dev": true, - "dependencies": { - "duplexer": "~0.1.1", - "from": "~0", - "map-stream": "~0.1.0", - "pause-stream": "0.0.11", - "split": "0.3", - "stream-combiner": "~0.0.4", - "through": "~2.3.1" - } - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - }, - "node_modules/events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/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==", - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", - "dependencies": { - "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" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/express/node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "node_modules/fast-glob": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.6.tgz", - "integrity": "sha512-GnLuqj/pvQ7pX8/L4J84nijv6sAnlwvSDpMkJi9i7nPmPxGtRPkBSStfvDW5l6nMdX9VWe+pkKWFTgD+vF2QSQ==", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/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==" - }, - "node_modules/fast-safe-stringify": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", - "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==" - }, - "node_modules/fast-url-parser": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", - "integrity": "sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0=", - "dependencies": { - "punycode": "^1.3.2" - } - }, - "node_modules/fast-url-parser/node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - }, - "node_modules/fastq": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.1.tgz", - "integrity": "sha512-HOnr8Mc60eNYl1gzwp6r5RoUyAn5/glBolUzP/Ez6IFVPMPirxn/9phgL6zhOtaTy7ISwPvQ+wT+hfcRZh/bzw==", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dependencies": { - "websocket-driver": ">=0.5.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/feed": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/feed/-/feed-4.2.2.tgz", - "integrity": "sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==", - "dependencies": { - "xml-js": "^1.6.11" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/figures/node_modules/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=", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/file-is-binary": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-is-binary/-/file-is-binary-1.0.0.tgz", - "integrity": "sha1-XkGAbRvK5FjI/sMv484SLbu8Q1Y=", - "dependencies": { - "is-binary-buffer": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/file-loader": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", - "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", - "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/file-loader/node_modules/loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/file-loader/node_modules/schema-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", - "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", - "dependencies": { - "@types/json-schema": "^7.0.7", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/filesize": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.4.0.tgz", - "integrity": "sha512-mjFIpOHC4jbfcTfoh4rkWpI31mF7viw9ikj/JyLoKzqlwG/YsefKfvYlYhdYdg/9mtK2z1AzgN/0LvVQ3zdlSQ==", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/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==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/filter-obj": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-2.0.2.tgz", - "integrity": "sha512-lO3ttPjHZRfjMcxWKb1j1eDhTFsu4meeR3lnMcnBFhk6RuLhvEiuALu2TlfL310ph4lCYYwgF/ElIjdP739tdg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/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==", - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/follow-redirects": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.1.tgz", - "integrity": "sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" - }, - "node_modules/fork-ts-checker-webpack-plugin": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.4.0.tgz", - "integrity": "sha512-3I3wFkc4DbzaUDPWEi96wdYGu4EKtxBafhZYm0o4mX51d9bphAY4P3mBl8K5mFXFJqVzHfmdbm9kLGnm7vwwBg==", - "dependencies": { - "@babel/code-frame": "^7.8.3", - "@types/json-schema": "^7.0.5", - "chalk": "^4.1.0", - "chokidar": "^3.4.2", - "cosmiconfig": "^6.0.0", - "deepmerge": "^4.2.2", - "fs-extra": "^9.0.0", - "glob": "^7.1.6", - "memfs": "^3.1.2", - "minimatch": "^3.0.4", - "schema-utils": "2.7.0", - "semver": "^7.3.2", - "tapable": "^1.0.0" - }, - "engines": { - "node": ">=10", - "yarn": ">=1.0.0" - }, - "peerDependencies": { - "eslint": ">= 6", - "typescript": ">= 2.7", - "vue-template-compiler": "*", - "webpack": ">= 4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - }, - "vue-template-compiler": { - "optional": true - } - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", - "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", - "dependencies": { - "@types/json-schema": "^7.0.4", - "ajv": "^6.12.2", - "ajv-keywords": "^3.4.1" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/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 - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fraction.js": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.1.tgz", - "integrity": "sha512-MHOhvvxHTfRFpF1geTK9czMIZ6xclsEor2wkIGYYq+PxcQqT7vStJqjhe6S1TenZrMZzo+wlqOufBDVepUEgPg==", - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://www.patreon.com/infusion" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/from": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", - "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", - "dev": true - }, - "node_modules/fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/fs-monkey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", - "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==" - }, - "node_modules/fs-readfile-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fs-readfile-promise/-/fs-readfile-promise-2.0.1.tgz", - "integrity": "sha1-gAI4I5gfn//+AWCei+Zo9prknnA=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2" - } - }, - "node_modules/fs-writefile-promise": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fs-writefile-promise/-/fs-writefile-promise-1.0.3.tgz", - "integrity": "sha1-4C+bWP/CVe2CKtx6ARFPRF1I0GM=", - "dev": true, - "dependencies": { - "mkdirp-promise": "^1.0.0", - "pinkie-promise": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/fs-writefile-promise/node_modules/pinkie": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-1.0.0.tgz", - "integrity": "sha1-Wkfyi6EBXQIBvae/DzWOR77Ix+Q=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fs-writefile-promise/node_modules/pinkie-promise": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-1.0.0.tgz", - "integrity": "sha1-0dpn9UglY7t89X8oauKCLs+/NnA=", - "dev": true, - "dependencies": { - "pinkie": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/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==" - }, - "node_modules/get-port": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", - "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", - "engines": { - "node": ">=4" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/github-slugger": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.4.0.tgz", - "integrity": "sha512-w0dzqw/nt51xMVmlaV1+JRzN+oCa1KfcgGEWhxUG16wbdA+Xnt/yoFO8Z8x/V82ZcZ0wy6ln9QDup5avbhiDhQ==" - }, - "node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dependencies": { - "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" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" - }, - "node_modules/global-dirs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", - "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", - "dependencies": { - "ini": "2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/global-dirs/node_modules/ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "engines": { - "node": ">=10" - } - }, - "node_modules/global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "dependencies": { - "global-prefix": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "dependencies": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/global-prefix/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "dependencies": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/got/node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==" - }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "node_modules/graphlib": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz", - "integrity": "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==", - "dependencies": { - "lodash": "^4.17.15" - } - }, - "node_modules/gray-matter": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", - "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", - "dependencies": { - "js-yaml": "^3.13.1", - "kind-of": "^6.0.2", - "section-matter": "^1.0.0", - "strip-bom-string": "^1.0.0" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/gray-matter/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/gray-matter/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/gzip-size": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", - "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", - "dependencies": { - "duplexer": "^0.1.1", - "pify": "^4.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/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==" - }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", - "dev": true, - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-ansi/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-yarn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/hash-base/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/hast-to-hyperscript": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz", - "integrity": "sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA==", - "dependencies": { - "@types/unist": "^2.0.3", - "comma-separated-tokens": "^1.0.0", - "property-information": "^5.3.0", - "space-separated-tokens": "^1.0.0", - "style-to-object": "^0.3.0", - "unist-util-is": "^4.0.0", - "web-namespaces": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-from-parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz", - "integrity": "sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==", - "dependencies": { - "@types/parse5": "^5.0.0", - "hastscript": "^6.0.0", - "property-information": "^5.0.0", - "vfile": "^4.0.0", - "vfile-location": "^3.2.0", - "web-namespaces": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-parse-selector": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz", - "integrity": "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-raw": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-6.0.1.tgz", - "integrity": "sha512-ZMuiYA+UF7BXBtsTBNcLBF5HzXzkyE6MLzJnL605LKE8GJylNjGc4jjxazAHUtcwT5/CEt6afRKViYB4X66dig==", - "dependencies": { - "@types/hast": "^2.0.0", - "hast-util-from-parse5": "^6.0.0", - "hast-util-to-parse5": "^6.0.0", - "html-void-elements": "^1.0.0", - "parse5": "^6.0.0", - "unist-util-position": "^3.0.0", - "vfile": "^4.0.0", - "web-namespaces": "^1.0.0", - "xtend": "^4.0.0", - "zwitch": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-parse5": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz", - "integrity": "sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ==", - "dependencies": { - "hast-to-hyperscript": "^9.0.0", - "property-information": "^5.0.0", - "web-namespaces": "^1.0.0", - "xtend": "^4.0.0", - "zwitch": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hastscript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz", - "integrity": "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==", - "dependencies": { - "@types/hast": "^2.0.0", - "comma-separated-tokens": "^1.0.0", - "hast-util-parse-selector": "^2.0.0", - "property-information": "^5.0.0", - "space-separated-tokens": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "bin": { - "he": "bin/he" - } - }, - "node_modules/highlightjs": { - "version": "9.16.2", - "resolved": "https://registry.npmjs.org/highlightjs/-/highlightjs-9.16.2.tgz", - "integrity": "sha512-FK1vmMj8BbEipEy8DLIvp71t5UsC7n2D6En/UfM/91PCwmOpj6f2iu0Y0coRC62KSRHHC+dquM2xMULV/X7NFg==", - "deprecated": "Use the 'highlight.js' package instead https://npm.im/highlight.js", - "dev": true - }, - "node_modules/history": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", - "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", - "dependencies": { - "@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" - } - }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/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==", - "dependencies": { - "react-is": "^16.7.0" - } - }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", - "dependencies": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - } - }, - "node_modules/hpack.js/node_modules/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==", - "dependencies": { - "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" - } - }, - "node_modules/hpack.js/node_modules/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==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/html-entities": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz", - "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==" - }, - "node_modules/html-minifier-terser": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.0.2.tgz", - "integrity": "sha512-AgYO3UGhMYQx2S/FBJT3EM0ZYcKmH6m9XL9c1v77BeK/tYJxGPxT1/AtsdUi4FcP8kZGmqqnItCcjFPcX9hk6A==", - "dependencies": { - "camel-case": "^4.1.2", - "clean-css": "^5.1.5", - "commander": "^8.1.0", - "he": "^1.2.0", - "param-case": "^3.0.4", - "relateurl": "^0.2.7", - "terser": "^5.7.2" - }, - "bin": { - "html-minifier-terser": "cli.js" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/html-minifier-terser/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "engines": { - "node": ">= 12" - } - }, - "node_modules/html-tags": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz", - "integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/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==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/html-webpack-plugin": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", - "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", - "dependencies": { - "@types/html-minifier-terser": "^6.0.0", - "html-minifier-terser": "^6.0.2", - "lodash": "^4.17.21", - "pretty-error": "^4.0.0", - "tapable": "^2.0.0" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/html-webpack-plugin" - }, - "peerDependencies": { - "webpack": "^5.20.0" - } - }, - "node_modules/htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "dependencies": { - "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" - } - }, - "node_modules/http-basic": { - "version": "8.1.3", - "resolved": "https://registry.npmjs.org/http-basic/-/http-basic-8.1.3.tgz", - "integrity": "sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw==", - "dependencies": { - "caseless": "^0.12.0", - "concat-stream": "^1.6.2", - "http-response-object": "^3.0.1", - "parse-cache-control": "^1.0.1" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" - }, - "node_modules/http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=" - }, - "node_modules/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==", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http-errors/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "node_modules/http-parser-js": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", - "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==" - }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/http-proxy-middleware": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.1.tgz", - "integrity": "sha512-cfaXRVoZxSed/BmkA7SwBVNI9Kj7HFltaE5rqYOub5kWzWZ+gofV2koVN1j2rMW7pEfSSlCHGJ31xmuyFyfLOg==", - "dependencies": { - "@types/http-proxy": "^1.17.5", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/http-response-object": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz", - "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==", - "dependencies": { - "@types/node": "^10.0.3" - } - }, - "node_modules/http-response-object/node_modules/@types/node": { - "version": "10.17.60", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", - "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" - }, - "node_modules/http2-client": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/http2-client/-/http2-client-1.3.3.tgz", - "integrity": "sha512-nUxLymWQ9pzkzTmir24p2RtsgruLmhje7lH3hLX1IpwvyTg77fW+1brenPPP3USAR+rQ36p5sTA/x7sjCJVkAA==" - }, - "node_modules/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=" - }, - "node_modules/httpsnippet": { - "version": "1.25.0", - "resolved": "https://registry.npmjs.org/httpsnippet/-/httpsnippet-1.25.0.tgz", - "integrity": "sha512-jobE6S923cLuf5BPG6Jf+oLBRkPzv2RPp0dwOHcWwj/t9FwV/t9hyZ46kpT3Q5DHn9iFNmGhrcmmFUBqyjoTQg==", - "dev": true, - "dependencies": { - "chalk": "^1.1.1", - "commander": "^2.9.0", - "debug": "^2.2.0", - "event-stream": "3.3.4", - "form-data": "3.0.0", - "fs-readfile-promise": "^2.0.1", - "fs-writefile-promise": "^1.0.3", - "har-validator": "^5.0.0", - "pinkie-promise": "^2.0.0", - "stringify-object": "^3.3.0" - }, - "bin": { - "httpsnippet": "bin/httpsnippet" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/httpsnippet/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/httpsnippet/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/httpsnippet/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "dependencies": { - "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" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/httpsnippet/node_modules/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==", - "dev": true - }, - "node_modules/httpsnippet/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/httpsnippet/node_modules/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=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/httpsnippet/node_modules/form-data": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.0.tgz", - "integrity": "sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/httpsnippet/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/httpsnippet/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/httpsnippet/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/immer": { - "version": "9.0.6", - "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.6.tgz", - "integrity": "sha512-G95ivKpy+EvVAnAab4fVa4YGYn24J1SpEktnJX7JJ45Bd7xqME/SCplFzYFmTbrkwZbQ4xJK1xMTUYBkN6pWsQ==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/immer" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", - "engines": { - "node": ">=4" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/infima": { - "version": "0.2.0-alpha.34", - "resolved": "https://registry.npmjs.org/infima/-/infima-0.2.0-alpha.34.tgz", - "integrity": "sha512-Na6A2Tl56i1p9dzu7VOAT1Kmu3f5buz63Wvd+D9ZZWL6siQ47L7wkEZUICVKFgc5gERFZVZ/PoPB57Kl++h37Q==", - "engines": { - "node": ">=12" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "node_modules/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==" - }, - "node_modules/internal-ip": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-6.2.0.tgz", - "integrity": "sha512-D8WGsR6yDt8uq7vDMu7mjcR+yRMm3dW8yufyChmszWRjcSHuxLBkR3GdS2HZAjodsaGuCvXeEJpueisXJULghg==", - "dependencies": { - "default-gateway": "^6.0.0", - "ipaddr.js": "^1.9.1", - "is-ip": "^3.1.0", - "p-event": "^4.2.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/internal-ip?sponsor=1" - } - }, - "node_modules/internal-ip/node_modules/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==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/internmap": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", - "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", - "engines": { - "node": ">=12" - } - }, - "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/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==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" - }, - "node_modules/ip-regex": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", - "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/ipaddr.js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", - "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", - "engines": { - "node": ">= 10" - } - }, - "node_modules/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-alphabetical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", - "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-alphanumerical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", - "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", - "dependencies": { - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-arguments": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", - "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", - "dependencies": { - "call-bind": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - }, - "node_modules/is-bigint": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz", - "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-binary-buffer/-/is-binary-buffer-1.0.0.tgz", - "integrity": "sha1-vGAxKQtly/eZudlQK1D9U3VSQAc=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/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==", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz", - "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==", - "dependencies": { - "call-bind": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "node_modules/is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dependencies": { - "ci-info": "^2.0.0" - }, - "bin": { - "is-ci": "bin.js" - } - }, - "node_modules/is-ci/node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" - }, - "node_modules/is-core-module": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", - "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz", - "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-decimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", - "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-function": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.9.tgz", - "integrity": "sha512-ZJ34p1uvIfptHCN7sFTjGibB9/oBg17sHqzDLfuwhvmN/qLVvIQXRQ8licZQ35WJ8KuEQt/etnnzQFI9C9Ue/A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/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==", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-hexadecimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", - "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-installed-globally": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", - "dependencies": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-ip": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-3.1.0.tgz", - "integrity": "sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==", - "dependencies": { - "ip-regex": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-nan": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", - "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-npm": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", - "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz", - "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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==", - "engines": { - "node": ">=6" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/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==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-regex": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", - "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", - "dependencies": { - "call-bind": "^1.0.2", - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==" - }, - "node_modules/is-root": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", - "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-string": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz", - "integrity": "sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.5.tgz", - "integrity": "sha512-S+GRDgJlR3PyEbsX/Fobd9cqpZBuvUS+8asRqYDMLCb2qMzt1oz5m5oxQCxOgUDxiWsOVNi4yaF+/uvdlHlYug==", - "dependencies": { - "available-typed-arrays": "^1.0.2", - "call-bind": "^1.0.2", - "es-abstract": "^1.18.0-next.2", - "foreach": "^2.0.5", - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, - "node_modules/is-whitespace": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-whitespace/-/is-whitespace-0.3.0.tgz", - "integrity": "sha1-Fjnssb4DauxppUy7QBz77XEUq38=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/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==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-yarn-global": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", - "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest-worker": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.0.6.tgz", - "integrity": "sha512-qupxcj/dRuA3xHPMUd40gr2EaAurFbkwzOh7wfPaeE9id7hyjURRQoqNfHifHK3XjJU6YJJUQKILGUnwGPEOCA==", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/jgexml": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/jgexml/-/jgexml-0.4.4.tgz", - "integrity": "sha512-j0AzSWT7LXy3s3i1cdv5NZxUtscocwiBxgOLiEBfitCehm8STdXVrcOlbAWsJFLCq1elZYpQlGqA9k8Z+n9iJA==", - "dev": true, - "bin": { - "json2xml": "cli/json2xml.js", - "xml2json": "cli/xml2json.js", - "xsd2json": "cli/xsd2json.js" - } - }, - "node_modules/joi": { - "version": "17.4.2", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.4.2.tgz", - "integrity": "sha512-Lm56PP+n0+Z2A2rfRvsfWVDXGEWjXxatPopkQ8qQ5mxCEhwHG+Ettgg5o98FFaxilOxozoa14cFhrE/hOzh/Nw==", - "dependencies": { - "@hapi/hoek": "^9.0.0", - "@hapi/topo": "^5.0.0", - "@sideway/address": "^4.1.0", - "@sideway/formula": "^3.0.0", - "@sideway/pinpoint": "^2.0.0" - } - }, - "node_modules/js-levenshtein": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", - "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" - }, - "node_modules/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==" - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - }, - "node_modules/json-pointer": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/json-pointer/-/json-pointer-0.6.1.tgz", - "integrity": "sha512-3OvjqKdCBvH41DLpV4iSt6v2XhZXV1bPB4OROuknvUXI7ZQNofieCPkmE26stEJ9zdQuvIxDHCuYhfgxFAAs+Q==", - "dependencies": { - "foreach": "^2.0.4" - } - }, - "node_modules/json-schema-faker": { - "version": "0.5.0-rcv.35", - "resolved": "https://registry.npmjs.org/json-schema-faker/-/json-schema-faker-0.5.0-rcv.35.tgz", - "integrity": "sha512-UsIroMY2VdhO/4Fw2Vv40lnl37YjGp8pjadLJBW5k/eVldKED9xXV++TJUJaCEqnpwg7ixazLUKSm8C81APD4g==", - "dev": true, - "dependencies": { - "json-schema-ref-parser": "^6.1.0", - "jsonpath-plus": "^5.1.0", - "randexp": "^0.5.3", - "yaml": "^1.10.2" - }, - "bin": { - "jsf": "bin/gen.js" - } - }, - "node_modules/json-schema-faker/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/json-schema-faker/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-schema-faker/node_modules/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, - "dependencies": { - "call-me-maybe": "^1.0.1", - "js-yaml": "^3.12.1", - "ono": "^4.0.11" - } - }, - "node_modules/json-schema-ref-parser": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz", - "integrity": "sha512-qcP2lmGy+JUoQJ4DOQeLaZDqH9qSkeGCK3suKWxJXS82dg728Mn3j97azDMaOUmJAN4uCq91LdPx4K7E8F1a7Q==", - "dev": true, - "dependencies": { - "@apidevtools/json-schema-ref-parser": "9.0.9" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, - "node_modules/json-to-ast": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/json-to-ast/-/json-to-ast-2.1.0.tgz", - "integrity": "sha512-W9Lq347r8tA1DfMvAGn9QNcgYm4Wm7Yc+k8e6vezpMnRT+NHbtlxgNBXRVjXe9YM6eTn6+p/MKOlV/aABJcSnQ==", - "dev": true, - "dependencies": { - "code-error-fragment": "0.0.230", - "grapheme-splitter": "^1.0.4" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonpath-plus": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-5.1.0.tgz", - "integrity": "sha512-890w2Pjtj0iswAxalRlt2kHthi6HKrXEfZcn+ZNZptv7F3rUGIeDuZo+C+h4vXBHLEsVjJrHeCm35nYeZLzSBQ==", - "dev": true, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/jsonpointer": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.1.0.tgz", - "integrity": "sha512-CXcRvMyTlnR53xMcKnuMzfCA5i/nfblTnnr74CZb6C4vG39eu6w51t7nKmU5MfLfbTgGItliNyjO/ciNPDqClg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "dependencies": { - "json-buffer": "3.0.0" - } - }, - "node_modules/khroma": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/khroma/-/khroma-1.4.1.tgz", - "integrity": "sha512-+GmxKvmiRuCcUYDgR7g5Ngo0JEDeOsGdNONdU2zsiBQaK4z19Y2NvXqfEDE0ZiIrg45GTZyAnPLVsLZZACYm3Q==" - }, - "node_modules/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==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "engines": { - "node": ">=6" - } - }, - "node_modules/klona": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", - "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/latest-version": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", - "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", - "dependencies": { - "package-json": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "dependencies": { - "set-getter": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "dev": true, - "dependencies": { - "invert-kv": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/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==", - "engines": { - "node": ">=6" - } - }, - "node_modules/lilconfig": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.3.tgz", - "integrity": "sha512-EHKqr/+ZvdKCifpNrJCKxBTgk5XupZA3y/aCPY9mxfgBzmgh93Mt/WqjjQ38oMxXuvDokaKiM3lAgvSH2sjtHg==", - "engines": { - "node": ">=10" - } - }, - "node_modules/lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" - }, - "node_modules/linkify-it": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", - "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==", - "dev": true, - "dependencies": { - "uc.micro": "^1.0.1" - } - }, - "node_modules/load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/load-json-file/node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/load-json-file/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/loader-runner": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", - "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/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==", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/loader-utils/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash.assignin": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", - "integrity": "sha1-uo31+4QesKPoBEIysOJjqNxqKKI=" - }, - "node_modules/lodash.bind": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz", - "integrity": "sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU=" - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" - }, - "node_modules/lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=" - }, - "node_modules/lodash.filter": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz", - "integrity": "sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4=" - }, - "node_modules/lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" - }, - "node_modules/lodash.foreach": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", - "integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM=" - }, - "node_modules/lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" - }, - "node_modules/lodash.map": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", - "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=" - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" - }, - "node_modules/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==" - }, - "node_modules/lodash.pick": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", - "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=" - }, - "node_modules/lodash.reduce": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", - "integrity": "sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs=" - }, - "node_modules/lodash.reject": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz", - "integrity": "sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU=" - }, - "node_modules/lodash.some": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", - "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=" - }, - "node_modules/lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" - }, - "node_modules/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==", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/lunr": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==" - }, - "node_modules/magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "dependencies": { - "sourcemap-codec": "^1.4.4" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "p-defer": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/map-stream": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", - "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=", - "dev": true - }, - "node_modules/mark.js": { - "version": "8.11.1", - "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz", - "integrity": "sha1-GA8fnr74sOY45BZq1S24eb6y/8U=" - }, - "node_modules/markdown-escapes": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz", - "integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/markdown-it": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-10.0.0.tgz", - "integrity": "sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "entities": "~2.0.0", - "linkify-it": "^2.0.0", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - }, - "bin": { - "markdown-it": "bin/markdown-it.js" - } - }, - "node_modules/markdown-it-emoji": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/markdown-it-emoji/-/markdown-it-emoji-1.4.0.tgz", - "integrity": "sha1-m+4OmpkKljupbfaYDE/dsF37Tcw=", - "dev": true - }, - "node_modules/markdown-it/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/markdown-it/node_modules/entities": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", - "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==", - "dev": true - }, - "node_modules/marked": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.7.0.tgz", - "integrity": "sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg==", - "bin": { - "marked": "bin/marked" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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==", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/mdast-squeeze-paragraphs": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz", - "integrity": "sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ==", - "dependencies": { - "unist-util-remove": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-definitions": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz", - "integrity": "sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==", - "dependencies": { - "unist-util-visit": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-hast": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.0.1.tgz", - "integrity": "sha512-BW3LM9SEMnjf4HXXVApZMt8gLQWVNXc3jryK0nJu/rOXPOnlkUjmdkDlmxMirpbU9ILncGFIwLH/ubnWBbcdgA==", - "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "mdast-util-definitions": "^4.0.0", - "mdurl": "^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" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", - "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" - }, - "node_modules/mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "dev": true, - "dependencies": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/memfs": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.3.0.tgz", - "integrity": "sha512-BEE62uMfKOavX3iG7GYX43QJ+hAeeWnwIAuJ/R6q96jaMtiLzhsxHJC8B1L7fK7Pt/vXDRwb3SG/yBpNGDPqzg==", - "dependencies": { - "fs-monkey": "1.0.3" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/memoize-one": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", - "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" - }, - "node_modules/memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", - "dev": true, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "node_modules/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==" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/mermaid": { - "version": "8.13.8", - "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-8.13.8.tgz", - "integrity": "sha512-Z5v31rvo8P7BPTiGicdJl9BbzyUe9s5sXILK8sM1g7ijkagpfFjPtXZVsq5P1WlN8m/fUp2PPNXVF9SqeTM91w==", - "dependencies": { - "@braintree/sanitize-url": "^3.1.0", - "d3": "^7.0.0", - "dagre": "^0.8.5", - "dagre-d3": "^0.6.4", - "dompurify": "2.3.4", - "graphlib": "^2.1.8", - "khroma": "^1.4.1", - "moment-mini": "^2.24.0", - "stylis": "^4.0.10" - } - }, - "node_modules/mermaid/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "engines": { - "node": ">= 10" - } - }, - "node_modules/mermaid/node_modules/d3": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/d3/-/d3-7.2.1.tgz", - "integrity": "sha512-E/5sP0aeK6YPXI/+4QlefvBFgmcyR2jYftId0PrYWv4Y/gW3c3thp1XG4rQzF0eUwV9tR1x05X5eWuJ6rQXvew==", - "dependencies": { - "d3-array": "3", - "d3-axis": "3", - "d3-brush": "3", - "d3-chord": "3", - "d3-color": "3", - "d3-contour": "3", - "d3-delaunay": "6", - "d3-dispatch": "3", - "d3-drag": "3", - "d3-dsv": "3", - "d3-ease": "3", - "d3-fetch": "3", - "d3-force": "3", - "d3-format": "3", - "d3-geo": "3", - "d3-hierarchy": "3", - "d3-interpolate": "3", - "d3-path": "3", - "d3-polygon": "3", - "d3-quadtree": "3", - "d3-random": "3", - "d3-scale": "4", - "d3-scale-chromatic": "3", - "d3-selection": "3", - "d3-shape": "3", - "d3-time": "3", - "d3-time-format": "4", - "d3-timer": "3", - "d3-transition": "3", - "d3-zoom": "3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/mermaid/node_modules/d3-array": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.1.1.tgz", - "integrity": "sha512-33qQ+ZoZlli19IFiQx4QEpf2CBEayMRzhlisJHSCsSUbDXv6ZishqS1x7uFVClKG4Wr7rZVHvaAttoLow6GqdQ==", - "dependencies": { - "internmap": "1 - 2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/mermaid/node_modules/d3-axis": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", - "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", - "engines": { - "node": ">=12" - } - }, - "node_modules/mermaid/node_modules/d3-brush": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", - "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "3", - "d3-transition": "3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/mermaid/node_modules/d3-chord": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", - "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", - "dependencies": { - "d3-path": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/mermaid/node_modules/d3-color": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.0.1.tgz", - "integrity": "sha512-6/SlHkDOBLyQSJ1j1Ghs82OIUXpKWlR0hCsw0XrLSQhuUPuCSmLQ1QPH98vpnQxMUQM2/gfAkUEWsupVpd9JGw==", - "engines": { - "node": ">=12" - } - }, - "node_modules/mermaid/node_modules/d3-contour": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-3.0.1.tgz", - "integrity": "sha512-0Oc4D0KyhwhM7ZL0RMnfGycLN7hxHB8CMmwZ3+H26PWAG0ozNuYG5hXSDNgmP1SgJkQMrlG6cP20HoaSbvcJTQ==", - "dependencies": { - "d3-array": "2 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/mermaid/node_modules/d3-dispatch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", - "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", - "engines": { - "node": ">=12" - } - }, - "node_modules/mermaid/node_modules/d3-drag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", - "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-selection": "3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/mermaid/node_modules/d3-dsv": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", - "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", - "dependencies": { - "commander": "7", - "iconv-lite": "0.6", - "rw": "1" - }, - "bin": { - "csv2json": "bin/dsv2json.js", - "csv2tsv": "bin/dsv2dsv.js", - "dsv2dsv": "bin/dsv2dsv.js", - "dsv2json": "bin/dsv2json.js", - "json2csv": "bin/json2dsv.js", - "json2dsv": "bin/json2dsv.js", - "json2tsv": "bin/json2dsv.js", - "tsv2csv": "bin/dsv2dsv.js", - "tsv2json": "bin/dsv2json.js" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/mermaid/node_modules/d3-ease": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", - "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", - "engines": { - "node": ">=12" - } - }, - "node_modules/mermaid/node_modules/d3-fetch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", - "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", - "dependencies": { - "d3-dsv": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/mermaid/node_modules/d3-force": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", - "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-quadtree": "1 - 3", - "d3-timer": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/mermaid/node_modules/d3-format": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", - "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/mermaid/node_modules/d3-geo": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", - "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", - "dependencies": { - "d3-array": "2.5.0 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/mermaid/node_modules/d3-hierarchy": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.1.tgz", - "integrity": "sha512-LtAIu54UctRmhGKllleflmHalttH3zkfSi4NlKrTAoFKjC+AFBJohsCAdgCBYQwH0F8hIOGY89X1pPqAchlMkA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/mermaid/node_modules/d3-interpolate": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", - "dependencies": { - "d3-color": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/mermaid/node_modules/d3-path": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.0.1.tgz", - "integrity": "sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==", - "engines": { - "node": ">=12" - } - }, - "node_modules/mermaid/node_modules/d3-polygon": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", - "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", - "engines": { - "node": ">=12" - } - }, - "node_modules/mermaid/node_modules/d3-quadtree": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", - "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", - "engines": { - "node": ">=12" - } - }, - "node_modules/mermaid/node_modules/d3-random": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", - "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", - "engines": { - "node": ">=12" - } - }, - "node_modules/mermaid/node_modules/d3-scale": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", - "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", - "dependencies": { - "d3-array": "2.10.0 - 3", - "d3-format": "1 - 3", - "d3-interpolate": "1.2.0 - 3", - "d3-time": "2.1.1 - 3", - "d3-time-format": "2 - 4" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/mermaid/node_modules/d3-scale-chromatic": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", - "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==", - "dependencies": { - "d3-color": "1 - 3", - "d3-interpolate": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/mermaid/node_modules/d3-selection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", - "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", - "engines": { - "node": ">=12" - } - }, - "node_modules/mermaid/node_modules/d3-shape": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.0.1.tgz", - "integrity": "sha512-HNZNEQoDhuCrDWEc/BMbF/hKtzMZVoe64TvisFLDp2Iyj0UShB/E6/lBsLlJTfBMbYgftHj90cXJ0SEitlE6Xw==", - "dependencies": { - "d3-path": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/mermaid/node_modules/d3-time": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.0.0.tgz", - "integrity": "sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==", - "dependencies": { - "d3-array": "2 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/mermaid/node_modules/d3-time-format": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", - "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", - "dependencies": { - "d3-time": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/mermaid/node_modules/d3-timer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", - "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/mermaid/node_modules/d3-transition": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", - "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", - "dependencies": { - "d3-color": "1 - 3", - "d3-dispatch": "1 - 3", - "d3-ease": "1 - 3", - "d3-interpolate": "1 - 3", - "d3-timer": "1 - 3" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "d3-selection": "2 - 3" - } - }, - "node_modules/mermaid/node_modules/d3-zoom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", - "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "2 - 3", - "d3-transition": "2 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/mermaid/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dependencies": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "bin": { - "miller-rabin": "bin/miller-rabin" - } - }, - "node_modules/miller-rabin/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.48.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz", - "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.31", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz", - "integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==", - "dependencies": { - "mime-db": "1.48.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/mini-create-react-context": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz", - "integrity": "sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==", - "dependencies": { - "@babel/runtime": "^7.12.1", - "tiny-warning": "^1.0.3" - }, - "peerDependencies": { - "prop-types": "^15.0.0", - "react": "^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, - "node_modules/mini-css-extract-plugin": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-1.6.2.tgz", - "integrity": "sha512-WhDvO3SjGm40oV5y26GjMJYjd2UMqrLAGKy5YS2/3QKJy2F7jgynuHTir/tgUUOiNQu5saXHdc8reo7YuhhT4Q==", - "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0", - "webpack-sources": "^1.1.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.4.0 || ^5.0.0" - } - }, - "node_modules/mini-css-extract-plugin/node_modules/loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", - "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", - "dependencies": { - "@types/json-schema": "^7.0.7", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/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==" - }, - "node_modules/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=" - }, - "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, - "node_modules/mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mixin-deep/node_modules/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==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mkdirp-promise": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-1.1.0.tgz", - "integrity": "sha1-LISJPtZ24NmPsY+5piEv0bK5qBk=", - "deprecated": "This package is broken and no longer maintained. 'mkdirp' itself supports promises now, please switch to that.", - "dev": true, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "mkdirp": ">=0.5.0" - } - }, - "node_modules/mobx": { - "version": "6.3.2", - "resolved": "https://registry.npmjs.org/mobx/-/mobx-6.3.2.tgz", - "integrity": "sha512-xGPM9dIE1qkK9Nrhevp0gzpsmELKU4MFUJRORW/jqxVFIHHWIoQrjDjL8vkwoJYY3C2CeVJqgvl38hgKTalTWg==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mobx" - } - }, - "node_modules/mobx-react": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/mobx-react/-/mobx-react-7.2.0.tgz", - "integrity": "sha512-KHUjZ3HBmZlNnPd1M82jcdVsQRDlfym38zJhZEs33VxyVQTvL77hODCArq6+C1P1k/6erEeo2R7rpE7ZeOL7dg==", - "dependencies": { - "mobx-react-lite": "^3.2.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mobx" - }, - "peerDependencies": { - "mobx": "^6.1.0", - "react": "^16.8.0 || ^17" - }, - "peerDependenciesMeta": { - "react-dom": { - "optional": true - }, - "react-native": { - "optional": true - } - } - }, - "node_modules/mobx-react-lite": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/mobx-react-lite/-/mobx-react-lite-3.2.0.tgz", - "integrity": "sha512-q5+UHIqYCOpBoFm/PElDuOhbcatvTllgRp3M1s+Hp5j0Z6XNgDbgqxawJ0ZAUEyKM8X1zs70PCuhAIzX1f4Q/g==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mobx" - }, - "peerDependencies": { - "mobx": "^6.1.0", - "react": "^16.8.0 || ^17" - }, - "peerDependenciesMeta": { - "react-dom": { - "optional": true - }, - "react-native": { - "optional": true - } - } - }, - "node_modules/moment-mini": { - "version": "2.24.0", - "resolved": "https://registry.npmjs.org/moment-mini/-/moment-mini-2.24.0.tgz", - "integrity": "sha512-9ARkWHBs+6YJIvrIp0Ik5tyTTtP9PoV0Ssu2Ocq5y9v8+NOOpWiRshAp8c4rZVWTOe+157on/5G+zj5pwIQFEQ==" - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", - "dependencies": { - "dns-packet": "^1.3.1", - "thunky": "^1.0.2" - }, - "bin": { - "multicast-dns": "cli.js" - } - }, - "node_modules/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=" - }, - "node_modules/nanoid": { - "version": "3.1.30", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", - "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node_modules/node-emoji": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", - "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", - "dependencies": { - "lodash": "^4.17.21" - } - }, - "node_modules/node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", - "engines": { - "node": "4.x || >=6.0.0" - } - }, - "node_modules/node-fetch-h2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/node-fetch-h2/-/node-fetch-h2-2.3.0.tgz", - "integrity": "sha512-ofRW94Ab0T4AOh5Fk8t0h8OBWrmjb0SSB20xh1H8YnPV9EJ+f5AMoYSUQ2zgJ4Iq2HAK0I2l5/Nequ8YzFS3Hg==", - "dependencies": { - "http2-client": "^1.2.5" - }, - "engines": { - "node": "4.x || >=6.0.0" - } - }, - "node_modules/node-forge": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", - "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/node-polyfill-webpack-plugin": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/node-polyfill-webpack-plugin/-/node-polyfill-webpack-plugin-1.1.4.tgz", - "integrity": "sha512-Z0XTKj1wRWO8o/Vjobsw5iOJCN+Sua3EZEUc2Ziy9CyVvmHKu6o+t4gUH9GOE0czyPR94LI6ZCV/PpcM8b5yow==", - "dependencies": { - "assert": "^2.0.0", - "browserify-zlib": "^0.2.0", - "buffer": "^6.0.3", - "console-browserify": "^1.2.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.12.0", - "domain-browser": "^4.19.0", - "events": "^3.3.0", - "filter-obj": "^2.0.2", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "^1.0.1", - "process": "^0.11.10", - "punycode": "^2.1.1", - "querystring-es3": "^0.2.1", - "readable-stream": "^3.6.0", - "stream-browserify": "^3.0.0", - "stream-http": "^3.2.0", - "string_decoder": "^1.3.0", - "timers-browserify": "^2.0.12", - "tty-browserify": "^0.0.1", - "url": "^0.11.0", - "util": "^0.12.4", - "vm-browserify": "^1.1.2" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "webpack": ">=5" - } - }, - "node_modules/node-polyfill-webpack-plugin/node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/node-readfiles": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/node-readfiles/-/node-readfiles-0.2.0.tgz", - "integrity": "sha1-271K8SE04uY1wkXvk//Pb2BnOl0=", - "dependencies": { - "es6-promise": "^3.2.1" - } - }, - "node_modules/noms": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/noms/-/noms-0.0.0.tgz", - "integrity": "sha1-2o69nzr51nYJGbJ9nNyAkqczKFk=", - "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "~1.0.31" - } - }, - "node_modules/noms/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "node_modules/noms/node_modules/readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/noms/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-run-all": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", - "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "chalk": "^2.4.1", - "cross-spawn": "^6.0.5", - "memorystream": "^0.3.1", - "minimatch": "^3.0.4", - "pidtree": "^0.3.0", - "read-pkg": "^3.0.0", - "shell-quote": "^1.6.1", - "string.prototype.padend": "^3.0.0" - }, - "bin": { - "npm-run-all": "bin/npm-run-all/index.js", - "run-p": "bin/run-p/index.js", - "run-s": "bin/run-s/index.js" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/npm-run-all/node_modules/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==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/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==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/npm-run-all/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/npm-run-all/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/npm-run-all/node_modules/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=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/npm-run-all/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/npm-run-all/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-all/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-all/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/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==", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nprogress": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", - "integrity": "sha1-y480xTIT2JVyP8urkH6UIq28r7E=" - }, - "node_modules/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==", - "dependencies": { - "boolbase": "~1.0.0" - } - }, - "node_modules/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=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/oas-kit-common": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/oas-kit-common/-/oas-kit-common-1.0.8.tgz", - "integrity": "sha512-pJTS2+T0oGIwgjGpw7sIRU8RQMcUoKCDWFLdBqKB2BNmGpbBMH2sdqAaOXUg8OzonZHU0L7vfJu1mJFEiYDWOQ==", - "dependencies": { - "fast-safe-stringify": "^2.0.7" - } - }, - "node_modules/oas-linter": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/oas-linter/-/oas-linter-3.2.2.tgz", - "integrity": "sha512-KEGjPDVoU5K6swgo9hJVA/qYGlwfbFx+Kg2QB/kd7rzV5N8N5Mg6PlsoCMohVnQmo+pzJap/F610qTodKzecGQ==", - "dependencies": { - "@exodus/schemasafe": "^1.0.0-rc.2", - "should": "^13.2.1", - "yaml": "^1.10.0" - }, - "funding": { - "url": "https://github.com/Mermade/oas-kit?sponsor=1" - } - }, - "node_modules/oas-resolver": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/oas-resolver/-/oas-resolver-2.5.5.tgz", - "integrity": "sha512-1po1gzIlTXQqyVNtLFWJuzDm4xxhMCJ8QcP3OarKDO8aJ8AmCtQ67XZ1X+nBbHH4CjTcEsIab1qX5+GIU4f2Gg==", - "dependencies": { - "node-fetch-h2": "^2.3.0", - "oas-kit-common": "^1.0.8", - "reftools": "^1.1.8", - "yaml": "^1.10.0", - "yargs": "^17.0.1" - }, - "bin": { - "resolve": "resolve.js" - }, - "funding": { - "url": "https://github.com/Mermade/oas-kit?sponsor=1" - } - }, - "node_modules/oas-resolver/node_modules/yargs": { - "version": "17.0.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.0.1.tgz", - "integrity": "sha512-xBBulfCc8Y6gLFcrPvtqKz9hz8SO0l1Ni8GgDekvBX2ro0HRQImDGnikfc33cgzcYUSncapnNcZDjVFIH3f6KQ==", - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/oas-schema-walker": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/oas-schema-walker/-/oas-schema-walker-1.1.5.tgz", - "integrity": "sha512-2yucenq1a9YPmeNExoUa9Qwrt9RFkjqaMAA1X+U7sbb0AqBeTIdMHky9SQQ6iN94bO5NW0W4TRYXerG+BdAvAQ==", - "funding": { - "url": "https://github.com/Mermade/oas-kit?sponsor=1" - } - }, - "node_modules/oas-validator": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/oas-validator/-/oas-validator-5.0.7.tgz", - "integrity": "sha512-gtOjKWQMVeOBIuioguaXA7sMXfJ9q4efHDFo3kmcy9HZEtmGla3aptQK0LZG1AhOX9zambKUwH72kqgoIJa0Fg==", - "dependencies": { - "call-me-maybe": "^1.0.1", - "oas-kit-common": "^1.0.8", - "oas-linter": "^3.2.2", - "oas-resolver": "^2.5.5", - "oas-schema-walker": "^1.1.5", - "reftools": "^1.1.8", - "should": "^13.2.1", - "yaml": "^1.10.0" - }, - "funding": { - "url": "https://github.com/Mermade/oas-kit?sponsor=1" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.3.tgz", - "integrity": "sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.getownpropertydescriptors": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz", - "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.values": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.4.tgz", - "integrity": "sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" - }, - "node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/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==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ono": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/ono/-/ono-4.0.11.tgz", - "integrity": "sha512-jQ31cORBFE6td25deYeD80wxKBMj+zBmHTrVxnc6CKhx8gho6ipmWM5zj/oeoqioZ99yqBls9Z/9Nss7J26G2g==", - "dev": true, - "dependencies": { - "format-util": "^1.0.3" - } - }, - "node_modules/open": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", - "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", - "dependencies": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/openapi-sampler": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/openapi-sampler/-/openapi-sampler-1.1.0.tgz", - "integrity": "sha512-/LhZYKNBWphLEpbAG5BdpBZbIbmLgC4vTiTj8N/MV0LF9ptmKOiJ2nETVlacNjXHt7iqDgZDELJCIoZ3q5ZG6A==", - "dependencies": { - "@types/json-schema": "^7.0.7", - "json-pointer": "^0.6.1" - } - }, - "node_modules/opener": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", - "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", - "bin": { - "opener": "bin/opener-bin.js" - } - }, - "node_modules/ory-prettier-styles": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/ory-prettier-styles/-/ory-prettier-styles-1.1.2.tgz", - "integrity": "sha512-J7YcNdGlfTKCXAHEoFl9lp5EhnIASGgM5ua9Y+8OdWtS9tXJTik5xFYCF6xS46tpI3sk8cxFguKWhZeaeb6Z/A==", - "dev": true - }, - "node_modules/os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/os-locale/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/os-locale/node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "dependencies": { - "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" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/os-locale/node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/os-locale/node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/os-locale/node_modules/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=", - "dev": true, - "dependencies": { - "path-key": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/os-locale/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/os-locale/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/os-locale/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/os-locale/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/os-locale/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-event": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz", - "integrity": "sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==", - "dependencies": { - "p-timeout": "^3.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "engines": { - "node": ">=4" - } - }, - "node_modules/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==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/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==", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-locate/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-retry": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", - "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", - "dependencies": { - "@types/retry": "^0.12.0", - "retry": "^0.13.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", - "dependencies": { - "p-finally": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/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==", - "engines": { - "node": ">=6" - } - }, - "node_modules/package-json": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", - "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", - "dependencies": { - "got": "^9.6.0", - "registry-auth-token": "^4.0.0", - "registry-url": "^5.0.0", - "semver": "^6.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/package-json/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" - }, - "node_modules/param-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/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==", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "dependencies": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/parse-cache-control": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz", - "integrity": "sha1-juqz5U+laSD+Fro493+iGqzC104=" - }, - "node_modules/parse-entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", - "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", - "dependencies": { - "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" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse-numeric-range": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz", - "integrity": "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==" - }, - "node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" - }, - "node_modules/parser-front-matter": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/parser-front-matter/-/parser-front-matter-1.6.4.tgz", - "integrity": "sha512-eqtUnI5+COkf1CQOYo8FmykN5Zs+5Yr60f/7GcPgQDZEEjdE/VZ4WMaMo9g37foof8h64t/TH2Uvk2Sq0fDy/g==", - "dependencies": { - "extend-shallow": "^2.0.1", - "file-is-binary": "^1.0.0", - "gray-matter": "^3.0.2", - "isobject": "^3.0.1", - "lazy-cache": "^2.0.2", - "mixin-deep": "^1.2.0", - "trim-leading-lines": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/parser-front-matter/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/parser-front-matter/node_modules/gray-matter": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-3.1.1.tgz", - "integrity": "sha512-nZ1qjLmayEv0/wt3sHig7I0s3/sJO0dkAaKYQ5YAOApUtYEOonXSFdWvL1khvnZMTvov4UufkqlFsilPnejEXA==", - "dependencies": { - "extend-shallow": "^2.0.1", - "js-yaml": "^3.10.0", - "kind-of": "^5.0.2", - "strip-bom-string": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/parser-front-matter/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/parser-front-matter/node_modules/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==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" - }, - "node_modules/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/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=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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=" - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "node_modules/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=" - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/pause-stream": { - "version": "0.0.11", - "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", - "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", - "dev": true, - "dependencies": { - "through": "~2.3" - } - }, - "node_modules/pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/perfect-scrollbar": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/perfect-scrollbar/-/perfect-scrollbar-1.5.1.tgz", - "integrity": "sha512-MrSImINnIh3Tm1hdPT6bji6fmIeRorVEegQvyUnhqko2hDGTHhmjPefHXfxG/Jb8xVbfCwgmUIlIajERGXjVXQ==" - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pidtree": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", - "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", - "dev": true, - "bin": { - "pidtree": "bin/pidtree.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "engines": { - "node": ">=6" - } - }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "dependencies": { - "pinkie": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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==", - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", - "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-up/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-up/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-up/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-up/node_modules/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==", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-up/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "engines": { - "node": ">=4" - } - }, - "node_modules/polished": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/polished/-/polished-4.1.3.tgz", - "integrity": "sha512-ocPAcVBUOryJEKe0z2KLd1l9EBa1r5mSwlKpExmrLzsnIzJo4axsoU9O2BjOTkDGDT4mZ0WFE5XKTlR3nLnZOA==", - "dependencies": { - "@babel/runtime": "^7.14.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/portfinder": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", - "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", - "dependencies": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.5" - }, - "engines": { - "node": ">= 0.12.0" - } - }, - "node_modules/portfinder/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/portfinder/node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/postcss": { - "version": "8.3.11", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.11.tgz", - "integrity": "sha512-hCmlUAIlUiav8Xdqw3Io4LcpA1DOt7h3LSTAC4G6JGHFFaWzI6qvFt9oilvl8BmkbBRX1IhM90ZAmpk68zccQA==", - "dependencies": { - "nanoid": "^3.1.30", - "picocolors": "^1.0.0", - "source-map-js": "^0.6.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-calc": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.0.0.tgz", - "integrity": "sha512-5NglwDrcbiy8XXfPM11F3HeC6hoT9W7GUH/Zi5U/p7u3Irv4rHhdDcIZwG0llHXV4ftsBjpfWMXAnXNl4lnt8g==", - "dependencies": { - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.2" - }, - "peerDependencies": { - "postcss": "^8.2.2" - } - }, - "node_modules/postcss-colormin": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.1.tgz", - "integrity": "sha512-VVwMrEYLcHYePUYV99Ymuoi7WhKrMGy/V9/kTS0DkCoJYmmjdOMneyhzYUxcNgteKDVbrewOkSM7Wje/MFwxzA==", - "dependencies": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "colord": "^2.9.1", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-convert-values": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.2.tgz", - "integrity": "sha512-KQ04E2yadmfa1LqXm7UIDwW1ftxU/QWZmz6NKnHnUvJ3LEYbbcX6i329f/ig+WnEByHegulocXrECaZGLpL8Zg==", - "dependencies": { - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-comments": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz", - "integrity": "sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg==", - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-duplicates": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz", - "integrity": "sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA==", - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-empty": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz", - "integrity": "sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw==", - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-overridden": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz", - "integrity": "sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q==", - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-unused": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-5.0.1.tgz", - "integrity": "sha512-tD6xR/xyZTwfhKYRw0ylfCY8wbfhrjpKAMnDKRTLMy2fNW5hl0hoV6ap5vo2JdCkuHkP3CHw72beO4Y8pzFdww==", - "dependencies": { - "postcss-selector-parser": "^6.0.5" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-loader": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.0.tgz", - "integrity": "sha512-H9hv447QjQJVDbHj3OUdciyAXY3v5+UDduzEytAlZCVHCpNAAg/mCSwhYYqZr9BiGYhmYspU8QXxZwiHTLn3yA==", - "dependencies": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.4", - "semver": "^7.3.5" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "postcss": "^7.0.0 || ^8.0.1", - "webpack": "^5.0.0" - } - }, - "node_modules/postcss-merge-idents": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-5.0.1.tgz", - "integrity": "sha512-xu8ueVU0RszbI2gKkxR6mluupsOSSLvt8q4gA2fcKFkA+x6SlH3cb4cFHpDvcRCNFbUmCR/VUub+Y6zPOjPx+Q==", - "dependencies": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-merge-longhand": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.2.tgz", - "integrity": "sha512-BMlg9AXSI5G9TBT0Lo/H3PfUy63P84rVz3BjCFE9e9Y9RXQZD3+h3YO1kgTNsNJy7bBc1YQp8DmSnwLIW5VPcw==", - "dependencies": { - "css-color-names": "^1.0.1", - "postcss-value-parser": "^4.1.0", - "stylehacks": "^5.0.1" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-merge-rules": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.2.tgz", - "integrity": "sha512-5K+Md7S3GwBewfB4rjDeol6V/RZ8S+v4B66Zk2gChRqLTCC8yjnHQ601omj9TKftS19OPGqZ/XzoqpzNQQLwbg==", - "dependencies": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "cssnano-utils": "^2.0.1", - "postcss-selector-parser": "^6.0.5", - "vendors": "^1.0.3" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-font-values": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.0.1.tgz", - "integrity": "sha512-7JS4qIsnqaxk+FXY1E8dHBDmraYFWmuL6cgt0T1SWGRO5bzJf8sUoelwa4P88LEWJZweHevAiDKxHlofuvtIoA==", - "dependencies": { - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-gradients": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.3.tgz", - "integrity": "sha512-Z91Ol22nB6XJW+5oe31+YxRsYooxOdFKcbOqY/V8Fxse1Y3vqlNRpi1cxCqoACZTQEhl+xvt4hsbWiV5R+XI9Q==", - "dependencies": { - "colord": "^2.9.1", - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-params": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.1.tgz", - "integrity": "sha512-4RUC4k2A/Q9mGco1Z8ODc7h+A0z7L7X2ypO1B6V8057eVK6mZ6xwz6QN64nHuHLbqbclkX1wyzRnIrdZehTEHw==", - "dependencies": { - "alphanum-sort": "^1.0.2", - "browserslist": "^4.16.0", - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0", - "uniqs": "^2.0.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-selectors": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.1.0.tgz", - "integrity": "sha512-NzGBXDa7aPsAcijXZeagnJBKBPMYLaJJzB8CQh6ncvyl2sIndLVWfbcDi0SBjRWk5VqEjXvf8tYwzoKf4Z07og==", - "dependencies": { - "alphanum-sort": "^1.0.2", - "postcss-selector-parser": "^6.0.5" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-modules-extract-imports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", - "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-local-by-default": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", - "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", - "dependencies": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-scope": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", - "dependencies": { - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", - "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", - "dependencies": { - "icss-utils": "^5.0.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-normalize-charset": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz", - "integrity": "sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg==", - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-display-values": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.1.tgz", - "integrity": "sha512-uupdvWk88kLDXi5HEyI9IaAJTE3/Djbcrqq8YgjvAVuzgVuqIk3SuJWUisT2gaJbZm1H9g5k2w1xXilM3x8DjQ==", - "dependencies": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-positions": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.0.1.tgz", - "integrity": "sha512-rvzWAJai5xej9yWqlCb1OWLd9JjW2Ex2BCPzUJrbaXmtKtgfL8dBMOOMTX6TnvQMtjk3ei1Lswcs78qKO1Skrg==", - "dependencies": { - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-repeat-style": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.1.tgz", - "integrity": "sha512-syZ2itq0HTQjj4QtXZOeefomckiV5TaUO6ReIEabCh3wgDs4Mr01pkif0MeVwKyU/LHEkPJnpwFKRxqWA/7O3w==", - "dependencies": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-string": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.0.1.tgz", - "integrity": "sha512-Ic8GaQ3jPMVl1OEn2U//2pm93AXUcF3wz+OriskdZ1AOuYV25OdgS7w9Xu2LO5cGyhHCgn8dMXh9bO7vi3i9pA==", - "dependencies": { - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-timing-functions": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.1.tgz", - "integrity": "sha512-cPcBdVN5OsWCNEo5hiXfLUnXfTGtSFiBU9SK8k7ii8UD7OLuznzgNRYkLZow11BkQiiqMcgPyh4ZqXEEUrtQ1Q==", - "dependencies": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-unicode": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.1.tgz", - "integrity": "sha512-kAtYD6V3pK0beqrU90gpCQB7g6AOfP/2KIPCVBKJM2EheVsBQmx/Iof+9zR9NFKLAx4Pr9mDhogB27pmn354nA==", - "dependencies": { - "browserslist": "^4.16.0", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-url": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.2.tgz", - "integrity": "sha512-k4jLTPUxREQ5bpajFQZpx8bCF2UrlqOTzP9kEqcEnOfwsRshWs2+oAFIHfDQB8GO2PaUaSE0NlTAYtbluZTlHQ==", - "dependencies": { - "is-absolute-url": "^3.0.3", - "normalize-url": "^6.0.1", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-whitespace": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.1.tgz", - "integrity": "sha512-iPklmI5SBnRvwceb/XH568yyzK0qRVuAG+a1HFUsFRf11lEJTiQQa03a4RSCQvLKdcpX7XsI1Gen9LuLoqwiqA==", - "dependencies": { - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-ordered-values": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.0.2.tgz", - "integrity": "sha512-8AFYDSOYWebJYLyJi3fyjl6CqMEG/UVworjiyK1r573I56kb3e879sCJLGvR3merj+fAdPpVplXKQZv+ey6CgQ==", - "dependencies": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-reduce-idents": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-5.0.1.tgz", - "integrity": "sha512-6Rw8iIVFbqtaZExgWK1rpVgP7DPFRPh0DDFZxJ/ADNqPiH10sPCoq5tgo6kLiTyfh9sxjKYjXdc8udLEcPOezg==", - "dependencies": { - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-reduce-initial": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.0.1.tgz", - "integrity": "sha512-zlCZPKLLTMAqA3ZWH57HlbCjkD55LX9dsRyxlls+wfuRfqCi5mSlZVan0heX5cHr154Dq9AfbH70LyhrSAezJw==", - "dependencies": { - "browserslist": "^4.16.0", - "caniuse-api": "^3.0.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-reduce-transforms": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.1.tgz", - "integrity": "sha512-a//FjoPeFkRuAguPscTVmRQUODP+f3ke2HqFNgGPwdYnpeC29RZdCBvGRGTsKpMURb/I3p6jdKoBQ2zI+9Q7kA==", - "dependencies": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", - "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-sort-media-queries": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-sort-media-queries/-/postcss-sort-media-queries-4.1.0.tgz", - "integrity": "sha512-pPiw94cMOqGFSlp4QGzOKrhYr8O3VyMNQnb7qlGM25H4EDEii3iKtIUMoFe5gKiCEAt/Iyk2ah47eoRhGqSBGA==", - "dependencies": { - "sort-css-media-queries": "2.0.4" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "postcss": "^8.3.6" - } - }, - "node_modules/postcss-svgo": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.3.tgz", - "integrity": "sha512-41XZUA1wNDAZrQ3XgWREL/M2zSw8LJPvb5ZWivljBsUQAGoEKMYm6okHsTjJxKYI4M75RQEH4KYlEM52VwdXVA==", - "dependencies": { - "postcss-value-parser": "^4.1.0", - "svgo": "^2.7.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-svgo/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "engines": { - "node": ">= 10" - } - }, - "node_modules/postcss-svgo/node_modules/css-select": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", - "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^5.0.0", - "domhandler": "^4.2.0", - "domutils": "^2.6.0", - "nth-check": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/postcss-svgo/node_modules/css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/postcss-svgo/node_modules/css-what": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", - "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/postcss-svgo/node_modules/dom-serializer": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", - "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/postcss-svgo/node_modules/domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/postcss-svgo/node_modules/domhandler": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz", - "integrity": "sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==", - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/postcss-svgo/node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/postcss-svgo/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/postcss-svgo/node_modules/mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" - }, - "node_modules/postcss-svgo/node_modules/nth-check": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", - "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/postcss-svgo/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-svgo/node_modules/svgo": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", - "dependencies": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" - }, - "bin": { - "svgo": "bin/svgo" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/postcss-unique-selectors": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.1.tgz", - "integrity": "sha512-gwi1NhHV4FMmPn+qwBNuot1sG1t2OmacLQ/AX29lzyggnjd+MnVD5uqQmpXO3J17KGL2WAxQruj1qTd3H0gG/w==", - "dependencies": { - "alphanum-sort": "^1.0.2", - "postcss-selector-parser": "^6.0.5", - "uniqs": "^2.0.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", - "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==" - }, - "node_modules/postcss-zindex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-5.0.1.tgz", - "integrity": "sha512-nwgtJJys+XmmSGoYCcgkf/VczP8Mp/0OfSv3v0+fw0uABY4yxw+eFs0Xp9nAZHIKnS5j+e9ywQ+RD+ONyvl5pA==", - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "engines": { - "node": ">=4" - } - }, - "node_modules/prettier": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.2.tgz", - "integrity": "sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/pretty-error": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", - "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", - "dependencies": { - "lodash": "^4.17.20", - "renderkid": "^3.0.0" - } - }, - "node_modules/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==", - "engines": { - "node": ">=4" - } - }, - "node_modules/prism-react-renderer": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-1.2.1.tgz", - "integrity": "sha512-w23ch4f75V1Tnz8DajsYKvY5lF7H1+WvzvLUcF0paFxkTHSp42RS0H5CttdN2Q8RR3DRGZ9v5xD/h3n8C8kGmg==", - "peerDependencies": { - "react": ">=0.14.9" - } - }, - "node_modules/prismjs": { - "version": "1.24.1", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.24.1.tgz", - "integrity": "sha512-mNPsedLuk90RVJioIky8ANZEwYm5w9LcvCXrxHlwf4fNVSn8jEipMybMkWUyyF0JhnC+C4VcOVSBuHRKs1L5Ow==" - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/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==" - }, - "node_modules/promise": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/promise/-/promise-8.1.0.tgz", - "integrity": "sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q==", - "dependencies": { - "asap": "~2.0.6" - } - }, - "node_modules/prompts": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz", - "integrity": "sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==", - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - } - }, - "node_modules/property-information": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", - "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", - "dependencies": { - "xtend": "^4.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/proxy-addr/node_modules/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==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dependencies": { - "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" - } - }, - "node_modules/public-encrypt/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "engines": { - "node": ">=6" - } - }, - "node_modules/pupa": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", - "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", - "dependencies": { - "escape-goat": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, - "node_modules/qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "deprecated": "The", - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ramda": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.1.tgz", - "integrity": "sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw==", - "dev": true - }, - "node_modules/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, - "dependencies": { - "drange": "^1.0.2", - "ret": "^0.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dependencies": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "node_modules/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==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/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==", - "dependencies": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/raw-body/node_modules/bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/raw-loader": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz", - "integrity": "sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==", - "dev": true, - "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/raw-loader/node_modules/loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/raw-loader/node_modules/schema-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", - "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.7", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", - "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dev-utils": { - "version": "12.0.0-next.47", - "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.0-next.47.tgz", - "integrity": "sha512-PsE71vP15TZMmp/RZKOJC4fYD5Pvt0+wCoyG3QHclto0d4FyIJI78xGRICOOThZFROqgXYlZP6ddmeybm+jO4w==", - "dependencies": { - "@babel/code-frame": "^7.10.4", - "address": "^1.1.2", - "browserslist": "^4.16.5", - "chalk": "^2.4.2", - "cross-spawn": "^7.0.3", - "detect-port-alt": "^1.1.6", - "escape-string-regexp": "^2.0.0", - "filesize": "^6.1.0", - "find-up": "^4.1.0", - "fork-ts-checker-webpack-plugin": "^6.0.5", - "global-modules": "^2.0.0", - "globby": "^11.0.1", - "gzip-size": "^5.1.1", - "immer": "^9.0.6", - "is-root": "^2.1.0", - "loader-utils": "^2.0.0", - "open": "^7.0.2", - "pkg-up": "^3.1.0", - "prompts": "^2.4.0", - "react-error-overlay": "7.0.0-next.54+1465357b", - "recursive-readdir": "^2.2.2", - "shell-quote": "^1.7.2", - "strip-ansi": "^6.0.0", - "text-table": "^0.2.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/react-dev-utils/node_modules/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==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/react-dev-utils/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/react-dev-utils/node_modules/chalk/node_modules/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=", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/react-dev-utils/node_modules/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==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/react-dev-utils/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "node_modules/react-dev-utils/node_modules/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/react-dev-utils/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "engines": { - "node": ">=4" - } - }, - "node_modules/react-dev-utils/node_modules/loader-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.1.tgz", - "integrity": "sha512-g4miPa9uUrZz4iElkaVJgDFwKJGh8aQGM7pUL4ejXl6cu7kSb30seQOVGNMP6sW8j7DW77X68hJZ+GM7UGhXeQ==", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/react-dev-utils/node_modules/react-error-overlay": { - "version": "7.0.0-next.54", - "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-7.0.0-next.54.tgz", - "integrity": "sha512-b96CiTnZahXPDNH9MKplvt5+jD+BkxDw7q5R3jnkUXze/ux1pLv32BBZmlj0OfCUeMqyz4sAmF+0ccJGVMlpXw==" - }, - "node_modules/react-dev-utils/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/react-dom": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", - "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.2" - }, - "peerDependencies": { - "react": "17.0.2" - } - }, - "node_modules/react-error-overlay": { - "version": "6.0.9", - "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.9.tgz", - "integrity": "sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==" - }, - "node_modules/react-fast-compare": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz", - "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==" - }, - "node_modules/react-helmet": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/react-helmet/-/react-helmet-6.1.0.tgz", - "integrity": "sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw==", - "dependencies": { - "object-assign": "^4.1.1", - "prop-types": "^15.7.2", - "react-fast-compare": "^3.1.1", - "react-side-effect": "^2.1.0" - }, - "peerDependencies": { - "react": ">=16.3.0" - } - }, - "node_modules/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==" - }, - "node_modules/react-loadable": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/react-loadable/-/react-loadable-5.5.0.tgz", - "integrity": "sha512-C8Aui0ZpMd4KokxRdVAm2bQtI03k2RMRNzOB+IipV3yxFTSVICv7WoUr5L9ALB5BmKO1iHgZtWM8EvYG83otdg==", - "peer": true, - "dependencies": { - "prop-types": "^15.5.0" - }, - "peerDependencies": { - "react": "*" - } - }, - "node_modules/react-loadable-ssr-addon-v5-slorber": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/react-loadable-ssr-addon-v5-slorber/-/react-loadable-ssr-addon-v5-slorber-1.0.1.tgz", - "integrity": "sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A==", - "dependencies": { - "@babel/runtime": "^7.10.3" - }, - "engines": { - "node": ">=10.13.0" - }, - "peerDependencies": { - "react-loadable": "*", - "webpack": ">=4.41.1 || 5.x" - } - }, - "node_modules/react-router": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.0.tgz", - "integrity": "sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw==", - "dependencies": { - "@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.4.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" - }, - "peerDependencies": { - "react": ">=15" - } - }, - "node_modules/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==", - "dependencies": { - "@babel/runtime": "^7.1.2" - }, - "peerDependencies": { - "react": ">=15", - "react-router": ">=5" - } - }, - "node_modules/react-router-dom": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.2.0.tgz", - "integrity": "sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA==", - "dependencies": { - "@babel/runtime": "^7.1.2", - "history": "^4.9.0", - "loose-envify": "^1.3.1", - "prop-types": "^15.6.2", - "react-router": "5.2.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0" - }, - "peerDependencies": { - "react": ">=15" - } - }, - "node_modules/react-router/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "node_modules/react-router/node_modules/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==", - "dependencies": { - "isarray": "0.0.1" - } - }, - "node_modules/react-side-effect": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.1.tgz", - "integrity": "sha512-2FoTQzRNTncBVtnzxFOk2mCpcfxQpenBMbk5kSVBg5UcPqV9fRbgY2zhb7GTWWOlpFmAxhClBDlIq8Rsubz1yQ==", - "peerDependencies": { - "react": "^16.3.0 || ^17.0.0" - } - }, - "node_modules/react-tabs": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/react-tabs/-/react-tabs-3.2.2.tgz", - "integrity": "sha512-/o52eGKxFHRa+ssuTEgSM8qORnV4+k7ibW+aNQzKe+5gifeVz8nLxCrsI9xdRhfb0wCLdgIambIpb1qCxaMN+A==", - "dependencies": { - "clsx": "^1.1.0", - "prop-types": "^15.5.0" - }, - "peerDependencies": { - "react": "^16.3.0 || ^17.0.0-0" - } - }, - "node_modules/read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "dev": true, - "dependencies": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg/node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/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==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/reading-time": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/reading-time/-/reading-time-1.5.0.tgz", - "integrity": "sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==" - }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/recursive-readdir": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", - "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", - "dependencies": { - "minimatch": "3.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/redoc": { - "version": "2.0.0-rc.54", - "resolved": "https://registry.npmjs.org/redoc/-/redoc-2.0.0-rc.54.tgz", - "integrity": "sha512-xwukaWdoktkDAoQuhajekdC54+/lSLwIUqJCNSTVEjeYEuZPq2tFUj9H5SBt8/YSq5UF/zOmDQrXPWMgildQpQ==", - "dependencies": { - "@babel/runtime": "^7.14.0", - "@redocly/openapi-core": "^1.0.0-beta.50", - "@redocly/react-dropdown-aria": "^2.0.11", - "@types/node": "^15.6.1", - "classnames": "^2.3.1", - "decko": "^1.2.0", - "dompurify": "^2.2.8", - "eventemitter3": "^4.0.7", - "json-pointer": "^0.6.1", - "lunr": "^2.3.9", - "mark.js": "^8.11.1", - "marked": "^0.7.0", - "memoize-one": "^5.2.1", - "mobx-react": "^7.2.0", - "openapi-sampler": "^1.0.1", - "path-browserify": "^1.0.1", - "perfect-scrollbar": "^1.5.1", - "polished": "^4.1.3", - "prismjs": "^1.23.0", - "prop-types": "^15.7.2", - "react-tabs": "^3.2.2", - "slugify": "~1.4.7", - "stickyfill": "^1.1.1", - "swagger2openapi": "^7.0.6", - "url-template": "^2.0.8" - }, - "engines": { - "node": ">=6.9", - "npm": ">=3.0.0" - }, - "peerDependencies": { - "core-js": "^3.1.4", - "mobx": "^6.0.4", - "react": "^16.8.4 || ^17.0.0", - "react-dom": "^16.8.4 || ^17.0.0", - "styled-components": "^4.1.1 || ^5.1.1" - } - }, - "node_modules/redoc/node_modules/@types/node": { - "version": "15.14.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-15.14.1.tgz", - "integrity": "sha512-wF6hazbsnwaW3GhK4jFuw5NaLDQVRQ6pWQUGAUrJzxixFkTaODSiAKMPXuHwPEPkAKQWHAzj6uJ5h+3zU9gQxg==" - }, - "node_modules/redoc/node_modules/prismjs": { - "version": "1.25.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.25.0.tgz", - "integrity": "sha512-WCjJHl1KEWbnkQom1+SzftbtXMKQoezOCYs5rECqMN+jP+apI7ftoflyqigqzopSO3hMhTEb0mFClA8lkolgEg==" - }, - "node_modules/redocusaurus": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/redocusaurus/-/redocusaurus-0.4.4.tgz", - "integrity": "sha512-Y4TF3V1m0FmCI2IUUzg4DofXr4Hss+q0wFyCx0tvy5BOEFRHQoO7y1kJ6Uq5lR8HOyFIiFpwlzVsJQf6CwrsaQ==", - "dependencies": { - "@docusaurus/types": "^2.0.0-beta.0", - "docusaurus-plugin-redoc": "^0.4.1", - "docusaurus-theme-redoc": "^0.4.4" - }, - "engines": { - "node": ">=10.15.1" - } - }, - "node_modules/reftools": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/reftools/-/reftools-1.1.8.tgz", - "integrity": "sha512-Yvz9NH8uFHzD/AXX82Li1GdAP6FzDBxEZw+njerNBBQv/XHihqsWAjNfXtaq4QD2l4TEZVnp4UbktdYSegAM3g==", - "funding": { - "url": "https://github.com/Mermade/oas-kit?sponsor=1" - } - }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" - }, - "node_modules/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==", - "dependencies": { - "regenerate": "^1.4.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" - }, - "node_modules/regenerator-transform": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", - "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", - "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpu-core": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", - "dependencies": { - "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" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/registry-auth-token": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", - "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", - "dependencies": { - "rc": "^1.2.8" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/registry-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", - "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", - "dependencies": { - "rc": "^1.2.8" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/regjsgen": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==" - }, - "node_modules/regjsparser": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", - "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", - "dependencies": { - "jsesc": "~0.5.0" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "bin": { - "jsesc": "bin/jsesc" - } - }, - "node_modules/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==", - "dependencies": { - "hast-util-from-parse5": "^5.0.0", - "parse5": "^5.0.0", - "xtend": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/rehype-parse/node_modules/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==", - "dependencies": { - "ccount": "^1.0.3", - "hastscript": "^5.0.0", - "property-information": "^5.0.0", - "web-namespaces": "^1.1.2", - "xtend": "^4.0.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/rehype-parse/node_modules/hastscript": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-5.1.2.tgz", - "integrity": "sha512-WlztFuK+Lrvi3EggsqOkQ52rKbxkXL3RwB6t5lwoa8QLMemoWfBuL43eDrwOamJyR7uKQKdmKYaBH1NZBiIRrQ==", - "dependencies": { - "comma-separated-tokens": "^1.0.0", - "hast-util-parse-selector": "^2.0.0", - "property-information": "^5.0.0", - "space-separated-tokens": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/rehype-parse/node_modules/parse5": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==" - }, - "node_modules/relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/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==", - "dependencies": { - "rehype-parse": "^6.0.2", - "unified": "^8.4.2", - "unist-util-visit": "^2.0.1" - } - }, - "node_modules/remark-admonitions/node_modules/unified": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-8.4.2.tgz", - "integrity": "sha512-JCrmN13jI4+h9UAyKEoGcDZV+i1E7BLFuG7OsaDvTXI5P0qhHX+vZO/kOhz9jn8HGENDKbwSeB0nVOg4gVStGA==", - "dependencies": { - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-plain-obj": "^2.0.0", - "trough": "^1.0.0", - "vfile": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-emoji": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/remark-emoji/-/remark-emoji-2.2.0.tgz", - "integrity": "sha512-P3cj9s5ggsUvWw5fS2uzCHJMGuXYRb0NnZqYlNecewXt8QBU9n5vW3DUUKOhepS8F9CwdMx9B8a3i7pqFWAI5w==", - "dependencies": { - "emoticon": "^3.2.0", - "node-emoji": "^1.10.0", - "unist-util-visit": "^2.0.3" - } - }, - "node_modules/remark-footnotes": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/remark-footnotes/-/remark-footnotes-2.0.0.tgz", - "integrity": "sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-mdx": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-1.6.22.tgz", - "integrity": "sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ==", - "dependencies": { - "@babel/core": "7.12.9", - "@babel/helper-plugin-utils": "7.10.4", - "@babel/plugin-proposal-object-rest-spread": "7.12.1", - "@babel/plugin-syntax-jsx": "7.12.1", - "@mdx-js/util": "1.6.22", - "is-alphabetical": "1.0.4", - "remark-parse": "8.0.3", - "unified": "9.2.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-mdx-remove-exports": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/remark-mdx-remove-exports/-/remark-mdx-remove-exports-1.6.22.tgz", - "integrity": "sha512-7g2uiTmTGfz5QyVb+toeX25frbk1Y6yd03RXGPtqx0+DVh86Gb7MkNYbk7H2X27zdZ3CQv1W/JqlFO0Oo8IxVA==", - "dependencies": { - "unist-util-remove": "2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-mdx-remove-exports/node_modules/unist-util-remove": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-2.0.0.tgz", - "integrity": "sha512-HwwWyNHKkeg/eXRnE11IpzY8JT55JNM1YCwwU9YNCnfzk6s8GhPXrVBBZWiwLeATJbI7euvoGSzcy9M29UeW3g==", - "dependencies": { - "unist-util-is": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-mdx-remove-imports": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/remark-mdx-remove-imports/-/remark-mdx-remove-imports-1.6.22.tgz", - "integrity": "sha512-lmjAXD8Ltw0TsvBzb45S+Dxx7LTJAtDaMneMAv8LAUIPEyYoKkmGbmVsiF0/pY6mhM1Q16swCmu1TN+ie/vn/A==", - "dependencies": { - "unist-util-remove": "2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-mdx-remove-imports/node_modules/unist-util-remove": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-2.0.0.tgz", - "integrity": "sha512-HwwWyNHKkeg/eXRnE11IpzY8JT55JNM1YCwwU9YNCnfzk6s8GhPXrVBBZWiwLeATJbI7euvoGSzcy9M29UeW3g==", - "dependencies": { - "unist-util-is": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-mdx/node_modules/@babel/core": { - "version": "7.12.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz", - "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==", - "dependencies": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.12.5", - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helpers": "^7.12.5", - "@babel/parser": "^7.12.7", - "@babel/template": "^7.12.7", - "@babel/traverse": "^7.12.9", - "@babel/types": "^7.12.7", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.2", - "lodash": "^4.17.19", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/remark-mdx/node_modules/@babel/helper-plugin-utils": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", - "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" - }, - "node_modules/remark-mdx/node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", - "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.12.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/remark-mdx/node_modules/@babel/plugin-syntax-jsx": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", - "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/remark-mdx/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/remark-parse": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.3.tgz", - "integrity": "sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==", - "dependencies": { - "ccount": "^1.0.0", - "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": "^2.0.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": "^2.0.0", - "vfile-location": "^3.0.0", - "xtend": "^4.0.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-squeeze-paragraphs": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-4.0.0.tgz", - "integrity": "sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw==", - "dependencies": { - "mdast-squeeze-paragraphs": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remarkable": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/remarkable/-/remarkable-2.0.1.tgz", - "integrity": "sha512-YJyMcOH5lrR+kZdmB0aJJ4+93bEojRZ1HGDn9Eagu6ibg7aVZhc3OWbbShRid+Q5eAfsEqWxpe+g5W5nYNfNiA==", - "dev": true, - "dependencies": { - "argparse": "^1.0.10", - "autolinker": "^3.11.0" - }, - "bin": { - "remarkable": "bin/remarkable.js" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/remarkable/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/renderkid": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", - "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", - "dependencies": { - "css-select": "^4.1.3", - "dom-converter": "^0.2.0", - "htmlparser2": "^6.1.0", - "lodash": "^4.17.21", - "strip-ansi": "^6.0.1" - } - }, - "node_modules/renderkid/node_modules/css-select": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", - "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^5.0.0", - "domhandler": "^4.2.0", - "domutils": "^2.6.0", - "nth-check": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/renderkid/node_modules/css-what": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", - "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/renderkid/node_modules/dom-serializer": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", - "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/renderkid/node_modules/domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/renderkid/node_modules/domhandler": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz", - "integrity": "sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==", - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/renderkid/node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/renderkid/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/renderkid/node_modules/htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - }, - "node_modules/renderkid/node_modules/nth-check": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", - "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/renderkid/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-like": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz", - "integrity": "sha1-rW8wwTvs15cBDEaK+ndcDAprR/o=", - "engines": { - "node": "*" - } - }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" - }, - "node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/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==", - "engines": { - "node": ">=4" - } - }, - "node_modules/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==" - }, - "node_modules/responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "dependencies": { - "lowercase-keys": "^1.0.0" - } - }, - "node_modules/ret": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.2.2.tgz", - "integrity": "sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "node_modules/robust-predicates": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", - "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==" - }, - "node_modules/rtl-detect": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/rtl-detect/-/rtl-detect-1.0.4.tgz", - "integrity": "sha512-EBR4I2VDSSYr7PkBmFy04uhycIpDKp+21p/jARYXlCSjQksTBQcJ0HFUPOO79EPPH5JS6VAhiIQbycf0O3JAxQ==" - }, - "node_modules/rtlcss": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-3.4.0.tgz", - "integrity": "sha512-pOSLxwmJTjqcnlFIezpCGyhRoPKIwXj78wJfBI8iZw7gZGVzjT/T5QcaimRComsPanMSV0hzmI5o+oWIP3nNBA==", - "dependencies": { - "chalk": "^4.1.0", - "find-up": "^5.0.0", - "mkdirp": "^1.0.4", - "postcss": "^8.2.4", - "strip-json-comments": "^3.1.1" - }, - "bin": { - "rtlcss": "bin/rtlcss.js" - }, - "peerDependencies": { - "postcss": "^8.2.4" - } - }, - "node_modules/rtlcss/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/rtlcss/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/rtlcss/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/rw": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", - "integrity": "sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q=" - }, - "node_modules/rxjs": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.4.0.tgz", - "integrity": "sha512-7SQDi7xeTMCJpqViXh8gL/lebcwlp3d831F05+9B44A4B0WfsEwUQHR64gsH1kvJ+Ep/J9K2+n1hVl1CsGN23w==", - "dependencies": { - "tslib": "~2.1.0" - } - }, - "node_modules/rxjs/node_modules/tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" - }, - "node_modules/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==" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, - "node_modules/scheduler": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "node_modules/schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/section-matter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", - "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", - "dependencies": { - "extend-shallow": "^2.0.1", - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" - }, - "node_modules/selfsigned": { - "version": "1.10.11", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.11.tgz", - "integrity": "sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA==", - "dependencies": { - "node-forge": "^0.10.0" - } - }, - "node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", - "dependencies": { - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/semver-diff/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "dependencies": { - "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" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/send/node_modules/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==" - }, - "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/serve-handler": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.3.tgz", - "integrity": "sha512-FosMqFBNrLyeiIDvP1zgO6YoTzFYHxLDEIavhlmQ+knB2Z7l1t+kGLHkZIDN7UVWqQAmKI3D20A6F6jo3nDd4w==", - "dependencies": { - "bytes": "3.0.0", - "content-disposition": "0.5.2", - "fast-url-parser": "1.1.3", - "mime-types": "2.1.18", - "minimatch": "3.0.4", - "path-is-inside": "1.0.2", - "path-to-regexp": "2.2.1", - "range-parser": "1.2.0" - } - }, - "node_modules/serve-handler/node_modules/content-disposition": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-handler/node_modules/mime-db": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-handler/node_modules/mime-types": { - "version": "2.1.18", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", - "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", - "dependencies": { - "mime-db": "~1.33.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-handler/node_modules/path-to-regexp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz", - "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==" - }, - "node_modules/serve-handler/node_modules/range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", - "dependencies": { - "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" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/serve-index/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/serve-index/node_modules/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=", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "node_modules/serve-index/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/serve-index/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" - }, - "node_modules/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==", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "node_modules/set-getter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/set-getter/-/set-getter-0.1.1.tgz", - "integrity": "sha512-9sVWOy+gthr+0G9DzqqLaYNA7+5OKkSmcqjL9cBpDEaZrr3ShQlyX2cZ/O/ozE41oxn/Tt0LGEM/w4Rub3A3gw==", - "dependencies": { - "to-object-path": "^0.3.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" - }, - "node_modules/setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" - }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" - } - }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shallowequal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", - "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" - }, - "node_modules/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==", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "engines": { - "node": ">=8" - } - }, - "node_modules/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==" - }, - "node_modules/shelljs": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz", - "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==", - "dependencies": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - }, - "bin": { - "shjs": "bin/shjs" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/should": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/should/-/should-13.2.3.tgz", - "integrity": "sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ==", - "dependencies": { - "should-equal": "^2.0.0", - "should-format": "^3.0.3", - "should-type": "^1.4.0", - "should-type-adaptors": "^1.0.1", - "should-util": "^1.0.0" - } - }, - "node_modules/should-equal": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/should-equal/-/should-equal-2.0.0.tgz", - "integrity": "sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA==", - "dependencies": { - "should-type": "^1.4.0" - } - }, - "node_modules/should-format": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/should-format/-/should-format-3.0.3.tgz", - "integrity": "sha1-m/yPdPo5IFxT04w01xcwPidxJPE=", - "dependencies": { - "should-type": "^1.3.0", - "should-type-adaptors": "^1.0.1" - } - }, - "node_modules/should-type": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/should-type/-/should-type-1.4.0.tgz", - "integrity": "sha1-B1bYzoRt/QmEOmlHcZ36DUz/XPM=" - }, - "node_modules/should-type-adaptors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/should-type-adaptors/-/should-type-adaptors-1.1.0.tgz", - "integrity": "sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA==", - "dependencies": { - "should-type": "^1.3.0", - "should-util": "^1.0.0" - } - }, - "node_modules/should-util": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/should-util/-/should-util-1.0.1.tgz", - "integrity": "sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g==" - }, - "node_modules/signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" - }, - "node_modules/sirv": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.12.tgz", - "integrity": "sha512-+jQoCxndz7L2tqQL4ZyzfDhky0W/4ZJip3XoOuxyQWnAwMxindLl3Xv1qT4x1YX/re0leShvTm8Uk0kQspGhBg==", - "dependencies": { - "@polka/url": "^1.0.0-next.15", - "mime": "^2.3.1", - "totalist": "^1.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/sirv/node_modules/mime": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", - "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" - }, - "node_modules/sitemap": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-7.0.0.tgz", - "integrity": "sha512-Ud0jrRQO2k7fEtPAM+cQkBKoMvxQyPKNXKDLn8tRVHxRCsdDQ2JZvw+aZ5IRYYQVAV9iGxEar6boTwZzev+x3g==", - "dependencies": { - "@types/node": "^15.0.1", - "@types/sax": "^1.2.1", - "arg": "^5.0.0", - "sax": "^1.2.4" - }, - "bin": { - "sitemap": "dist/cli.js" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=5.6.0" - } - }, - "node_modules/sitemap/node_modules/@types/node": { - "version": "15.14.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-15.14.1.tgz", - "integrity": "sha512-wF6hazbsnwaW3GhK4jFuw5NaLDQVRQ6pWQUGAUrJzxixFkTaODSiAKMPXuHwPEPkAKQWHAzj6uJ5h+3zU9gQxg==" - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/slugify": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.4.7.tgz", - "integrity": "sha512-tf+h5W1IrjNm/9rKKj0JU2MDMruiopx0jjVA5zCdBtcGjfp0+c5rHw/zADLC3IeKlGHtVbHtpfzvYA0OYT+HKg==", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/sockjs": { - "version": "0.3.21", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", - "integrity": "sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==", - "dependencies": { - "faye-websocket": "^0.11.3", - "uuid": "^3.4.0", - "websocket-driver": "^0.7.4" - } - }, - "node_modules/sort-css-media-queries": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/sort-css-media-queries/-/sort-css-media-queries-2.0.4.tgz", - "integrity": "sha512-PAIsEK/XupCQwitjv7XxoMvYhT7EAfyzI3hsy/MyDgTvc+Ft55ctdkctJLOy6cQejaIC+zjpUL4djFVm2ivOOw==", - "engines": { - "node": ">= 6.3.0" - } - }, - "node_modules/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==" - }, - "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", - "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.20", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", - "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" - }, - "node_modules/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==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz", - "integrity": "sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ==", - "dev": true - }, - "node_modules/spdy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", - "dependencies": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/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==", - "dependencies": { - "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" - } - }, - "node_modules/split": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", - "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", - "dev": true, - "dependencies": { - "through": "2" - }, - "engines": { - "node": "*" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, - "node_modules/stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" - }, - "node_modules/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==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/std-env": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-2.3.0.tgz", - "integrity": "sha512-4qT5B45+Kjef2Z6pE0BkskzsH0GO7GrND0wGlTM1ioUe3v0dGYx9ZJH0Aro/YyA8fqQ5EyIKDRjZojJYMFTflw==", - "dependencies": { - "ci-info": "^3.0.0" - } - }, - "node_modules/stickyfill": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stickyfill/-/stickyfill-1.1.1.tgz", - "integrity": "sha1-OUE/7p0CXHSn5ZzuyyN4TMDxfwI=" - }, - "node_modules/stream-browserify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", - "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", - "dependencies": { - "inherits": "~2.0.4", - "readable-stream": "^3.5.0" - } - }, - "node_modules/stream-combiner": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", - "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", - "dev": true, - "dependencies": { - "duplexer": "~0.1.1" - } - }, - "node_modules/stream-http": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", - "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", - "dependencies": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "xtend": "^4.0.2" - } - }, - "node_modules/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==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width/node_modules/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==" - }, - "node_modules/string.prototype.padend": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.2.tgz", - "integrity": "sha512-/AQFLdYvePENU3W5rgurfWSMU6n+Ww8n/3cUt7E+vPBB/D7YDG8x+qjoFs4M/alR2bW7Qg6xMjVwWUOvuQ0XpQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/stringify-object": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", - "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", - "dependencies": { - "get-own-enumerable-property-symbols": "^3.0.0", - "is-obj": "^1.0.1", - "is-regexp": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dependencies": { - "ansi-regex": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/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=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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==", - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/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==", - "dependencies": { - "inline-style-parser": "0.1.1" - } - }, - "node_modules/styled-components": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.3.0.tgz", - "integrity": "sha512-bPJKwZCHjJPf/hwTJl6TbkSZg/3evha+XPEizrZUGb535jLImwDUdjTNxXqjjaASt2M4qO4AVfoHJNe3XB/tpQ==", - "dependencies": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/traverse": "^7.4.5", - "@emotion/is-prop-valid": "^0.8.8", - "@emotion/stylis": "^0.8.4", - "@emotion/unitless": "^0.7.4", - "babel-plugin-styled-components": ">= 1.12.0", - "css-to-react-native": "^3.0.0", - "hoist-non-react-statics": "^3.0.0", - "shallowequal": "^1.1.0", - "supports-color": "^5.5.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/styled-components" - }, - "peerDependencies": { - "react": ">= 16.8.0", - "react-dom": ">= 16.8.0", - "react-is": ">= 16.8.0" - } - }, - "node_modules/styled-components/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "engines": { - "node": ">=4" - } - }, - "node_modules/styled-components/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/stylehacks": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.0.1.tgz", - "integrity": "sha512-Es0rVnHIqbWzveU1b24kbw92HsebBepxfcqe5iix7t9j0PQqhs0IxXVXv0pY2Bxa08CgMkzD6OWql7kbGOuEdA==", - "dependencies": { - "browserslist": "^4.16.0", - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/stylis": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.13.tgz", - "integrity": "sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag==" - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/svg-parser": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", - "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==" - }, - "node_modules/svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", - "dependencies": { - "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" - }, - "bin": { - "svgo": "bin/svgo" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/svgo/node_modules/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==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/svgo/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/svgo/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/svgo/node_modules/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==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/svgo/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "node_modules/svgo/node_modules/css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - } - }, - "node_modules/svgo/node_modules/css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/svgo/node_modules/domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "node_modules/svgo/node_modules/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=", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/svgo/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "engines": { - "node": ">=4" - } - }, - "node_modules/svgo/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/svgo/node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/svgo/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/swagger2openapi": { - "version": "7.0.7", - "resolved": "https://registry.npmjs.org/swagger2openapi/-/swagger2openapi-7.0.7.tgz", - "integrity": "sha512-uQMHn9Q1gOte13xarNTRtK00K3VgoLydwB3QMHcEptp8e8Q/idynMq+n1gTTf6U9BVcjfrbKXUpfyv/z/RLvQA==", - "dependencies": { - "call-me-maybe": "^1.0.1", - "node-fetch": "^2.6.1", - "node-fetch-h2": "^2.3.0", - "node-readfiles": "^0.2.0", - "oas-kit-common": "^1.0.8", - "oas-resolver": "^2.5.5", - "oas-schema-walker": "^1.1.5", - "oas-validator": "^5.0.7", - "reftools": "^1.1.8", - "yaml": "^1.10.0", - "yargs": "^17.0.1" - }, - "bin": { - "boast": "boast.js", - "oas-validate": "oas-validate.js", - "swagger2openapi": "swagger2openapi.js" - }, - "funding": { - "url": "https://github.com/Mermade/oas-kit?sponsor=1" - } - }, - "node_modules/swagger2openapi/node_modules/yargs": { - "version": "17.0.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.0.1.tgz", - "integrity": "sha512-xBBulfCc8Y6gLFcrPvtqKz9hz8SO0l1Ni8GgDekvBX2ro0HRQImDGnikfc33cgzcYUSncapnNcZDjVFIH3f6KQ==", - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/sync-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/sync-request/-/sync-request-6.1.0.tgz", - "integrity": "sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw==", - "dependencies": { - "http-response-object": "^3.0.1", - "sync-rpc": "^1.2.1", - "then-request": "^6.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/sync-rpc": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/sync-rpc/-/sync-rpc-1.3.6.tgz", - "integrity": "sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw==", - "dependencies": { - "get-port": "^3.1.0" - } - }, - "node_modules/tapable": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", - "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/terser": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz", - "integrity": "sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==", - "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.2.4.tgz", - "integrity": "sha512-E2CkNMN+1cho04YpdANyRrn8CyN4yMy+WdFKZIySFZrGXZxJwJP6PMNGGc/Mcr6qygQHUUqRxnAPmi0M9f00XA==", - "dependencies": { - "jest-worker": "^27.0.6", - "p-limit": "^3.1.0", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1", - "terser": "^5.7.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/terser-webpack-plugin/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/terser/node_modules/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==" - }, - "node_modules/terser/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" - }, - "node_modules/then-request": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/then-request/-/then-request-6.0.2.tgz", - "integrity": "sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA==", - "dependencies": { - "@types/concat-stream": "^1.6.0", - "@types/form-data": "0.0.33", - "@types/node": "^8.0.0", - "@types/qs": "^6.2.31", - "caseless": "~0.12.0", - "concat-stream": "^1.6.0", - "form-data": "^2.2.0", - "http-basic": "^8.1.1", - "http-response-object": "^3.0.1", - "promise": "^8.0.0", - "qs": "^6.4.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/then-request/node_modules/@types/node": { - "version": "8.10.66", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz", - "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==" - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/through2/node_modules/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==", - "dependencies": { - "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" - } - }, - "node_modules/through2/node_modules/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==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" - }, - "node_modules/timers-browserify": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", - "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", - "dependencies": { - "setimmediate": "^1.0.4" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/timsort": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" - }, - "node_modules/tiny-invariant": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.1.0.tgz", - "integrity": "sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw==" - }, - "node_modules/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==" - }, - "node_modules/to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" - }, - "node_modules/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=", - "engines": { - "node": ">=4" - } - }, - "node_modules/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=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-object-path/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "engines": { - "node": ">=6" - } - }, - "node_modules/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==", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/totalist": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz", - "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==", - "engines": { - "node": ">=6" - } - }, - "node_modules/trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=" - }, - "node_modules/trim-leading-lines": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/trim-leading-lines/-/trim-leading-lines-0.1.1.tgz", - "integrity": "sha1-DnysPoMELc+Vp07TaWbxd0TVwWk=", - "dependencies": { - "is-whitespace": "^0.3.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/trim-trailing-lines": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz", - "integrity": "sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/trough": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", - "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" - }, - "node_modules/tty-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", - "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==" - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" - }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, - "node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/uc.micro": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", - "dev": true - }, - "node_modules/unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", - "dependencies": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/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==", - "dependencies": { - "inherits": "^2.0.0", - "xtend": "^4.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/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==", - "engines": { - "node": ">=4" - } - }, - "node_modules/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==", - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/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==", - "engines": { - "node": ">=4" - } - }, - "node_modules/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==", - "engines": { - "node": ">=4" - } - }, - "node_modules/unified": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", - "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", - "dependencies": { - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^2.0.0", - "trough": "^1.0.0", - "vfile": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unified/node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "engines": { - "node": ">=4" - } - }, - "node_modules/uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=" - }, - "node_modules/unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "dependencies": { - "crypto-random-string": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/unist-builder": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz", - "integrity": "sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-generated": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz", - "integrity": "sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-is": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", - "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/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==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-remove": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-2.1.0.tgz", - "integrity": "sha512-J8NYPyBm4baYLdCbjmf1bhPu45Cr1MWTm77qd9istEkzWpnN6O9tMsEbB2JhNnBCqGENRqEWomQ+He6au0B27Q==", - "dependencies": { - "unist-util-is": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-remove-position": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz", - "integrity": "sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==", - "dependencies": { - "unist-util-visit": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/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==", - "dependencies": { - "@types/unist": "^2.0.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", - "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0", - "unist-util-visit-parents": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit-parents": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", - "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=" - }, - "node_modules/untildify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/update-notifier": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", - "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", - "dependencies": { - "boxen": "^5.0.0", - "chalk": "^4.1.0", - "configstore": "^5.0.1", - "has-yarn": "^2.1.0", - "import-lazy": "^2.1.0", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.4.0", - "is-npm": "^5.0.0", - "is-yarn-global": "^0.3.0", - "latest-version": "^5.1.0", - "pupa": "^2.1.1", - "semver": "^7.3.4", - "semver-diff": "^3.1.1", - "xdg-basedir": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/yeoman/update-notifier?sponsor=1" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/urijs": { - "version": "1.19.7", - "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.7.tgz", - "integrity": "sha512-Id+IKjdU0Hx+7Zx717jwLPsPeUqz7rAtuVBRLLs+qn+J2nf9NGITWVCxcijgYxBqe83C7sqsQPs6H1pyz3x9gA==", - "dev": true - }, - "node_modules/url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.0" - } - }, - "node_modules/url-loader": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", - "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", - "dependencies": { - "loader-utils": "^2.0.0", - "mime-types": "^2.1.27", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "file-loader": "*", - "webpack": "^4.0.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "file-loader": { - "optional": true - } - } - }, - "node_modules/url-loader/node_modules/loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/url-loader/node_modules/schema-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", - "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", - "dependencies": { - "@types/json-schema": "^7.0.7", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "dependencies": { - "prepend-http": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/url-template": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", - "integrity": "sha1-/FZaPMy/93MMd19WQflVV5FDnyE=" - }, - "node_modules/url/node_modules/punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" - }, - "node_modules/util": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz", - "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==", - "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "safe-buffer": "^5.1.2", - "which-typed-array": "^1.1.2" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "node_modules/util.promisify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=" - }, - "node_modules/utility-types": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz", - "integrity": "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/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==" - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/vendors": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", - "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/vfile": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", - "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", - "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^2.0.0", - "vfile-message": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-location": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz", - "integrity": "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-message": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", - "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile/node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "engines": { - "node": ">=4" - } - }, - "node_modules/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==" - }, - "node_modules/wait-on": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-6.0.0.tgz", - "integrity": "sha512-tnUJr9p5r+bEYXPUdRseolmz5XqJTTj98JgOsfBn7Oz2dxfE2g3zw1jE+Mo8lopM3j3et/Mq1yW7kKX6qw7RVw==", - "dependencies": { - "axios": "^0.21.1", - "joi": "^17.4.0", - "lodash": "^4.17.21", - "minimist": "^1.2.5", - "rxjs": "^7.1.0" - }, - "bin": { - "wait-on": "bin/wait-on" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/watchpack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.2.0.tgz", - "integrity": "sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA==", - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "dependencies": { - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/web-namespaces": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.4.tgz", - "integrity": "sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/webpack": { - "version": "5.61.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.61.0.tgz", - "integrity": "sha512-fPdTuaYZ/GMGFm4WrPi2KRCqS1vDp773kj9S0iI5Uc//5cszsFEDgHNaX4Rj1vobUiU1dFIV3mA9k1eHeluFpw==", - "dependencies": { - "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.50", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.8.3", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.4", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.2.0", - "webpack-sources": "^3.2.0" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-bundle-analyzer": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.4.2.tgz", - "integrity": "sha512-PIagMYhlEzFfhMYOzs5gFT55DkUdkyrJi/SxJp8EF3YMWhS+T9vvs2EoTetpk5qb6VsCq02eXTlRDOydRhDFAQ==", - "dependencies": { - "acorn": "^8.0.4", - "acorn-walk": "^8.0.0", - "chalk": "^4.1.0", - "commander": "^6.2.0", - "gzip-size": "^6.0.0", - "lodash": "^4.17.20", - "opener": "^1.5.2", - "sirv": "^1.0.7", - "ws": "^7.3.1" - }, - "bin": { - "webpack-bundle-analyzer": "lib/bin/analyzer.js" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/gzip-size": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", - "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", - "dependencies": { - "duplexer": "^0.1.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/webpack-dev-middleware": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.2.1.tgz", - "integrity": "sha512-Kx1X+36Rn9JaZcQMrJ7qN3PMAuKmEDD9ZISjUj3Cgq4A6PtwYsC4mpaKotSRYH3iOF6HsUa8viHKS59FlyVifQ==", - "dependencies": { - "colorette": "^2.0.10", - "memfs": "^3.2.2", - "mime-types": "^2.1.31", - "range-parser": "^1.2.1", - "schema-utils": "^3.1.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/webpack-dev-middleware/node_modules/colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==" - }, - "node_modules/webpack-dev-middleware/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/webpack-dev-server": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.4.0.tgz", - "integrity": "sha512-+S0XRIbsopVjPFjCO8I07FXYBWYqkFmuP56ucGMTs2hA/gV4q2M9xTmNo5Tg4o8ffRR+Nm3AsXnQXxKRyYovrA==", - "dependencies": { - "ansi-html-community": "^0.0.8", - "bonjour": "^3.5.0", - "chokidar": "^3.5.2", - "colorette": "^2.0.10", - "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", - "del": "^6.0.0", - "express": "^4.17.1", - "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.0", - "internal-ip": "^6.2.0", - "ipaddr.js": "^2.0.1", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "portfinder": "^1.0.28", - "schema-utils": "^3.1.0", - "selfsigned": "^1.10.11", - "serve-index": "^1.9.1", - "sockjs": "^0.3.21", - "spdy": "^4.0.2", - "strip-ansi": "^7.0.0", - "url": "^0.11.0", - "webpack-dev-middleware": "^5.2.1", - "ws": "^8.1.0" - }, - "bin": { - "webpack-dev-server": "bin/webpack-dev-server.js" - }, - "engines": { - "node": ">= 12.13.0" - }, - "peerDependencies": { - "webpack": "^4.37.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-dev-server/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/webpack-dev-server/node_modules/colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==" - }, - "node_modules/webpack-dev-server/node_modules/open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/webpack-dev-server/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/webpack-dev-server/node_modules/strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dependencies": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dependencies": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, - "node_modules/webpack-sources/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", - "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", - "dependencies": { - "@types/json-schema": "^7.0.7", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/webpack/node_modules/webpack-sources": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.1.tgz", - "integrity": "sha512-t6BMVLQ0AkjBOoRTZgqrWm7xbXMBzD+XDq2EZ96+vMfn3qKgsvdXZhbPZ4ElUOpdv4u+iiGe+w3+J75iy/bYGA==", - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpackbar": { - "version": "5.0.0-3", - "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-5.0.0-3.tgz", - "integrity": "sha512-viW6KCYjMb0NPoDrw2jAmLXU2dEOhRrtku28KmOfeE1vxbfwCYuTbTaMhnkrCZLFAFyY9Q49Z/jzYO80Dw5b8g==", - "dependencies": { - "ansi-escapes": "^4.3.1", - "chalk": "^4.1.0", - "consola": "^2.15.0", - "figures": "^3.2.0", - "pretty-time": "^1.1.0", - "std-env": "^2.2.1", - "text-table": "^0.2.0", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "webpack": "3 || 4 || 5" - } - }, - "node_modules/websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dependencies": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "node_modules/which-typed-array": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.4.tgz", - "integrity": "sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA==", - "dependencies": { - "available-typed-arrays": "^1.0.2", - "call-bind": "^1.0.0", - "es-abstract": "^1.18.0-next.1", - "foreach": "^2.0.5", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.1", - "is-typed-array": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/widdershins": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/widdershins/-/widdershins-4.0.1.tgz", - "integrity": "sha512-y7TGynno+J/EqRPtUrpEuEjJUc1N2ajfP7R4sHU7Qg8I/VFHGavBxL7ZTeOAVmd1fhmY2wJIbpX2LMDWf37vVA==", - "dev": true, - "dependencies": { - "dot": "^1.1.3", - "fast-safe-stringify": "^2.0.7", - "highlightjs": "^9.12.0", - "httpsnippet": "^1.19.0", - "jgexml": "latest", - "markdown-it": "^10.0.0", - "markdown-it-emoji": "^1.4.0", - "node-fetch": "^2.0.0", - "oas-resolver": "^2.3.1", - "oas-schema-walker": "^1.1.3", - "openapi-sampler": "^1.0.0-beta.15", - "reftools": "^1.1.0", - "swagger2openapi": "^6.0.1", - "urijs": "^1.19.0", - "yaml": "^1.8.3", - "yargs": "^12.0.5" - }, - "bin": { - "testRunner": "testRunner.js", - "widdershins": "widdershins.js" - } - }, - "node_modules/widdershins/node_modules/ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "dev": true, - "dependencies": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" - } - }, - "node_modules/widdershins/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/widdershins/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/widdershins/node_modules/cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "dev": true, - "dependencies": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - } - }, - "node_modules/widdershins/node_modules/cliui/node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/widdershins/node_modules/fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", - "dev": true - }, - "node_modules/widdershins/node_modules/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=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/widdershins/node_modules/json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", - "dev": true - }, - "node_modules/widdershins/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/widdershins/node_modules/oas-validator": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/oas-validator/-/oas-validator-4.0.8.tgz", - "integrity": "sha512-bIt8erTyclF7bkaySTtQ9sppqyVc+mAlPi7vPzCLVHJsL9nrivQjc/jHLX/o+eGbxHd6a6YBwuY/Vxa6wGsiuw==", - "dev": true, - "dependencies": { - "ajv": "^5.5.2", - "better-ajv-errors": "^0.6.7", - "call-me-maybe": "^1.0.1", - "oas-kit-common": "^1.0.8", - "oas-linter": "^3.1.3", - "oas-resolver": "^2.4.3", - "oas-schema-walker": "^1.1.5", - "reftools": "^1.1.5", - "should": "^13.2.1", - "yaml": "^1.8.3" - }, - "funding": { - "url": "https://github.com/Mermade/oas-kit?sponsor=1" - } - }, - "node_modules/widdershins/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/widdershins/node_modules/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==", - "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/widdershins/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/widdershins/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/widdershins/node_modules/swagger2openapi": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/swagger2openapi/-/swagger2openapi-6.2.3.tgz", - "integrity": "sha512-cUUktzLpK69UwpMbcTzjMw2ns9RZChfxh56AHv6+hTx3StPOX2foZjPgds3HlJcINbxosYYBn/D3cG8nwcCWwQ==", - "dev": true, - "dependencies": { - "better-ajv-errors": "^0.6.1", - "call-me-maybe": "^1.0.1", - "node-fetch-h2": "^2.3.0", - "node-readfiles": "^0.2.0", - "oas-kit-common": "^1.0.8", - "oas-resolver": "^2.4.3", - "oas-schema-walker": "^1.1.5", - "oas-validator": "^4.0.8", - "reftools": "^1.1.5", - "yaml": "^1.8.3", - "yargs": "^15.3.1" - }, - "bin": { - "boast": "boast.js", - "oas-validate": "oas-validate.js", - "swagger2openapi": "swagger2openapi.js" - }, - "funding": { - "url": "https://github.com/Mermade/oas-kit?sponsor=1" - } - }, - "node_modules/widdershins/node_modules/swagger2openapi/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/widdershins/node_modules/swagger2openapi/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/widdershins/node_modules/swagger2openapi/node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/widdershins/node_modules/swagger2openapi/node_modules/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==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/widdershins/node_modules/swagger2openapi/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/widdershins/node_modules/swagger2openapi/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/widdershins/node_modules/wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/widdershins/node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/widdershins/node_modules/wrap-ansi/node_modules/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=", - "dev": true, - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/widdershins/node_modules/wrap-ansi/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/widdershins/node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/widdershins/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "node_modules/widdershins/node_modules/yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", - "dev": true, - "dependencies": { - "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" - } - }, - "node_modules/widdershins/node_modules/yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "node_modules/widdershins/node_modules/yargs/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/widdershins/node_modules/yargs/node_modules/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==", - "dev": true - }, - "node_modules/widdershins/node_modules/yargs/node_modules/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=", - "dev": true - }, - "node_modules/widdershins/node_modules/yargs/node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", - "dependencies": { - "string-width": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==" - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "node_modules/ws": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.2.tgz", - "integrity": "sha512-lkF7AWRicoB9mAgjeKbGqVUekLnSNO4VjKVnuPHpQeOxZOErX6BPXwJk70nFslRCEEA8EVW7ZjKwXaP9N+1sKQ==", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xdg-basedir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/xml-js": { - "version": "1.6.11", - "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", - "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", - "dependencies": { - "sax": "^1.2.4" - }, - "bin": { - "xml-js": "bin/cli.js" - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/yaml-ast-parser": { - "version": "0.0.43", - "resolved": "https://registry.npmjs.org/yaml-ast-parser/-/yaml-ast-parser-0.0.43.tgz", - "integrity": "sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==" - }, - "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "engines": { - "node": ">=10" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/zwitch": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", - "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - } - }, - "dependencies": { - "@algolia/autocomplete-core": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.2.1.tgz", - "integrity": "sha512-/SLS6636Wpl7eFiX7eEy0E3wBo60sUm1qRYybJBDt1fs8reiJ1+OSy+dZgrLBfLL4mSFqRIIUHXbVp25QdZ+iw==", - "requires": { - "@algolia/autocomplete-shared": "1.2.1" - } - }, - "@algolia/autocomplete-preset-algolia": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.2.1.tgz", - "integrity": "sha512-Lf4PpPVgHNXm1ytrnVdrZYV7hAYSCpAI/TrebF8UC6xflPY6sKb1RL/2OfrO9On7SDjPBtNd+6MArSar5JmK0g==", - "requires": { - "@algolia/autocomplete-shared": "1.2.1" - } - }, - "@algolia/autocomplete-shared": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.2.1.tgz", - "integrity": "sha512-RHCwcXAYFwDXTlomstjWRFIzOfyxtQ9KmViacPE5P5hxUSSjkmG3dAb77xdydift1PaZNbho5TNTCi5UZe0RpA==" - }, - "@algolia/cache-browser-local-storage": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.11.0.tgz", - "integrity": "sha512-4sr9vHIG1fVA9dONagdzhsI/6M5mjs/qOe2xUP0yBmwsTsuwiZq3+Xu6D3dsxsuFetcJgC6ydQoCW8b7fDJHYQ==", - "requires": { - "@algolia/cache-common": "4.11.0" - } - }, - "@algolia/cache-common": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.11.0.tgz", - "integrity": "sha512-lODcJRuPXqf+6mp0h6bOxPMlbNoyn3VfjBVcQh70EDP0/xExZbkpecgHyyZK4kWg+evu+mmgvTK3GVHnet/xKw==" - }, - "@algolia/cache-in-memory": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.11.0.tgz", - "integrity": "sha512-aBz+stMSTBOBaBEQ43zJXz2DnwS7fL6dR0e2myehAgtfAWlWwLDHruc/98VOy1ZAcBk1blE2LCU02bT5HekGxQ==", - "requires": { - "@algolia/cache-common": "4.11.0" - } - }, - "@algolia/client-account": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.11.0.tgz", - "integrity": "sha512-jwmFBoUSzoMwMqgD3PmzFJV/d19p1RJXB6C1ADz4ju4mU7rkaQLtqyZroQpheLoU5s5Tilmn/T8/0U2XLoJCRQ==", - "requires": { - "@algolia/client-common": "4.11.0", - "@algolia/client-search": "4.11.0", - "@algolia/transporter": "4.11.0" - } - }, - "@algolia/client-analytics": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.11.0.tgz", - "integrity": "sha512-v5U9585aeEdYml7JqggHAj3E5CQ+jPwGVztPVhakBk8H/cmLyPS2g8wvmIbaEZCHmWn4TqFj3EBHVYxAl36fSA==", - "requires": { - "@algolia/client-common": "4.11.0", - "@algolia/client-search": "4.11.0", - "@algolia/requester-common": "4.11.0", - "@algolia/transporter": "4.11.0" - } - }, - "@algolia/client-common": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.11.0.tgz", - "integrity": "sha512-Qy+F+TZq12kc7tgfC+FM3RvYH/Ati7sUiUv/LkvlxFwNwNPwWGoZO81AzVSareXT/ksDDrabD4mHbdTbBPTRmQ==", - "requires": { - "@algolia/requester-common": "4.11.0", - "@algolia/transporter": "4.11.0" - } - }, - "@algolia/client-personalization": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.11.0.tgz", - "integrity": "sha512-mI+X5IKiijHAzf9fy8VSl/GTT67dzFDnJ0QAM8D9cMPevnfX4U72HRln3Mjd0xEaYUOGve8TK/fMg7d3Z5yG6g==", - "requires": { - "@algolia/client-common": "4.11.0", - "@algolia/requester-common": "4.11.0", - "@algolia/transporter": "4.11.0" - } - }, - "@algolia/client-search": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.11.0.tgz", - "integrity": "sha512-iovPLc5YgiXBdw2qMhU65sINgo9umWbHFzInxoNErWnYoTQWfXsW6P54/NlKx5uscoLVjSf+5RUWwFu5BX+lpw==", - "requires": { - "@algolia/client-common": "4.11.0", - "@algolia/requester-common": "4.11.0", - "@algolia/transporter": "4.11.0" - } - }, - "@algolia/logger-common": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.11.0.tgz", - "integrity": "sha512-pRMJFeOY8hoWKIxWuGHIrqnEKN/kqKh7UilDffG/+PeEGxBuku+Wq5CfdTFG0C9ewUvn8mAJn5BhYA5k8y0Jqg==" - }, - "@algolia/logger-console": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.11.0.tgz", - "integrity": "sha512-wXztMk0a3VbNmYP8Kpc+F7ekuvaqZmozM2eTLok0XIshpAeZ/NJDHDffXK2Pw+NF0wmHqurptLYwKoikjBYvhQ==", - "requires": { - "@algolia/logger-common": "4.11.0" - } - }, - "@algolia/requester-browser-xhr": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.11.0.tgz", - "integrity": "sha512-Fp3SfDihAAFR8bllg8P5ouWi3+qpEVN5e7hrtVIYldKBOuI/qFv80Zv/3/AMKNJQRYglS4zWyPuqrXm58nz6KA==", - "requires": { - "@algolia/requester-common": "4.11.0" - } - }, - "@algolia/requester-common": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.11.0.tgz", - "integrity": "sha512-+cZGe/9fuYgGuxjaBC+xTGBkK7OIYdfapxhfvEf03dviLMPmhmVYFJtJlzAjQ2YmGDJpHrGgAYj3i/fbs8yhiA==" - }, - "@algolia/requester-node-http": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.11.0.tgz", - "integrity": "sha512-qJIk9SHRFkKDi6dMT9hba8X1J1z92T5AZIgl+tsApjTGIRQXJLTIm+0q4yOefokfu4CoxYwRZ9QAq+ouGwfeOg==", - "requires": { - "@algolia/requester-common": "4.11.0" - } - }, - "@algolia/transporter": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.11.0.tgz", - "integrity": "sha512-k4dyxiaEfYpw4UqybK9q7lrFzehygo6KV3OCYJMMdX0IMWV0m4DXdU27c1zYRYtthaFYaBzGF4Kjcl8p8vxCKw==", - "requires": { - "@algolia/cache-common": "4.11.0", - "@algolia/logger-common": "4.11.0", - "@algolia/requester-common": "4.11.0" - } - }, - "@apidevtools/json-schema-ref-parser": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz", - "integrity": "sha512-GBD2Le9w2+lVFoc4vswGI/TjkNIZSVp7+9xPf+X3uidBfWnAeUWmquteSyt0+VCrhNMWj/FTABISQrD3Z/YA+w==", - "dev": true, - "requires": { - "@jsdevtools/ono": "^7.1.3", - "@types/json-schema": "^7.0.6", - "call-me-maybe": "^1.0.1", - "js-yaml": "^4.1.0" - } - }, - "@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "requires": { - "@babel/highlight": "^7.14.5" - } - }, - "@babel/compat-data": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", - "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==" - }, - "@babel/core": { - "version": "7.14.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.6.tgz", - "integrity": "sha512-gJnOEWSqTk96qG5BoIrl5bVtc23DCycmIePPYnamY9RboYdI4nFy5vAQMSl81O5K/W0sLDWfGysnOECC+KUUCA==", - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.14.5", - "@babel/helper-compilation-targets": "^7.14.5", - "@babel/helper-module-transforms": "^7.14.5", - "@babel/helpers": "^7.14.6", - "@babel/parser": "^7.14.6", - "@babel/template": "^7.14.5", - "@babel/traverse": "^7.14.5", - "@babel/types": "^7.14.5", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - }, - "@babel/generator": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz", - "integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==", - "requires": { - "@babel/types": "^7.15.6", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz", - "integrity": "sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA==", - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.14.5.tgz", - "integrity": "sha512-YTA/Twn0vBXDVGJuAX6PwW7x5zQei1luDDo2Pl6q1qZ7hVNl0RZrhHCQG/ArGpR29Vl7ETiB8eJyrvpuRp300w==", - "requires": { - "@babel/helper-explode-assignable-expression": "^7.14.5", - "@babel/types": "^7.14.5" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz", - "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==", - "requires": { - "@babel/compat-data": "^7.15.0", - "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.16.6", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.4.tgz", - "integrity": "sha512-7ZmzFi+DwJx6A7mHRwbuucEYpyBwmh2Ca0RvI6z2+WLZYCqV0JOaLb+u0zbtmDicebgKBZgqbYfLaKNqSgv5Pw==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4" - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz", - "integrity": "sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "regexpu-core": "^4.7.1" - } - }, - "@babel/helper-define-polyfill-provider": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz", - "integrity": "sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew==", - "requires": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.14.5.tgz", - "integrity": "sha512-Htb24gnGJdIGT4vnRKMdoXiOIlqOLmdiUYpAQ0mYfgVT/GDm8GOYhgi4GL+hMKrkiPRohO4ts34ELFsGAPQLDQ==", - "requires": { - "@babel/types": "^7.14.5" - } - }, - "@babel/helper-function-name": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", - "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", - "requires": { - "@babel/helper-get-function-arity": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", - "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", - "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", - "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-module-imports": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", - "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-module-transforms": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz", - "integrity": "sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg==", - "requires": { - "@babel/helper-module-imports": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-simple-access": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.6" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", - "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", - "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==" - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.15.4.tgz", - "integrity": "sha512-v53MxgvMK/HCwckJ1bZrq6dNKlmwlyRNYM6ypaRTdXWGOE2c1/SCa6dL/HimhPulGhZKw9W0QhREM583F/t0vQ==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.15.4", - "@babel/helper-wrap-function": "^7.15.4", - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-replace-supers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", - "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", - "requires": { - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-simple-access": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", - "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.15.4.tgz", - "integrity": "sha512-BMRLsdh+D1/aap19TycS4eD1qELGrCBJwzaY9IE8LrpJtJb+H7rQkPIdsfgnMtLBA6DJls7X9z93Z4U8h7xw0A==", - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", - "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==" - }, - "@babel/helper-validator-option": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==" - }, - "@babel/helper-wrap-function": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.15.4.tgz", - "integrity": "sha512-Y2o+H/hRV5W8QhIfTpRIBwl57y8PrZt6JM3V8FOo5qarjshHItyH5lXlpMfBfmBefOqSCpKZs/6Dxqp0E/U+uw==", - "requires": { - "@babel/helper-function-name": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" - } - }, - "@babel/helpers": { - "version": "7.14.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.6.tgz", - "integrity": "sha512-yesp1ENQBiLI+iYHSJdoZKUtRpfTlL1grDIX9NRlAVppljLw/4tTyYupIB7uIYmC3stW/imAv8EqaKaS/ibmeA==", - "requires": { - "@babel/template": "^7.14.5", - "@babel/traverse": "^7.14.5", - "@babel/types": "^7.14.5" - } - }, - "@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "requires": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "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" - } - }, - "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": "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=" - }, - "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=" - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "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" - } - } - } - }, - "@babel/parser": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", - "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==" - }, - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.15.4.tgz", - "integrity": "sha512-eBnpsl9tlhPhpI10kU06JHnrYXwg3+V6CaP2idsCXNef0aeslpqyITXQ74Vfk5uHgY7IG7XP0yIH8b42KSzHog==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.15.4", - "@babel/plugin-proposal-optional-chaining": "^7.14.5" - } - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.15.8.tgz", - "integrity": "sha512-2Z5F2R2ibINTc63mY7FLqGfEbmofrHU9FitJW1Q7aPaKFhiPvSq6QEt/BoWN5oME3GVyjcRuNNSRbb9LC0CSWA==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.15.4", - "@babel/plugin-syntax-async-generators": "^7.8.4" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz", - "integrity": "sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-proposal-class-static-block": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.15.4.tgz", - "integrity": "sha512-M682XWrrLNk3chXCjoPUQWOyYsB93B9z3mRyjtqqYJWDf2mfCdIYgDrA11cgNVhAQieaq6F2fn2f3wI0U4aTjA==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz", - "integrity": "sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz", - "integrity": "sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz", - "integrity": "sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-json-strings": "^7.8.3" - } - }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz", - "integrity": "sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz", - "integrity": "sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz", - "integrity": "sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.15.6.tgz", - "integrity": "sha512-qtOHo7A1Vt+O23qEAX+GdBpqaIuD3i9VRrWgCJeq7WO6H2d14EK3q11urj5Te2MAeK97nMiIdRpwd/ST4JFbNg==", - "requires": { - "@babel/compat-data": "^7.15.0", - "@babel/helper-compilation-targets": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.15.4" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz", - "integrity": "sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz", - "integrity": "sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - } - }, - "@babel/plugin-proposal-private-methods": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz", - "integrity": "sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-proposal-private-property-in-object": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.15.4.tgz", - "integrity": "sha512-X0UTixkLf0PCCffxgu5/1RQyGGbgZuKoI+vXP4iSbJSYwPb7hu06omsFGBvQ9lJEvwgrxHdS8B5nbfcd8GyUNA==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.15.4", - "@babel/helper-create-class-features-plugin": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz", - "integrity": "sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q==", - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@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-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@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-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@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.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz", - "integrity": "sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@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.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@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-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-typescript": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz", - "integrity": "sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz", - "integrity": "sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz", - "integrity": "sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA==", - "requires": { - "@babel/helper-module-imports": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.14.5" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz", - "integrity": "sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.15.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.15.3.tgz", - "integrity": "sha512-nBAzfZwZb4DkaGtOes1Up1nOAp9TDRRFw4XBzBBSG9QK7KVFmYzgj9o9sbPv7TX5ofL4Auq4wZnxCoPnI/lz2Q==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.15.4.tgz", - "integrity": "sha512-Yjvhex8GzBmmPQUvpXRPWQ9WnxXgAFuZSrqOK/eJlOGIXwvv8H3UEdUigl1gb/bnjTrln+e8bkZUYCBt/xYlBg==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "globals": "^11.1.0" - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz", - "integrity": "sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz", - "integrity": "sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz", - "integrity": "sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw==", - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz", - "integrity": "sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz", - "integrity": "sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA==", - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.15.4.tgz", - "integrity": "sha512-DRTY9fA751AFBDh2oxydvVm4SYevs5ILTWLs6xKXps4Re/KG5nfUkr+TdHCrRWB8C69TlzVgA9b3RmGWmgN9LA==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz", - "integrity": "sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ==", - "requires": { - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz", - "integrity": "sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz", - "integrity": "sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz", - "integrity": "sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g==", - "requires": { - "@babel/helper-module-transforms": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "dependencies": { - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "requires": { - "object.assign": "^4.1.0" - } - } - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.15.4.tgz", - "integrity": "sha512-qg4DPhwG8hKp4BbVDvX1s8cohM8a6Bvptu4l6Iingq5rW+yRUAhe/YRup/YcW2zCOlrysEWVhftIcKzrEZv3sA==", - "requires": { - "@babel/helper-module-transforms": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-simple-access": "^7.15.4", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "dependencies": { - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "requires": { - "object.assign": "^4.1.0" - } - } - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.15.4.tgz", - "integrity": "sha512-fJUnlQrl/mezMneR72CKCgtOoahqGJNVKpompKwzv3BrEXdlPspTcyxrZ1XmDTIr9PpULrgEQo3qNKp6dW7ssw==", - "requires": { - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-module-transforms": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-identifier": "^7.14.9", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "dependencies": { - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "requires": { - "object.assign": "^4.1.0" - } - } - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz", - "integrity": "sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA==", - "requires": { - "@babel/helper-module-transforms": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.14.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.9.tgz", - "integrity": "sha512-l666wCVYO75mlAtGFfyFwnWmIXQm3kSH0C3IRnJqWcZbWkoihyAdDhFm2ZWaxWTqvBvhVFfJjMRQ0ez4oN1yYA==", - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz", - "integrity": "sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz", - "integrity": "sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-replace-supers": "^7.14.5" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.15.4.tgz", - "integrity": "sha512-9WB/GUTO6lvJU3XQsSr6J/WKvBC2hcs4Pew8YxZagi6GkTdniyqp8On5kqdK8MN0LMeu0mGbhPN+O049NV/9FQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-property-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz", - "integrity": "sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-react-constant-elements": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.14.5.tgz", - "integrity": "sha512-NBqLEx1GxllIOXJInJAQbrnwwYJsV3WaMHIcOwD8rhYS0AabTWn7kHdHgPgu5RmHLU0q4DMxhAMu8ue/KampgQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-react-display-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.14.5.tgz", - "integrity": "sha512-07aqY1ChoPgIxsuDviptRpVkWCSbXWmzQqcgy65C6YSFOfPFvb/DX3bBRHh7pCd/PMEEYHYWUTSVkCbkVainYQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-react-jsx": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.14.5.tgz", - "integrity": "sha512-7RylxNeDnxc1OleDm0F5Q/BSL+whYRbOAR+bwgCxIr0L32v7UFh/pz1DLMZideAUxKT6eMoS2zQH6fyODLEi8Q==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "@babel/helper-module-imports": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-jsx": "^7.14.5", - "@babel/types": "^7.14.5" - } - }, - "@babel/plugin-transform-react-jsx-development": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.14.5.tgz", - "integrity": "sha512-rdwG/9jC6QybWxVe2UVOa7q6cnTpw8JRRHOxntG/h6g/guAOe6AhtQHJuJh5FwmnXIT1bdm5vC2/5huV8ZOorQ==", - "requires": { - "@babel/plugin-transform-react-jsx": "^7.14.5" - } - }, - "@babel/plugin-transform-react-pure-annotations": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.14.5.tgz", - "integrity": "sha512-3X4HpBJimNxW4rhUy/SONPyNQHp5YRr0HhJdT2OH1BRp0of7u3Dkirc7x9FRJMKMqTBI079VZ1hzv7Ouuz///g==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz", - "integrity": "sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg==", - "requires": { - "regenerator-transform": "^0.14.2" - } - }, - "@babel/plugin-transform-reserved-words": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz", - "integrity": "sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-runtime": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.15.8.tgz", - "integrity": "sha512-+6zsde91jMzzvkzuEA3k63zCw+tm/GvuuabkpisgbDMTPQsIMHllE3XczJFFtEHLjjhKQFZmGQVRdELetlWpVw==", - "requires": { - "@babel/helper-module-imports": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "babel-plugin-polyfill-corejs2": "^0.2.2", - "babel-plugin-polyfill-corejs3": "^0.2.5", - "babel-plugin-polyfill-regenerator": "^0.2.2", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz", - "integrity": "sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.15.8.tgz", - "integrity": "sha512-/daZ8s2tNaRekl9YJa9X4bzjpeRZLt122cpgFnQPLGUe61PH8zMEBmYqKkW5xF5JUEh5buEGXJoQpqBmIbpmEQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.15.4" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz", - "integrity": "sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz", - "integrity": "sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz", - "integrity": "sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-typescript": { - "version": "7.14.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.14.6.tgz", - "integrity": "sha512-XlTdBq7Awr4FYIzqhmYY80WN0V0azF74DMPyFqVHBvf81ZUgc4X7ZOpx6O8eLDK6iM5cCQzeyJw0ynTaefixRA==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.14.6", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-typescript": "^7.14.5" - } - }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz", - "integrity": "sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz", - "integrity": "sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw==", - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/preset-env": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.15.8.tgz", - "integrity": "sha512-rCC0wH8husJgY4FPbHsiYyiLxSY8oMDJH7Rl6RQMknbN9oDDHhM9RDFvnGM2MgkbUJzSQB4gtuwygY5mCqGSsA==", - "requires": { - "@babel/compat-data": "^7.15.0", - "@babel/helper-compilation-targets": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.15.4", - "@babel/plugin-proposal-async-generator-functions": "^7.15.8", - "@babel/plugin-proposal-class-properties": "^7.14.5", - "@babel/plugin-proposal-class-static-block": "^7.15.4", - "@babel/plugin-proposal-dynamic-import": "^7.14.5", - "@babel/plugin-proposal-export-namespace-from": "^7.14.5", - "@babel/plugin-proposal-json-strings": "^7.14.5", - "@babel/plugin-proposal-logical-assignment-operators": "^7.14.5", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5", - "@babel/plugin-proposal-numeric-separator": "^7.14.5", - "@babel/plugin-proposal-object-rest-spread": "^7.15.6", - "@babel/plugin-proposal-optional-catch-binding": "^7.14.5", - "@babel/plugin-proposal-optional-chaining": "^7.14.5", - "@babel/plugin-proposal-private-methods": "^7.14.5", - "@babel/plugin-proposal-private-property-in-object": "^7.15.4", - "@babel/plugin-proposal-unicode-property-regex": "^7.14.5", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.14.5", - "@babel/plugin-transform-async-to-generator": "^7.14.5", - "@babel/plugin-transform-block-scoped-functions": "^7.14.5", - "@babel/plugin-transform-block-scoping": "^7.15.3", - "@babel/plugin-transform-classes": "^7.15.4", - "@babel/plugin-transform-computed-properties": "^7.14.5", - "@babel/plugin-transform-destructuring": "^7.14.7", - "@babel/plugin-transform-dotall-regex": "^7.14.5", - "@babel/plugin-transform-duplicate-keys": "^7.14.5", - "@babel/plugin-transform-exponentiation-operator": "^7.14.5", - "@babel/plugin-transform-for-of": "^7.15.4", - "@babel/plugin-transform-function-name": "^7.14.5", - "@babel/plugin-transform-literals": "^7.14.5", - "@babel/plugin-transform-member-expression-literals": "^7.14.5", - "@babel/plugin-transform-modules-amd": "^7.14.5", - "@babel/plugin-transform-modules-commonjs": "^7.15.4", - "@babel/plugin-transform-modules-systemjs": "^7.15.4", - "@babel/plugin-transform-modules-umd": "^7.14.5", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.14.9", - "@babel/plugin-transform-new-target": "^7.14.5", - "@babel/plugin-transform-object-super": "^7.14.5", - "@babel/plugin-transform-parameters": "^7.15.4", - "@babel/plugin-transform-property-literals": "^7.14.5", - "@babel/plugin-transform-regenerator": "^7.14.5", - "@babel/plugin-transform-reserved-words": "^7.14.5", - "@babel/plugin-transform-shorthand-properties": "^7.14.5", - "@babel/plugin-transform-spread": "^7.15.8", - "@babel/plugin-transform-sticky-regex": "^7.14.5", - "@babel/plugin-transform-template-literals": "^7.14.5", - "@babel/plugin-transform-typeof-symbol": "^7.14.5", - "@babel/plugin-transform-unicode-escapes": "^7.14.5", - "@babel/plugin-transform-unicode-regex": "^7.14.5", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.15.6", - "babel-plugin-polyfill-corejs2": "^0.2.2", - "babel-plugin-polyfill-corejs3": "^0.2.5", - "babel-plugin-polyfill-regenerator": "^0.2.2", - "core-js-compat": "^3.16.0", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - }, - "@babel/preset-modules": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - } - }, - "@babel/preset-react": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.14.5.tgz", - "integrity": "sha512-XFxBkjyObLvBaAvkx1Ie95Iaq4S/GUEIrejyrntQ/VCMKUYvKLoyKxOBzJ2kjA3b6rC9/KL6KXfDC2GqvLiNqQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-transform-react-display-name": "^7.14.5", - "@babel/plugin-transform-react-jsx": "^7.14.5", - "@babel/plugin-transform-react-jsx-development": "^7.14.5", - "@babel/plugin-transform-react-pure-annotations": "^7.14.5" - } - }, - "@babel/preset-typescript": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.14.5.tgz", - "integrity": "sha512-u4zO6CdbRKbS9TypMqrlGH7sd2TAJppZwn3c/ZRLeO/wGsbddxgbPDUZVNrie3JWYLQ9vpineKlsrWFvO6Pwkw==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-transform-typescript": "^7.14.5" - } - }, - "@babel/runtime": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.4.tgz", - "integrity": "sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/runtime-corejs3": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.15.4.tgz", - "integrity": "sha512-lWcAqKeB624/twtTc3w6w/2o9RqJPaNBhPGK6DKLSiwuVWC7WFkypWyNg+CpZoyJH0jVzv1uMtXZ/5/lQOLtCg==", - "requires": { - "core-js-pure": "^3.16.0", - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" - } - }, - "@babel/traverse": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", - "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "requires": { - "@babel/helper-validator-identifier": "^7.14.9", - "to-fast-properties": "^2.0.0" - } - }, - "@braintree/sanitize-url": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-3.1.0.tgz", - "integrity": "sha512-GcIY79elgB+azP74j8vqkiXz8xLFfIzbQJdlwOPisgbKT00tviJQuEghOXSMVxJ00HoYJbGswr4kcllUc4xCcg==" - }, - "@docsearch/css": { - "version": "3.0.0-alpha.39", - "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.0.0-alpha.39.tgz", - "integrity": "sha512-lr10MFTgcR3NRea/FtJ7uNtIpQz0XVwYxbpO5wxykgfHu1sxZTr6zwkuPquRgFYXnccxsTvfoIiK3rMH0fLr/w==" - }, - "@docsearch/react": { - "version": "3.0.0-alpha.39", - "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.0.0-alpha.39.tgz", - "integrity": "sha512-urTIt82tan6CU+D2kO6xXpWQom/r1DA7L/55m2JiCIK/3SLh2z15FJFVN2abeK7B4wl8pCfWunYOwCsSHhWDLA==", - "requires": { - "@algolia/autocomplete-core": "1.2.1", - "@algolia/autocomplete-preset-algolia": "1.2.1", - "@docsearch/css": "3.0.0-alpha.39", - "algoliasearch": "^4.0.0" - } - }, - "@docusaurus/core": { - "version": "2.0.0-beta.9", - "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-2.0.0-beta.9.tgz", - "integrity": "sha512-Bf9c6+yftZfAJk2h4HyaDvzBp5TLhqYtfnfWKKNi0Gdw9vRLXhi7IaiGaLWIuNAIJLTi++Ql0BAn+C0OO8EsWA==", - "requires": { - "@babel/core": "^7.12.16", - "@babel/generator": "^7.12.15", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-transform-runtime": "^7.15.0", - "@babel/preset-env": "^7.15.6", - "@babel/preset-react": "^7.12.13", - "@babel/preset-typescript": "^7.12.16", - "@babel/runtime": "^7.15.4", - "@babel/runtime-corejs3": "^7.15.4", - "@babel/traverse": "^7.12.13", - "@docusaurus/cssnano-preset": "2.0.0-beta.9", - "@docusaurus/react-loadable": "5.5.2", - "@docusaurus/types": "2.0.0-beta.9", - "@docusaurus/utils": "2.0.0-beta.9", - "@docusaurus/utils-common": "2.0.0-beta.9", - "@docusaurus/utils-validation": "2.0.0-beta.9", - "@slorber/static-site-generator-webpack-plugin": "^4.0.0", - "@svgr/webpack": "^5.5.0", - "autoprefixer": "^10.3.5", - "babel-loader": "^8.2.2", - "babel-plugin-dynamic-import-node": "2.3.0", - "boxen": "^5.0.1", - "chalk": "^4.1.2", - "chokidar": "^3.5.2", - "clean-css": "^5.1.5", - "commander": "^5.1.0", - "copy-webpack-plugin": "^9.0.1", - "core-js": "^3.18.0", - "css-loader": "^5.1.1", - "css-minimizer-webpack-plugin": "^3.0.2", - "cssnano": "^5.0.8", - "del": "^6.0.0", - "detect-port": "^1.3.0", - "escape-html": "^1.0.3", - "eta": "^1.12.3", - "file-loader": "^6.2.0", - "fs-extra": "^10.0.0", - "github-slugger": "^1.4.0", - "globby": "^11.0.2", - "html-minifier-terser": "^6.0.2", - "html-tags": "^3.1.0", - "html-webpack-plugin": "^5.4.0", - "import-fresh": "^3.3.0", - "is-root": "^2.1.0", - "leven": "^3.1.0", - "lodash": "^4.17.20", - "mini-css-extract-plugin": "^1.6.0", - "nprogress": "^0.2.0", - "postcss": "^8.3.7", - "postcss-loader": "^6.1.1", - "prompts": "^2.4.1", - "react-dev-utils": "12.0.0-next.47", - "react-error-overlay": "^6.0.9", - "react-helmet": "^6.1.0", - "react-loadable": "npm:@docusaurus/react-loadable@5.5.2", - "react-loadable-ssr-addon-v5-slorber": "^1.0.1", - "react-router": "^5.2.0", - "react-router-config": "^5.1.1", - "react-router-dom": "^5.2.0", - "remark-admonitions": "^1.2.1", - "resolve-pathname": "^3.0.0", - "rtl-detect": "^1.0.4", - "semver": "^7.3.4", - "serve-handler": "^6.1.3", - "shelljs": "^0.8.4", - "std-env": "^2.2.1", - "strip-ansi": "^6.0.0", - "terser-webpack-plugin": "^5.2.4", - "tslib": "^2.3.1", - "update-notifier": "^5.1.0", - "url-loader": "^4.1.1", - "wait-on": "^6.0.0", - "webpack": "^5.61.0", - "webpack-bundle-analyzer": "^4.4.2", - "webpack-dev-server": "^4.4.0", - "webpack-merge": "^5.8.0", - "webpackbar": "^5.0.0-3" - }, - "dependencies": { - "react-loadable": { - "version": "npm:@docusaurus/react-loadable@5.5.2", - "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz", - "integrity": "sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==", - "requires": { - "@types/react": "*", - "prop-types": "^15.6.2" - } - } - } - }, - "@docusaurus/cssnano-preset": { - "version": "2.0.0-beta.9", - "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-2.0.0-beta.9.tgz", - "integrity": "sha512-oIdoiZ/i4LXRxmuLN2ZmvGpMqtwba+ck9TlaQDWC7wvHx+EA9mvvcewKWgc7e4dxPA00+777cQvrDctAreAqLw==", - "requires": { - "cssnano-preset-advanced": "^5.1.4", - "postcss": "^8.3.7", - "postcss-sort-media-queries": "^4.1.0" - } - }, - "@docusaurus/mdx-loader": { - "version": "2.0.0-beta.9", - "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-2.0.0-beta.9.tgz", - "integrity": "sha512-qb+/Ew69kaAIiot+1lJ13ozsyCY+7/VryzopDTgr60BDCsLUvuDzjNKreBqo1xdC4JxYD/hJMV7UAHkZ8rWB8Q==", - "requires": { - "@babel/parser": "^7.12.16", - "@babel/traverse": "^7.12.13", - "@docusaurus/core": "2.0.0-beta.9", - "@docusaurus/utils": "2.0.0-beta.9", - "@mdx-js/mdx": "^1.6.21", - "@mdx-js/react": "^1.6.21", - "chalk": "^4.1.2", - "escape-html": "^1.0.3", - "file-loader": "^6.2.0", - "fs-extra": "^10.0.0", - "github-slugger": "^1.4.0", - "gray-matter": "^4.0.3", - "mdast-util-to-string": "^2.0.0", - "remark-emoji": "^2.1.0", - "stringify-object": "^3.3.0", - "unist-util-visit": "^2.0.2", - "url-loader": "^4.1.1", - "webpack": "^5.61.0" - } - }, - "@docusaurus/plugin-content-blog": { - "version": "2.0.0-beta.9", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.0.0-beta.9.tgz", - "integrity": "sha512-KZ6UmUa/P4SSX8/xnZpwSt7krnAfRg3S/ghZ7zeIzcp12iumSZBmLNi5rIIXcsFVH0IPOnIofEoWEaEIwaNerg==", - "requires": { - "@docusaurus/core": "2.0.0-beta.9", - "@docusaurus/mdx-loader": "2.0.0-beta.9", - "@docusaurus/types": "2.0.0-beta.9", - "@docusaurus/utils": "2.0.0-beta.9", - "@docusaurus/utils-validation": "2.0.0-beta.9", - "chalk": "^4.1.2", - "escape-string-regexp": "^4.0.0", - "feed": "^4.2.2", - "fs-extra": "^10.0.0", - "globby": "^11.0.2", - "js-yaml": "^4.0.0", - "loader-utils": "^2.0.0", - "lodash": "^4.17.20", - "reading-time": "^1.5.0", - "remark-admonitions": "^1.2.1", - "tslib": "^2.3.1", - "utility-types": "^3.10.0", - "webpack": "^5.61.0" - }, - "dependencies": { - "loader-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.1.tgz", - "integrity": "sha512-g4miPa9uUrZz4iElkaVJgDFwKJGh8aQGM7pUL4ejXl6cu7kSb30seQOVGNMP6sW8j7DW77X68hJZ+GM7UGhXeQ==", - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - } - } - }, - "@docusaurus/plugin-content-docs": { - "version": "2.0.0-beta.9", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.0.0-beta.9.tgz", - "integrity": "sha512-GC+CvqKuravPpK5fqlYJVmj9hc6nkd/c/rM2ONueFCqw2wyuH7esWL8RpMqgS0JM1qwwuRpi0Dd3R/zdOptHIQ==", - "requires": { - "@docusaurus/core": "2.0.0-beta.9", - "@docusaurus/mdx-loader": "2.0.0-beta.9", - "@docusaurus/types": "2.0.0-beta.9", - "@docusaurus/utils": "2.0.0-beta.9", - "@docusaurus/utils-validation": "2.0.0-beta.9", - "chalk": "^4.1.2", - "combine-promises": "^1.1.0", - "escape-string-regexp": "^4.0.0", - "execa": "^5.0.0", - "fs-extra": "^10.0.0", - "globby": "^11.0.2", - "import-fresh": "^3.2.2", - "js-yaml": "^4.0.0", - "loader-utils": "^2.0.0", - "lodash": "^4.17.20", - "remark-admonitions": "^1.2.1", - "shelljs": "^0.8.4", - "tslib": "^2.3.1", - "utility-types": "^3.10.0", - "webpack": "^5.61.0" - }, - "dependencies": { - "loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - } - } - }, - "@docusaurus/plugin-content-pages": { - "version": "2.0.0-beta.9", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.0.0-beta.9.tgz", - "integrity": "sha512-27nFHhPpZEWra6izyWgY+EkBspr3OAUUHojRXzMUKplYLZ5gIciM224PXbwLyECjpn51eaf8/2Ay+/H9BdTCBw==", - "requires": { - "@docusaurus/core": "2.0.0-beta.9", - "@docusaurus/mdx-loader": "2.0.0-beta.9", - "@docusaurus/types": "2.0.0-beta.9", - "@docusaurus/utils": "2.0.0-beta.9", - "@docusaurus/utils-validation": "2.0.0-beta.9", - "globby": "^11.0.2", - "lodash": "^4.17.20", - "remark-admonitions": "^1.2.1", - "tslib": "^2.3.1", - "webpack": "^5.61.0" - } - }, - "@docusaurus/plugin-sitemap": { - "version": "2.0.0-beta.9", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.0.0-beta.9.tgz", - "integrity": "sha512-p6Qc1vo/yb1v767/u0E72inkGKayx77HDKsDOGrNj2IH0db0cMsskBLeKYcDfVz5+dtmFrR+lubINp7TyofkvA==", - "requires": { - "@docusaurus/core": "2.0.0-beta.9", - "@docusaurus/types": "2.0.0-beta.9", - "@docusaurus/utils": "2.0.0-beta.9", - "@docusaurus/utils-common": "2.0.0-beta.9", - "@docusaurus/utils-validation": "2.0.0-beta.9", - "fs-extra": "^10.0.0", - "sitemap": "^7.0.0", - "tslib": "^2.3.1" - } - }, - "@docusaurus/react-loadable": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz", - "integrity": "sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==", - "requires": { - "@types/react": "*", - "prop-types": "^15.6.2" - } - }, - "@docusaurus/theme-classic": { - "version": "2.0.0-beta.9", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-2.0.0-beta.9.tgz", - "integrity": "sha512-vTijCGrkFkaqzpOu7w1AaXOBFOo6wirkNEN0+TMkx3oTu95Yj7h98rt/9Z60f6L9HVjOFQ18h3fU6cWloNG+Bg==", - "requires": { - "@docusaurus/core": "2.0.0-beta.9", - "@docusaurus/plugin-content-blog": "2.0.0-beta.9", - "@docusaurus/plugin-content-docs": "2.0.0-beta.9", - "@docusaurus/plugin-content-pages": "2.0.0-beta.9", - "@docusaurus/theme-common": "2.0.0-beta.9", - "@docusaurus/types": "2.0.0-beta.9", - "@docusaurus/utils": "2.0.0-beta.9", - "@docusaurus/utils-common": "2.0.0-beta.9", - "@docusaurus/utils-validation": "2.0.0-beta.9", - "@mdx-js/mdx": "^1.6.21", - "@mdx-js/react": "^1.6.21", - "chalk": "^4.1.2", - "clsx": "^1.1.1", - "copy-text-to-clipboard": "^3.0.1", - "fs-extra": "^10.0.0", - "globby": "^11.0.2", - "infima": "0.2.0-alpha.34", - "lodash": "^4.17.20", - "parse-numeric-range": "^1.3.0", - "postcss": "^8.3.7", - "prism-react-renderer": "^1.2.1", - "prismjs": "^1.23.0", - "prop-types": "^15.7.2", - "react-router-dom": "^5.2.0", - "rtlcss": "^3.3.0" - }, - "dependencies": { - "prismjs": { - "version": "1.25.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.25.0.tgz", - "integrity": "sha512-WCjJHl1KEWbnkQom1+SzftbtXMKQoezOCYs5rECqMN+jP+apI7ftoflyqigqzopSO3hMhTEb0mFClA8lkolgEg==" - } - } - }, - "@docusaurus/theme-common": { - "version": "2.0.0-beta.9", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-2.0.0-beta.9.tgz", - "integrity": "sha512-ZsFP+wH1CY6SBqkBGAdj9kHZHkV/7Y77Jw0rnEVbVU4zX2Jh6apWRCOJVaPrroDES8/9D6WWKQgQifeoJ2EeIA==", - "requires": { - "@docusaurus/core": "2.0.0-beta.9", - "@docusaurus/plugin-content-blog": "2.0.0-beta.9", - "@docusaurus/plugin-content-docs": "2.0.0-beta.9", - "@docusaurus/plugin-content-pages": "2.0.0-beta.9", - "@docusaurus/types": "2.0.0-beta.9", - "clsx": "^1.1.1", - "fs-extra": "^10.0.0", - "tslib": "^2.3.1", - "utility-types": "^3.10.0" - } - }, - "@docusaurus/theme-search-algolia": { - "version": "2.0.0-beta.9", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.0.0-beta.9.tgz", - "integrity": "sha512-pbpA18kqr5H7A7snmHf4dzMYV+3nsTDYMhV9f2Tms7yP9cxW7ZMHJwaEKXh1myE58Nbkv84AF734TR1UgYrziw==", - "requires": { - "@docsearch/react": "^3.0.0-alpha.39", - "@docusaurus/core": "2.0.0-beta.9", - "@docusaurus/theme-common": "2.0.0-beta.9", - "@docusaurus/utils": "2.0.0-beta.9", - "@docusaurus/utils-validation": "2.0.0-beta.9", - "algoliasearch": "^4.10.5", - "algoliasearch-helper": "^3.5.5", - "clsx": "^1.1.1", - "eta": "^1.12.3", - "lodash": "^4.17.20" - } - }, - "@docusaurus/types": { - "version": "2.0.0-beta.9", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-2.0.0-beta.9.tgz", - "integrity": "sha512-7qK7PCwRImHzv9RMi5HJ7RoHKQ8r7oqZK79UucmzBXl5nyfZridBC7JQ+LG7GBqYVaIjfOHUflOOLIVn+gK2/g==", - "requires": { - "commander": "^5.1.0", - "joi": "^17.4.2", - "querystring": "0.2.0", - "utility-types": "^3.10.0", - "webpack": "^5.61.0", - "webpack-merge": "^5.8.0" - } - }, - "@docusaurus/utils": { - "version": "2.0.0-beta.9", - "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-2.0.0-beta.9.tgz", - "integrity": "sha512-f5TUY72Qux0wv1tjxsvjFDjfRnsWtQjsjR5Q/gJ5V021H9lycC9YCk0cEReg3bI3+IVL2iGvQqNnH3R1G7NcRw==", - "requires": { - "@docusaurus/types": "2.0.0-beta.9", - "@mdx-js/runtime": "^1.6.22", - "@types/github-slugger": "^1.3.0", - "chalk": "^4.1.2", - "escape-string-regexp": "^4.0.0", - "fs-extra": "^10.0.0", - "globby": "^11.0.4", - "gray-matter": "^4.0.3", - "lodash": "^4.17.20", - "micromatch": "^4.0.4", - "remark-mdx-remove-exports": "^1.6.22", - "remark-mdx-remove-imports": "^1.6.22", - "resolve-pathname": "^3.0.0", - "tslib": "^2.3.1" - }, - "dependencies": { - "@mdx-js/runtime": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/@mdx-js/runtime/-/runtime-1.6.22.tgz", - "integrity": "sha512-p17spaO2+55VLCuxXA3LVHC4phRx60NR2XMdZ+qgVU1lKvEX4y88dmFNOzGDCPLJ03IZyKrJ/rPWWRiBrd9JrQ==", - "requires": { - "@mdx-js/mdx": "1.6.22", - "@mdx-js/react": "1.6.22", - "buble-jsx-only": "^0.19.8" - } - } - } - }, - "@docusaurus/utils-common": { - "version": "2.0.0-beta.9", - "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-2.0.0-beta.9.tgz", - "integrity": "sha512-ftVRifnVXW9eQjwOSuTzhEb9P55KSVfqEbQHgUlMm8KYXHC4NNdn4V+9sHmdJ8rDWNU+PA/+FMjGxWLVejMkxg==", - "requires": { - "@docusaurus/types": "2.0.0-beta.9", - "tslib": "^2.3.1" - } - }, - "@docusaurus/utils-validation": { - "version": "2.0.0-beta.9", - "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-2.0.0-beta.9.tgz", - "integrity": "sha512-8XZ2wdg+HPSVqgFzhfvntPLwX0+sCypvODatXR8A3YUraZYqQU0NK7SLqD1epLpmHjT/bztSq5DydoGoFRJdIA==", - "requires": { - "@docusaurus/utils": "2.0.0-beta.9", - "chalk": "^4.1.2", - "joi": "^17.4.2", - "tslib": "^2.3.1" - } - }, - "@emotion/is-prop-valid": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", - "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", - "requires": { - "@emotion/memoize": "0.7.4" - } - }, - "@emotion/memoize": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", - "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==" - }, - "@emotion/stylis": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", - "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==" - }, - "@emotion/unitless": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", - "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" - }, - "@exodus/schemasafe": { - "version": "1.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@exodus/schemasafe/-/schemasafe-1.0.0-rc.3.tgz", - "integrity": "sha512-GoXw0U2Qaa33m3eUcxuHnHpNvHjNlLo0gtV091XBpaRINaB4X6FGCG5XKxSFNFiPpugUDqNruHzaqpTdDm4AOg==" - }, - "@hapi/hoek": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.0.tgz", - "integrity": "sha512-sqKVVVOe5ivCaXDWivIJYVSaEgdQK9ul7a4Kity5Iw7u9+wBAPbX1RMSnLLmp7O4Vzj0WOWwMAJsTL00xwaNug==" - }, - "@hapi/topo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", - "requires": { - "@hapi/hoek": "^9.0.0" - } - }, - "@jsdevtools/ono": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz", - "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==", - "dev": true - }, - "@mdx-js/mdx": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.6.22.tgz", - "integrity": "sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA==", - "requires": { - "@babel/core": "7.12.9", - "@babel/plugin-syntax-jsx": "7.12.1", - "@babel/plugin-syntax-object-rest-spread": "7.8.3", - "@mdx-js/util": "1.6.22", - "babel-plugin-apply-mdx-type-prop": "1.6.22", - "babel-plugin-extract-import-names": "1.6.22", - "camelcase-css": "2.0.1", - "detab": "2.0.4", - "hast-util-raw": "6.0.1", - "lodash.uniq": "4.5.0", - "mdast-util-to-hast": "10.0.1", - "remark-footnotes": "2.0.0", - "remark-mdx": "1.6.22", - "remark-parse": "8.0.3", - "remark-squeeze-paragraphs": "4.0.0", - "style-to-object": "0.3.0", - "unified": "9.2.0", - "unist-builder": "2.0.3", - "unist-util-visit": "2.0.3" - }, - "dependencies": { - "@babel/core": { - "version": "7.12.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz", - "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==", - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.12.5", - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helpers": "^7.12.5", - "@babel/parser": "^7.12.7", - "@babel/template": "^7.12.7", - "@babel/traverse": "^7.12.9", - "@babel/types": "^7.12.7", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.2", - "lodash": "^4.17.19", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" - } - }, - "@babel/plugin-syntax-jsx": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", - "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "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.6.22", - "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-1.6.22.tgz", - "integrity": "sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==", - "requires": {} - }, - "@mdx-js/util": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/@mdx-js/util/-/util-1.6.22.tgz", - "integrity": "sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==" - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" - }, - "@nodelib/fs.walk": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.7.tgz", - "integrity": "sha512-BTIhocbPBSrRmHxOAJFtR18oLhxTtAFDAvL8hY1S3iU8k+E60W/YFs4jrixGzQjMpF4qPXxIQHcjVD9dz1C2QA==", - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@polka/url": { - "version": "1.0.0-next.15", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.15.tgz", - "integrity": "sha512-15spi3V28QdevleWBNXE4pIls3nFZmBbUGrW9IVPwiQczuSb9n76TCB4bsk8TSel+I1OkHEdPhu5QKMfY6rQHA==" - }, - "@redocly/ajv": { - "version": "8.6.2", - "resolved": "https://registry.npmjs.org/@redocly/ajv/-/ajv-8.6.2.tgz", - "integrity": "sha512-tU8fQs0D76ZKhJ2cWtnfQthWqiZgGBx0gH0+5D8JvaBEBaqA8foPPBt3Nonwr3ygyv5xrw2IzKWgIY86BlGs+w==", - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "@redocly/openapi-core": { - "version": "1.0.0-beta.53", - "resolved": "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-1.0.0-beta.53.tgz", - "integrity": "sha512-n5WixBRb7oWS31v3/cdOW/eNXbr2M4N8+HjHfCA/oQX6Z4ZYqPOJCekw64sQ/fnUQMIQyT6fKqyaf+iO4tG7YA==", - "requires": { - "@redocly/ajv": "^8.6.2", - "@types/node": "^14.11.8", - "colorette": "^1.2.0", - "js-levenshtein": "^1.1.6", - "js-yaml": "^3.14.1", - "lodash.isequal": "^4.5.0", - "minimatch": "^3.0.4", - "node-fetch": "^2.6.1", - "yaml-ast-parser": "0.0.43" - }, - "dependencies": { - "@types/node": { - "version": "14.17.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.4.tgz", - "integrity": "sha512-8kQ3+wKGRNN0ghtEn7EGps/B8CzuBz1nXZEIGGLP2GnwbqYn4dbTs7k+VKLTq1HvZLRCIDtN3Snx1Ege8B7L5A==" - }, - "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" - } - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - } - } - }, - "@redocly/react-dropdown-aria": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@redocly/react-dropdown-aria/-/react-dropdown-aria-2.0.12.tgz", - "integrity": "sha512-feQEZlyBvQsbT/fvpJ4jJ5OLGaUPpnskHYDsY8DGpPymN+HUeDQrqkBEbbKRwMKidFTI2cxk2kJNNTnvdS9jyw==", - "requires": {} - }, - "@sideway/address": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.2.tgz", - "integrity": "sha512-idTz8ibqWFrPU8kMirL0CoPH/A29XOzzAzpyN3zQ4kAWnzmNfFmRaoMNN6VI8ske5M73HZyhIaW4OuSFIdM4oA==", - "requires": { - "@hapi/hoek": "^9.0.0" - } - }, - "@sideway/formula": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", - "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==" - }, - "@sideway/pinpoint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" - }, - "@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" - }, - "@slorber/static-site-generator-webpack-plugin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@slorber/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-4.0.1.tgz", - "integrity": "sha512-PSv4RIVO1Y3kvHxjvqeVisk3E9XFoO04uwYBDWe217MFqKspplYswTuKLiJu0aLORQWzuQjfVsSlLPojwfYsLw==", - "requires": { - "bluebird": "^3.7.1", - "cheerio": "^0.22.0", - "eval": "^0.1.4", - "url": "^0.11.0", - "webpack-sources": "^1.4.3" - } - }, - "@svgr/babel-plugin-add-jsx-attribute": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz", - "integrity": "sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==" - }, - "@svgr/babel-plugin-remove-jsx-attribute": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz", - "integrity": "sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==" - }, - "@svgr/babel-plugin-remove-jsx-empty-expression": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz", - "integrity": "sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==" - }, - "@svgr/babel-plugin-replace-jsx-attribute-value": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz", - "integrity": "sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==" - }, - "@svgr/babel-plugin-svg-dynamic-title": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz", - "integrity": "sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==" - }, - "@svgr/babel-plugin-svg-em-dimensions": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz", - "integrity": "sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==" - }, - "@svgr/babel-plugin-transform-react-native-svg": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz", - "integrity": "sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==" - }, - "@svgr/babel-plugin-transform-svg-component": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz", - "integrity": "sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==" - }, - "@svgr/babel-preset": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz", - "integrity": "sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==", - "requires": { - "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0", - "@svgr/babel-plugin-remove-jsx-attribute": "^5.4.0", - "@svgr/babel-plugin-remove-jsx-empty-expression": "^5.0.1", - "@svgr/babel-plugin-replace-jsx-attribute-value": "^5.0.1", - "@svgr/babel-plugin-svg-dynamic-title": "^5.4.0", - "@svgr/babel-plugin-svg-em-dimensions": "^5.4.0", - "@svgr/babel-plugin-transform-react-native-svg": "^5.4.0", - "@svgr/babel-plugin-transform-svg-component": "^5.5.0" - } - }, - "@svgr/core": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz", - "integrity": "sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==", - "requires": { - "@svgr/plugin-jsx": "^5.5.0", - "camelcase": "^6.2.0", - "cosmiconfig": "^7.0.0" - } - }, - "@svgr/hast-util-to-babel-ast": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz", - "integrity": "sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==", - "requires": { - "@babel/types": "^7.12.6" - } - }, - "@svgr/plugin-jsx": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz", - "integrity": "sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==", - "requires": { - "@babel/core": "^7.12.3", - "@svgr/babel-preset": "^5.5.0", - "@svgr/hast-util-to-babel-ast": "^5.5.0", - "svg-parser": "^2.0.2" - } - }, - "@svgr/plugin-svgo": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz", - "integrity": "sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==", - "requires": { - "cosmiconfig": "^7.0.0", - "deepmerge": "^4.2.2", - "svgo": "^1.2.2" - } - }, - "@svgr/webpack": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz", - "integrity": "sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==", - "requires": { - "@babel/core": "^7.12.3", - "@babel/plugin-transform-react-constant-elements": "^7.12.1", - "@babel/preset-env": "^7.12.1", - "@babel/preset-react": "^7.12.5", - "@svgr/core": "^5.5.0", - "@svgr/plugin-jsx": "^5.5.0", - "@svgr/plugin-svgo": "^5.5.0", - "loader-utils": "^2.0.0" - }, - "dependencies": { - "loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - } - } - }, - "@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "requires": { - "defer-to-connect": "^1.0.1" - } - }, - "@trysound/sax": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==" - }, - "@types/concat-stream": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-1.6.0.tgz", - "integrity": "sha1-OU2+C7X+5Gs42JZzXoto7yOQ0A0=", - "requires": { - "@types/node": "*" - } - }, - "@types/eslint": { - "version": "7.2.13", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.13.tgz", - "integrity": "sha512-LKmQCWAlnVHvvXq4oasNUMTJJb2GwSyTY8+1C7OH5ILR8mPLaljv1jxL1bXW3xB3jFbQxTKxJAvI8PyjB09aBg==", - "requires": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "@types/eslint-scope": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.0.tgz", - "integrity": "sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw==", - "requires": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "@types/estree": { - "version": "0.0.50", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" - }, - "@types/form-data": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz", - "integrity": "sha1-yayFsqX9GENbjIXZ7LUObWyJP/g=", - "requires": { - "@types/node": "*" - } - }, - "@types/github-slugger": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@types/github-slugger/-/github-slugger-1.3.0.tgz", - "integrity": "sha512-J/rMZa7RqiH/rT29TEVZO4nBoDP9XJOjnbbIofg7GQKs4JIduEO3WLpte+6WeUz/TcrXKlY+bM7FYrp8yFB+3g==" - }, - "@types/hast": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.1.tgz", - "integrity": "sha512-viwwrB+6xGzw+G1eWpF9geV3fnsDgXqHG+cqgiHrvQfDUW5hzhCyV7Sy3UJxhfRFBsgky2SSW33qi/YrIkjX5Q==", - "requires": { - "@types/unist": "*" - } - }, - "@types/html-minifier-terser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.0.0.tgz", - "integrity": "sha512-NZwaaynfs1oIoLAV1vg18e7QMVDvw+6SQrdJc8w3BwUaoroVSf6EBj/Sk4PBWGxsq0dzhA2drbsuMC1/6C6KgQ==" - }, - "@types/http-proxy": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.7.tgz", - "integrity": "sha512-9hdj6iXH64tHSLTY+Vt2eYOGzSogC+JQ2H7bdPWkuh7KXP5qLllWx++t+K9Wk556c3dkDdPws/SpMRi0sdCT1w==", - "requires": { - "@types/node": "*" - } - }, - "@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==" - }, - "@types/mdast": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.3.tgz", - "integrity": "sha512-SXPBMnFVQg1s00dlMCc/jCdvPqdE4mXaMMCeRlxLDmTAEoegHT53xKtkDnzDTOcmMHUfcjyf36/YYZ6SxRdnsw==", - "requires": { - "@types/unist": "*" - } - }, - "@types/node": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.0.0.tgz", - "integrity": "sha512-TmCW5HoZ2o2/z2EYi109jLqIaPIi9y/lc2LmDCWzuCi35bcaQ+OtUh6nwBiFK7SOu25FAU5+YKdqFZUwtqGSdg==" - }, - "@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" - }, - "@types/parse5": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-5.0.3.tgz", - "integrity": "sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==" - }, - "@types/prop-types": { - "version": "15.7.4", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", - "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==" - }, - "@types/q": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", - "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==" - }, - "@types/qs": { - "version": "6.9.6", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.6.tgz", - "integrity": "sha512-0/HnwIfW4ki2D8L8c9GVcG5I72s9jP5GSLVF0VIXDW00kmIpA6O33G7a8n59Tmh7Nz0WUC3rSb7PTY/sdW2JzA==" - }, - "@types/react": { - "version": "17.0.15", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.15.tgz", - "integrity": "sha512-uTKHDK9STXFHLaKv6IMnwp52fm0hwU+N89w/p9grdUqcFA6WuqDyPhaWopbNyE1k/VhgzmHl8pu1L4wITtmlLw==", - "requires": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "@types/retry": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", - "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==" - }, - "@types/sax": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.1.tgz", - "integrity": "sha512-dqYdvN7Sbw8QT/0Ci5rhjE4/iCMJEM0Y9rHpCu+gGXD9Lwbz28t6HI2yegsB6BoV1sShRMU6lAmAcgRjmFy7LA==", - "requires": { - "@types/node": "*" - } - }, - "@types/scheduler": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" - }, - "@types/unist": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.4.tgz", - "integrity": "sha512-zfyYsDTK1HTGYXU3fTiM76+om93HcFtsZd2M0bO/CL4DiETV7mSa/pIVN/6+G3esOqEMdg2An5cHHbK5t+9w+A==" - }, - "@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" - }, - "@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" - }, - "@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" - }, - "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" - }, - "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@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==" - }, - "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": "8.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.4.1.tgz", - "integrity": "sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA==" - }, - "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "requires": {} - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "requires": {} - }, - "acorn-walk": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.1.1.tgz", - "integrity": "sha512-FbJdceMlPHEAWJOILDk1fXD8lnTlEIWFkqtfk+MvmL5q/qlHfN7GEHcsFZWt/Tea9jRNPWUZG4G976nqAAmU9w==" - }, - "address": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", - "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==" - }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "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" - }, - "dependencies": { - "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==" - } - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "requires": {} - }, - "algoliasearch": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.11.0.tgz", - "integrity": "sha512-IXRj8kAP2WrMmj+eoPqPc6P7Ncq1yZkFiyDrjTBObV1ADNL8Z/KdZ+dWC5MmYcBLAbcB/mMCpak5N/D1UIZvsA==", - "requires": { - "@algolia/cache-browser-local-storage": "4.11.0", - "@algolia/cache-common": "4.11.0", - "@algolia/cache-in-memory": "4.11.0", - "@algolia/client-account": "4.11.0", - "@algolia/client-analytics": "4.11.0", - "@algolia/client-common": "4.11.0", - "@algolia/client-personalization": "4.11.0", - "@algolia/client-search": "4.11.0", - "@algolia/logger-common": "4.11.0", - "@algolia/logger-console": "4.11.0", - "@algolia/requester-browser-xhr": "4.11.0", - "@algolia/requester-common": "4.11.0", - "@algolia/requester-node-http": "4.11.0", - "@algolia/transporter": "4.11.0" - } - }, - "algoliasearch-helper": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.6.2.tgz", - "integrity": "sha512-Xx0NOA6k4ySn+R2l3UMSONAaMkyfmrZ3AP1geEMo32MxDJQJesZABZYsldO9fa6FKQxH91afhi4hO1G0Zc2opg==", - "requires": { - "events": "^1.1.1" - } - }, - "alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=" - }, - "ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", - "requires": { - "string-width": "^4.1.0" - } - }, - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "requires": { - "type-fest": "^0.21.3" - }, - "dependencies": { - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" - } - } - }, - "ansi-html-community": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==" - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "arg": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.0.tgz", - "integrity": "sha512-4P8Zm2H+BRS+c/xX1LrHw0qKpEhdlZjLCgWy+d78T9vqa2Z2SiD2wMrYuWIAFy5IZUD7nnNXroRttz+0RzlrzQ==" - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" - }, - "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==" - }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" - }, - "asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } - } - }, - "assert": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz", - "integrity": "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==", - "requires": { - "es6-object-assign": "^1.1.0", - "is-nan": "^1.2.1", - "object-is": "^1.0.1", - "util": "^0.12.0" - } - }, - "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" - } - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" - }, - "autolinker": { - "version": "3.14.3", - "resolved": "https://registry.npmjs.org/autolinker/-/autolinker-3.14.3.tgz", - "integrity": "sha512-t81i2bCpS+s+5FIhatoww9DmpjhbdiimuU9ATEuLxtZMQ7jLv9fyFn7SWNG8IkEfD4AmYyirL1ss9k1aqVWRvg==", - "dev": true, - "requires": { - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "autoprefixer": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.0.tgz", - "integrity": "sha512-7FdJ1ONtwzV1G43GDD0kpVMn/qbiNqyOPMFTX5nRffI+7vgWoFEc6DcXOxHJxrWNDXrZh18eDsZjvZGUljSRGA==", - "requires": { - "browserslist": "^4.17.5", - "caniuse-lite": "^1.0.30001272", - "fraction.js": "^4.1.1", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.1.0" - } - }, - "available-typed-arrays": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.4.tgz", - "integrity": "sha512-SA5mXJWrId1TaQjfxUYghbqQ/hYioKmLJvPJyDuYRtXXenFNMjj4hSSt1Cf1xsuXSXrtxrVC5Ot4eU6cOtBDdA==" - }, - "axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "requires": { - "follow-redirects": "^1.14.0" - } - }, - "babel-loader": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz", - "integrity": "sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==", - "requires": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^1.4.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - } - }, - "babel-plugin-apply-mdx-type-prop": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.22.tgz", - "integrity": "sha512-VefL+8o+F/DfK24lPZMtJctrCVOfgbqLAGZSkxwhazQv4VxPg3Za/i40fu22KR2m8eEda+IfSOlPLUSIiLcnCQ==", - "requires": { - "@babel/helper-plugin-utils": "7.10.4", - "@mdx-js/util": "1.6.22" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", - "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" - } - } - }, - "babel-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.6.22", - "resolved": "https://registry.npmjs.org/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.22.tgz", - "integrity": "sha512-yJ9BsJaISua7d8zNT7oRG1ZLBJCIdZ4PZqmH8qa9N5AK01ifk3fnkc98AXhtzE7UkfCsEumvoQWgoYLhOnJ7jQ==", - "requires": { - "@babel/helper-plugin-utils": "7.10.4" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", - "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" - } - } - }, - "babel-plugin-polyfill-corejs2": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz", - "integrity": "sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ==", - "requires": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.2.2", - "semver": "^6.1.1" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - }, - "babel-plugin-polyfill-corejs3": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.5.tgz", - "integrity": "sha512-ninF5MQNwAX9Z7c9ED+H2pGt1mXdP4TqzlHKyPIYmJIYz0N+++uwdM7RnJukklhzJ54Q84vA4ZJkgs7lu5vqcw==", - "requires": { - "@babel/helper-define-polyfill-provider": "^0.2.2", - "core-js-compat": "^3.16.2" - } - }, - "babel-plugin-polyfill-regenerator": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz", - "integrity": "sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg==", - "requires": { - "@babel/helper-define-polyfill-provider": "^0.2.2" - } - }, - "babel-plugin-styled-components": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-1.13.1.tgz", - "integrity": "sha512-iY11g5orsdBnvWtXKCFBzDyTxZ9jvmkcYCCs5ONlvASYltDRhieCVzeDC7Do0fSW7psAL0zfVoXB3FHz2CkUSg==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-module-imports": "^7.0.0", - "babel-plugin-syntax-jsx": "^6.18.0", - "lodash": "^4.17.11" - } - }, - "babel-plugin-syntax-jsx": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", - "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=" - }, - "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.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=" - }, - "better-ajv-errors": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/better-ajv-errors/-/better-ajv-errors-0.6.7.tgz", - "integrity": "sha512-PYgt/sCzR4aGpyNy5+ViSQ77ognMnWq7745zM+/flYO4/Yisdtp9wDQW2IKCyVYPUxQt3E/b5GBSwfhd1LPdlg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/runtime": "^7.0.0", - "chalk": "^2.4.1", - "core-js": "^3.2.1", - "json-to-ast": "^2.0.3", - "jsonpointer": "^4.0.1", - "leven": "^3.1.0" - }, - "dependencies": { - "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==", - "dev": true, - "requires": { - "color-convert": "^1.9.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==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "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==", - "dev": true, - "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=", - "dev": true - }, - "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=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "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.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" - }, - "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": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" - }, - "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": { - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" - }, - "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" - } - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" - }, - "boxen": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.0.1.tgz", - "integrity": "sha512-49VBlw+PrWEF51aCmy7QIteYPIFZxSpvqBdP/2itCPPlJ49kj9zg/XPRFrdkne2W+CfwXUls8exMvu1RysZpKA==", - "requires": { - "ansi-align": "^3.0.0", - "camelcase": "^6.2.0", - "chalk": "^4.1.0", - "cli-boxes": "^2.2.1", - "string-width": "^4.2.0", - "type-fest": "^0.20.2", - "widest-line": "^3.1.0", - "wrap-ansi": "^7.0.0" - } - }, - "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.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "requires": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "requires": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - } - } - }, - "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.17.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.5.tgz", - "integrity": "sha512-I3ekeB92mmpctWBoLXe0d5wPS2cBuRvvW0JyyJHMrk9/HmP2ZjrTboNAZ8iuGqaEIlKguljbQY32OkOJIRrgoA==", - "requires": { - "caniuse-lite": "^1.0.30001271", - "electron-to-chromium": "^1.3.878", - "escalade": "^3.1.1", - "node-releases": "^2.0.1", - "picocolors": "^1.0.0" - }, - "dependencies": { - "node-releases": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", - "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==" - } - } - }, - "buble-jsx-only": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/buble-jsx-only/-/buble-jsx-only-0.19.8.tgz", - "integrity": "sha512-7AW19pf7PrKFnGTEDzs6u9+JZqQwM1VnLS19OlqYDhXomtFFknnoQJAPHeg84RMFWAvOhYrG7harizJNwUKJsA==", - "requires": { - "acorn": "^6.1.1", - "acorn-dynamic-import": "^4.0.0", - "acorn-jsx": "^5.0.1", - "chalk": "^2.4.2", - "magic-string": "^0.25.3", - "minimist": "^1.2.0", - "regexpu-core": "^4.5.4" - }, - "dependencies": { - "acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" - }, - "acorn-dynamic-import": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", - "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", - "requires": {} - }, - "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" - } - }, - "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": "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=" - }, - "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=" - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "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" - } - } - } - }, - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "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-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.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" - }, - "cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "dependencies": { - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "requires": { - "pump": "^3.0.0" - } - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" - }, - "normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==" - } - } - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "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=" - }, - "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.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "requires": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==" - }, - "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==" - }, - "camelize": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz", - "integrity": "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs=" - }, - "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.30001272", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001272.tgz", - "integrity": "sha512-DV1j9Oot5dydyH1v28g25KoVm7l8MTxazwuiH3utWiAS6iL/9Nh//TGwqFEeqqN8nnWYQ8HHhUq+o4QPt9kvYw==" - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "ccount": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", - "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==" - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.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==" - }, - "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.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" - }, - "ci-info": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", - "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==" - }, - "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" - } - }, - "classnames": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz", - "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" - }, - "clean-css": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.1.5.tgz", - "integrity": "sha512-9dr/cU/LjMpU57PXlSvDkVRh0rPxJBXiBtD0+SgYt8ahTCsXtfKjCkNYgIoTC6mBg8CFr5EKhW3DKCaGMUbUfQ==", - "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-boxes": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==" - }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - } - }, - "clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "requires": { - "mimic-response": "^1.0.0" - } - }, - "clsx": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", - "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==" - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, - "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": { - "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" - } - }, - "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": "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=" - }, - "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=" - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "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" - } - } - } - }, - "code-error-fragment": { - "version": "0.0.230", - "resolved": "https://registry.npmjs.org/code-error-fragment/-/code-error-fragment-0.0.230.tgz", - "integrity": "sha512-cadkfKp6932H8UkhzE/gcUqhRMNf8jHzkAN7+5Myabswaghu4xABTgPHDCjW+dBAJxj/SpkTYokpzDqY4pCzQw==", - "dev": true - }, - "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=", - "dev": true - }, - "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==" - }, - "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==" - }, - "colord": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.1.tgz", - "integrity": "sha512-4LBMSt09vR0uLnPVkOUBnmxgoaeN4ewRbx801wY/bXcltXfpR/G46OdWn96XpYmCWuYvO46aBZP4NgX8HpNAcw==" - }, - "colorette": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", - "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==" - }, - "combine-promises": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/combine-promises/-/combine-promises-1.1.0.tgz", - "integrity": "sha512-ZI9jvcLDxqwaXEixOhArm3r7ReIivsXkpbyEWyeOhzz1QS0iSgBPnWvEqvIQtYyamGCYA88gFhmUrs9hrrQ0pg==" - }, - "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": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==" - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" - }, - "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": { - "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" - } - } - } - }, - "configstore": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", - "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", - "requires": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.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.15.3", - "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", - "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==" - }, - "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.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "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-text-to-clipboard": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/copy-text-to-clipboard/-/copy-text-to-clipboard-3.0.1.tgz", - "integrity": "sha512-rvVsHrpFcL4F2P8ihsoLdFHmd404+CMg71S756oRSeQgqk51U3kicGdnvfkrxva0xXH92SjGS62B0XIJsbh+9Q==" - }, - "copy-webpack-plugin": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-9.0.1.tgz", - "integrity": "sha512-14gHKKdYIxF84jCEgPgYXCPpldbwpxxLbCmA7LReY7gvbaT555DgeBWBgBZM116tv/fO6RRJrsivBqRyRlukhw==", - "requires": { - "fast-glob": "^3.2.5", - "glob-parent": "^6.0.0", - "globby": "^11.0.3", - "normalize-path": "^3.0.0", - "p-limit": "^3.1.0", - "schema-utils": "^3.0.0", - "serialize-javascript": "^6.0.0" - }, - "dependencies": { - "glob-parent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.0.tgz", - "integrity": "sha512-Hdd4287VEJcZXUwv1l8a+vXC1GjOQqXe+VS30w/ypihpcnu9M1n3xeYeJu5CBpeEQj2nAab2xxz28GuA3vp4Ww==", - "requires": { - "is-glob": "^4.0.1" - } - }, - "schema-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", - "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", - "requires": { - "@types/json-schema": "^7.0.7", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "copyfiles": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/copyfiles/-/copyfiles-2.4.1.tgz", - "integrity": "sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==", - "requires": { - "glob": "^7.0.5", - "minimatch": "^3.0.3", - "mkdirp": "^1.0.4", - "noms": "0.0.0", - "through2": "^2.0.1", - "untildify": "^4.0.0", - "yargs": "^16.1.0" - } - }, - "core-js": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.19.0.tgz", - "integrity": "sha512-L1TpFRWXZ76vH1yLM+z6KssLZrP8Z6GxxW4auoCj+XiViOzNPJCAuTIkn03BGdFe6Z5clX5t64wRIRypsZQrUg==" - }, - "core-js-compat": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.0.tgz", - "integrity": "sha512-R09rKZ56ccGBebjTLZHvzDxhz93YPT37gBm6qUhnwj3Kt7aCjjZWD1injyNbyeFHxNKfeZBSyds6O9n3MKq1sw==", - "requires": { - "browserslist": "^4.17.5", - "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-js-pure": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.19.0.tgz", - "integrity": "sha512-UEQk8AxyCYvNAs6baNoPqDADv7BX0AmBLGxVsrAifPPx/C8EAzV4Q+2ZUJqVzfI2TQQEZITnwUkWcHpgc/IubQ==" - }, - "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": "7.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", - "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } - }, - "create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } - } - }, - "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.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "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" - } - }, - "crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" - }, - "css-color-keywords": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", - "integrity": "sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU=" - }, - "css-color-names": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-1.0.1.tgz", - "integrity": "sha512-/loXYOch1qU1biStIFsHH8SxTmOseh1IJqFvy8IujXOm1h+QjUdDhkzOrR5HG8K8mlxREj0yfi8ewCHx0eMxzA==" - }, - "css-declaration-sorter": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.0.3.tgz", - "integrity": "sha512-52P95mvW1SMzuRZegvpluT6yEv0FqQusydKQPZsNN5Q7hh8EwQvN8E2nwuJ16BBvNN6LcoIZXu/Bk58DAhrrxw==", - "requires": { - "timsort": "^0.3.0" - } - }, - "css-loader": { - "version": "5.2.6", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.2.6.tgz", - "integrity": "sha512-0wyN5vXMQZu6BvjbrPdUJvkCzGEO24HC7IS7nW4llc6BBFC+zwR9CKtYGv63Puzsg10L/o12inMY5/2ByzfD6w==", - "requires": { - "icss-utils": "^5.1.0", - "loader-utils": "^2.0.0", - "postcss": "^8.2.15", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.1.0", - "schema-utils": "^3.0.0", - "semver": "^7.3.5" - }, - "dependencies": { - "loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "schema-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", - "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", - "requires": { - "@types/json-schema": "^7.0.7", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "css-minimizer-webpack-plugin": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.0.2.tgz", - "integrity": "sha512-B3I5e17RwvKPJwsxjjWcdgpU/zqylzK1bPVghcmpFHRL48DXiBgrtqz1BJsn68+t/zzaLp9kYAaEDvQ7GyanFQ==", - "requires": { - "cssnano": "^5.0.6", - "jest-worker": "^27.0.2", - "p-limit": "^3.0.2", - "postcss": "^8.3.5", - "schema-utils": "^3.0.0", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1" - }, - "dependencies": { - "schema-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", - "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", - "requires": { - "@types/json-schema": "^7.0.7", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "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-to-react-native": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.0.0.tgz", - "integrity": "sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ==", - "requires": { - "camelize": "^1.0.0", - "css-color-keywords": "^1.0.0", - "postcss-value-parser": "^4.0.2" - } - }, - "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==" - }, - "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": "5.0.8", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.0.8.tgz", - "integrity": "sha512-Lda7geZU0Yu+RZi2SGpjYuQz4HI4/1Y+BhdD0jL7NXAQ5larCzVn+PUGuZbDMYz904AXXCOgO5L1teSvgu7aFg==", - "requires": { - "cssnano-preset-default": "^5.1.4", - "is-resolvable": "^1.1.0", - "lilconfig": "^2.0.3", - "yaml": "^1.10.2" - } - }, - "cssnano-preset-advanced": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-5.1.5.tgz", - "integrity": "sha512-1u66ijw1aYyxxr9F2nFlBGS3UlzsRHUrGxVYf1CLiYZhvkcuX/+NHkgyO4P9da/j2C2Y2EvMsqk9Nd4VZkZ9jA==", - "requires": { - "autoprefixer": "^10.3.7", - "cssnano-preset-default": "^5.1.5", - "postcss-discard-unused": "^5.0.1", - "postcss-merge-idents": "^5.0.1", - "postcss-reduce-idents": "^5.0.1", - "postcss-zindex": "^5.0.1" - } - }, - "cssnano-preset-default": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.5.tgz", - "integrity": "sha512-fF00UI+d3PWkGfMd62geqmoUe5h+LOhGE2GH4Fqq3beNKdCU1LWwLUyIcu4/A72lWv0737cHey5zhhWw3rW0sA==", - "requires": { - "css-declaration-sorter": "^6.0.3", - "cssnano-utils": "^2.0.1", - "postcss-calc": "^8.0.0", - "postcss-colormin": "^5.2.1", - "postcss-convert-values": "^5.0.2", - "postcss-discard-comments": "^5.0.1", - "postcss-discard-duplicates": "^5.0.1", - "postcss-discard-empty": "^5.0.1", - "postcss-discard-overridden": "^5.0.1", - "postcss-merge-longhand": "^5.0.2", - "postcss-merge-rules": "^5.0.2", - "postcss-minify-font-values": "^5.0.1", - "postcss-minify-gradients": "^5.0.3", - "postcss-minify-params": "^5.0.1", - "postcss-minify-selectors": "^5.1.0", - "postcss-normalize-charset": "^5.0.1", - "postcss-normalize-display-values": "^5.0.1", - "postcss-normalize-positions": "^5.0.1", - "postcss-normalize-repeat-style": "^5.0.1", - "postcss-normalize-string": "^5.0.1", - "postcss-normalize-timing-functions": "^5.0.1", - "postcss-normalize-unicode": "^5.0.1", - "postcss-normalize-url": "^5.0.2", - "postcss-normalize-whitespace": "^5.0.1", - "postcss-ordered-values": "^5.0.2", - "postcss-reduce-initial": "^5.0.1", - "postcss-reduce-transforms": "^5.0.1", - "postcss-svgo": "^5.0.3", - "postcss-unique-selectors": "^5.0.1" - } - }, - "cssnano-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-2.0.1.tgz", - "integrity": "sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ==", - "requires": {} - }, - "csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "requires": { - "css-tree": "^1.1.2" - }, - "dependencies": { - "css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "requires": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - } - }, - "mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "csstype": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.8.tgz", - "integrity": "sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw==" - }, - "d3": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/d3/-/d3-5.16.0.tgz", - "integrity": "sha512-4PL5hHaHwX4m7Zr1UapXW23apo6pexCgdetdJ5kTmADpG/7T9Gkxw0M0tf/pjoB63ezCCm0u5UaFYy2aMt0Mcw==", - "requires": { - "d3-array": "1", - "d3-axis": "1", - "d3-brush": "1", - "d3-chord": "1", - "d3-collection": "1", - "d3-color": "1", - "d3-contour": "1", - "d3-dispatch": "1", - "d3-drag": "1", - "d3-dsv": "1", - "d3-ease": "1", - "d3-fetch": "1", - "d3-force": "1", - "d3-format": "1", - "d3-geo": "1", - "d3-hierarchy": "1", - "d3-interpolate": "1", - "d3-path": "1", - "d3-polygon": "1", - "d3-quadtree": "1", - "d3-random": "1", - "d3-scale": "2", - "d3-scale-chromatic": "1", - "d3-selection": "1", - "d3-shape": "1", - "d3-time": "1", - "d3-time-format": "2", - "d3-timer": "1", - "d3-transition": "1", - "d3-voronoi": "1", - "d3-zoom": "1" - } - }, - "d3-array": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz", - "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==" - }, - "d3-axis": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-1.0.12.tgz", - "integrity": "sha512-ejINPfPSNdGFKEOAtnBtdkpr24c4d4jsei6Lg98mxf424ivoDP2956/5HDpIAtmHo85lqT4pruy+zEgvRUBqaQ==" - }, - "d3-brush": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-1.1.6.tgz", - "integrity": "sha512-7RW+w7HfMCPyZLifTz/UnJmI5kdkXtpCbombUSs8xniAyo0vIbrDzDwUJB6eJOgl9u5DQOt2TQlYumxzD1SvYA==", - "requires": { - "d3-dispatch": "1", - "d3-drag": "1", - "d3-interpolate": "1", - "d3-selection": "1", - "d3-transition": "1" - } - }, - "d3-chord": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-1.0.6.tgz", - "integrity": "sha512-JXA2Dro1Fxw9rJe33Uv+Ckr5IrAa74TlfDEhE/jfLOaXegMQFQTAgAw9WnZL8+HxVBRXaRGCkrNU7pJeylRIuA==", - "requires": { - "d3-array": "1", - "d3-path": "1" - } - }, - "d3-collection": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.7.tgz", - "integrity": "sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==" - }, - "d3-color": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.1.tgz", - "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==" - }, - "d3-contour": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-1.3.2.tgz", - "integrity": "sha512-hoPp4K/rJCu0ladiH6zmJUEz6+u3lgR+GSm/QdM2BBvDraU39Vr7YdDCicJcxP1z8i9B/2dJLgDC1NcvlF8WCg==", - "requires": { - "d3-array": "^1.1.1" - } - }, - "d3-delaunay": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", - "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", - "requires": { - "delaunator": "5" - } - }, - "d3-dispatch": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.6.tgz", - "integrity": "sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA==" - }, - "d3-drag": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-1.2.5.tgz", - "integrity": "sha512-rD1ohlkKQwMZYkQlYVCrSFxsWPzI97+W+PaEIBNTMxRuxz9RF0Hi5nJWHGVJ3Om9d2fRTe1yOBINJyy/ahV95w==", - "requires": { - "d3-dispatch": "1", - "d3-selection": "1" - } - }, - "d3-dsv": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-1.2.0.tgz", - "integrity": "sha512-9yVlqvZcSOMhCYzniHE7EVUws7Fa1zgw+/EAV2BxJoG3ME19V6BQFBwI855XQDsxyOuG7NibqRMTtiF/Qup46g==", - "requires": { - "commander": "2", - "iconv-lite": "0.4", - "rw": "1" - }, - "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==" - } - } - }, - "d3-ease": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.7.tgz", - "integrity": "sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ==" - }, - "d3-fetch": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-1.2.0.tgz", - "integrity": "sha512-yC78NBVcd2zFAyR/HnUiBS7Lf6inSCoWcSxFfw8FYL7ydiqe80SazNwoffcqOfs95XaLo7yebsmQqDKSsXUtvA==", - "requires": { - "d3-dsv": "1" - } - }, - "d3-force": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-1.2.1.tgz", - "integrity": "sha512-HHvehyaiUlVo5CxBJ0yF/xny4xoaxFxDnBXNvNcfW9adORGZfyNF1dj6DGLKyk4Yh3brP/1h3rnDzdIAwL08zg==", - "requires": { - "d3-collection": "1", - "d3-dispatch": "1", - "d3-quadtree": "1", - "d3-timer": "1" - } - }, - "d3-format": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.4.5.tgz", - "integrity": "sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ==" - }, - "d3-geo": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.12.1.tgz", - "integrity": "sha512-XG4d1c/UJSEX9NfU02KwBL6BYPj8YKHxgBEw5om2ZnTRSbIcego6dhHwcxuSR3clxh0EpE38os1DVPOmnYtTPg==", - "requires": { - "d3-array": "1" - } - }, - "d3-hierarchy": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz", - "integrity": "sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==" - }, - "d3-interpolate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.4.0.tgz", - "integrity": "sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==", - "requires": { - "d3-color": "1" - } - }, - "d3-path": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", - "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==" - }, - "d3-polygon": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-1.0.6.tgz", - "integrity": "sha512-k+RF7WvI08PC8reEoXa/w2nSg5AUMTi+peBD9cmFc+0ixHfbs4QmxxkarVal1IkVkgxVuk9JSHhJURHiyHKAuQ==" - }, - "d3-quadtree": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-1.0.7.tgz", - "integrity": "sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA==" - }, - "d3-random": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-1.1.2.tgz", - "integrity": "sha512-6AK5BNpIFqP+cx/sreKzNjWbwZQCSUatxq+pPRmFIQaWuoD+NrbVWw7YWpHiXpCQ/NanKdtGDuB+VQcZDaEmYQ==" - }, - "d3-scale": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-2.2.2.tgz", - "integrity": "sha512-LbeEvGgIb8UMcAa0EATLNX0lelKWGYDQiPdHj+gLblGVhGLyNbaCn3EvrJf0A3Y/uOOU5aD6MTh5ZFCdEwGiCw==", - "requires": { - "d3-array": "^1.2.0", - "d3-collection": "1", - "d3-format": "1", - "d3-interpolate": "1", - "d3-time": "1", - "d3-time-format": "2" - } - }, - "d3-scale-chromatic": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-1.5.0.tgz", - "integrity": "sha512-ACcL46DYImpRFMBcpk9HhtIyC7bTBR4fNOPxwVSl0LfulDAwyiHyPOTqcDG1+t5d4P9W7t/2NAuWu59aKko/cg==", - "requires": { - "d3-color": "1", - "d3-interpolate": "1" - } - }, - "d3-selection": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.4.2.tgz", - "integrity": "sha512-SJ0BqYihzOjDnnlfyeHT0e30k0K1+5sR3d5fNueCNeuhZTnGw4M4o8mqJchSwgKMXCNFo+e2VTChiSJ0vYtXkg==" - }, - "d3-shape": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", - "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", - "requires": { - "d3-path": "1" - } - }, - "d3-time": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.1.0.tgz", - "integrity": "sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==" - }, - "d3-time-format": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.3.0.tgz", - "integrity": "sha512-guv6b2H37s2Uq/GefleCDtbe0XZAuy7Wa49VGkPVPMfLL9qObgBST3lEHJBMUp8S7NdLQAGIvr2KXk8Hc98iKQ==", - "requires": { - "d3-time": "1" - } - }, - "d3-timer": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.10.tgz", - "integrity": "sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==" - }, - "d3-transition": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-1.3.2.tgz", - "integrity": "sha512-sc0gRU4PFqZ47lPVHloMn9tlPcv8jxgOQg+0zjhfZXMQuvppjG6YuwdMBE0TuqCZjeJkLecku/l9R0JPcRhaDA==", - "requires": { - "d3-color": "1", - "d3-dispatch": "1", - "d3-ease": "1", - "d3-interpolate": "1", - "d3-selection": "^1.1.0", - "d3-timer": "1" - } - }, - "d3-voronoi": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/d3-voronoi/-/d3-voronoi-1.1.4.tgz", - "integrity": "sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg==" - }, - "d3-zoom": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-1.8.3.tgz", - "integrity": "sha512-VoLXTK4wvy1a0JpH2Il+F2CiOhVu7VRXWF5M/LroMIh3/zBAC3WAt7QoIvPibOavVo20hN6/37vwAsdBejLyKQ==", - "requires": { - "d3-dispatch": "1", - "d3-drag": "1", - "d3-interpolate": "1", - "d3-selection": "1", - "d3-transition": "1" - } - }, - "dagre": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/dagre/-/dagre-0.8.5.tgz", - "integrity": "sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==", - "requires": { - "graphlib": "^2.1.8", - "lodash": "^4.17.15" - } - }, - "dagre-d3": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/dagre-d3/-/dagre-d3-0.6.4.tgz", - "integrity": "sha512-e/6jXeCP7/ptlAM48clmX4xTZc5Ek6T6kagS7Oz2HrYSdqcLZFLqpAfh7ldbZRFfxCZVyh61NEPR08UQRVxJzQ==", - "requires": { - "d3": "^5.14", - "dagre": "^0.8.5", - "graphlib": "^2.1.8", - "lodash": "^4.17.15" - } - }, - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "requires": { - "ms": "2.1.2" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "decko": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decko/-/decko-1.2.0.tgz", - "integrity": "sha1-/UPHNelnuAEzBohKVvvmZZlraBc=" - }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "requires": { - "mimic-response": "^1.0.0" - } - }, - "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" - } - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" - }, - "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" - }, - "default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", - "requires": { - "execa": "^5.0.0" - } - }, - "defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" - }, - "define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==" - }, - "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" - } - }, - "del": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", - "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", - "requires": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - } - }, - "delaunator": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", - "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", - "requires": { - "robust-predicates": "^3.0.0" - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, - "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.4", - "resolved": "https://registry.npmjs.org/detab/-/detab-2.0.4.tgz", - "integrity": "sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g==", - "requires": { - "repeat-string": "^1.5.4" - } - }, - "detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" - }, - "detect-port": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.3.0.tgz", - "integrity": "sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ==", - "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=" - } - } - }, - "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" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } - } - }, - "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" - } - }, - "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.4", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", - "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", - "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" - } - }, - "docusaurus-plugin-redoc": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/docusaurus-plugin-redoc/-/docusaurus-plugin-redoc-0.4.1.tgz", - "integrity": "sha512-NVfikrSVySGFLNFOkJAZQNldNG+Pb2SVAOdARzUDryIkmiz71UdD5gFr+4SGa3cYAV8ieRLuUr6CrsFpCjSQ1g==", - "requires": { - "@docusaurus/types": "^2.0.0-beta.0", - "@docusaurus/utils": "^2.0.0-beta.0", - "joi": "^17.2.1", - "yaml": "^1.10.0" - } - }, - "docusaurus-theme-redoc": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/docusaurus-theme-redoc/-/docusaurus-theme-redoc-0.4.4.tgz", - "integrity": "sha512-TnphakFb3InZF808cDMT6KxMVfZzZY+QIb0TNDJynX3OItmJTx0SYs+q8XyZNkP2TwXSJY0bhsoiVu3kMScI2A==", - "requires": { - "@docusaurus/types": "^2.0.0-beta.0", - "clsx": "^1.1.1", - "copyfiles": "^2.4.1", - "lodash": "^4.17.21", - "mobx": "^6.3.0", - "node-polyfill-webpack-plugin": "^1.1.3", - "redoc": "^2.0.0-rc.54", - "styled-components": "^5.3.0", - "to-arraybuffer": "^1.0.1" - } - }, - "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" - } - }, - "domain-browser": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.19.0.tgz", - "integrity": "sha512-fRA+BaAWOR/yr/t7T9E9GJztHPeFjj8U35ajyAjCDtAAnTn1Rc1f6W6VGPJrO1tkQv9zWu+JRof7z6oQtiYVFQ==" - }, - "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" - } - }, - "dompurify": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.3.4.tgz", - "integrity": "sha512-6BVcgOAVFXjI0JTjEvZy901Rghm+7fDQOrNIcxB4+gdhj6Kwp6T9VBhBY/AbagKHJocRkDYGd6wvI+p4/10xtQ==" - }, - "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": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dot/-/dot-1.1.3.tgz", - "integrity": "sha512-/nt74Rm+PcfnirXGEdhZleTwGC2LMnuKTeeTIlI82xb5loBBoXNYzr2ezCroPSMtilK8EZIfcNZwOcHN+ib1Lg==", - "dev": true - }, - "dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "requires": { - "is-obj": "^2.0.0" - }, - "dependencies": { - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" - } - } - }, - "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.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" - }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "electron-to-chromium": { - "version": "1.3.883", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.883.tgz", - "integrity": "sha512-goyjNx4wB9j911PBteb+AXNbErug7rJVkmDXWdw5SCVn2JlARBwsqucPkvp1h5mXWxHUbBRK3bwXTrqSxSiAIQ==" - }, - "elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "requires": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } - } - }, - "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": "5.8.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", - "integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==", - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" - }, - "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.18.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.3.tgz", - "integrity": "sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw==", - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.3", - "is-string": "^1.0.6", - "object-inspect": "^1.10.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - } - }, - "es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" - }, - "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-object-assign": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", - "integrity": "sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=" - }, - "es6-promise": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", - "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=" - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - }, - "escape-goat": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", - "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==" - }, - "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": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "requires": { - "esrecurse": "^4.3.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.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==" - } - } - }, - "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==" - }, - "eta": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/eta/-/eta-1.12.3.tgz", - "integrity": "sha512-qHixwbDLtekO/d51Yr4glcaUJCIjGVJyTzuqV4GPlgZo1YpgOKG+avQynErZIYrfM6JIJdtiG2Kox8tbb+DoGg==" - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" - }, - "eval": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/eval/-/eval-0.1.6.tgz", - "integrity": "sha512-o0XUw+5OGkXw4pJZzQoXUk+H87DHuC+7ZE//oSrRGtatTmr12oTnLfg6QOq9DyTt0c/p4TwzgmkKrBzWTSizyQ==", - "requires": { - "require-like": ">= 0.1.1" - } - }, - "event-stream": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", - "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", - "dev": true, - "requires": { - "duplexer": "~0.1.1", - "from": "~0", - "map-stream": "~0.1.0", - "pause-stream": "0.0.11", - "split": "0.3", - "stream-combiner": "~0.0.4", - "through": "~2.3.1" - } - }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - }, - "events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" - }, - "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": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "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": { - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "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" - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "fast-glob": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.6.tgz", - "integrity": "sha512-GnLuqj/pvQ7pX8/L4J84nijv6sAnlwvSDpMkJi9i7nPmPxGtRPkBSStfvDW5l6nMdX9VWe+pkKWFTgD+vF2QSQ==", - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - } - }, - "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==" - }, - "fast-safe-stringify": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", - "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==" - }, - "fast-url-parser": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", - "integrity": "sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0=", - "requires": { - "punycode": "^1.3.2" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - } - } - }, - "fastq": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.1.tgz", - "integrity": "sha512-HOnr8Mc60eNYl1gzwp6r5RoUyAn5/glBolUzP/Ez6IFVPMPirxn/9phgL6zhOtaTy7ISwPvQ+wT+hfcRZh/bzw==", - "requires": { - "reusify": "^1.0.4" - } - }, - "faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "feed": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/feed/-/feed-4.2.2.tgz", - "integrity": "sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==", - "requires": { - "xml-js": "^1.6.11" - } - }, - "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" - }, - "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=" - } - } - }, - "file-is-binary": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-is-binary/-/file-is-binary-1.0.0.tgz", - "integrity": "sha1-XkGAbRvK5FjI/sMv484SLbu8Q1Y=", - "requires": { - "is-binary-buffer": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "file-loader": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", - "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", - "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "dependencies": { - "loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "schema-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", - "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", - "requires": { - "@types/json-schema": "^7.0.7", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "filesize": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.4.0.tgz", - "integrity": "sha512-mjFIpOHC4jbfcTfoh4rkWpI31mF7viw9ikj/JyLoKzqlwG/YsefKfvYlYhdYdg/9mtK2z1AzgN/0LvVQ3zdlSQ==" - }, - "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" - } - }, - "filter-obj": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-2.0.2.tgz", - "integrity": "sha512-lO3ttPjHZRfjMcxWKb1j1eDhTFsu4meeR3lnMcnBFhk6RuLhvEiuALu2TlfL310ph4lCYYwgF/ElIjdP739tdg==" - }, - "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": "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" - } - }, - "follow-redirects": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.1.tgz", - "integrity": "sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg==" - }, - "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=" - }, - "fork-ts-checker-webpack-plugin": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.4.0.tgz", - "integrity": "sha512-3I3wFkc4DbzaUDPWEi96wdYGu4EKtxBafhZYm0o4mX51d9bphAY4P3mBl8K5mFXFJqVzHfmdbm9kLGnm7vwwBg==", - "requires": { - "@babel/code-frame": "^7.8.3", - "@types/json-schema": "^7.0.5", - "chalk": "^4.1.0", - "chokidar": "^3.4.2", - "cosmiconfig": "^6.0.0", - "deepmerge": "^4.2.2", - "fs-extra": "^9.0.0", - "glob": "^7.1.6", - "memfs": "^3.1.2", - "minimatch": "^3.0.4", - "schema-utils": "2.7.0", - "semver": "^7.3.2", - "tapable": "^1.0.0" - }, - "dependencies": { - "cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" - } - }, - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "schema-utils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", - "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", - "requires": { - "@types/json-schema": "^7.0.4", - "ajv": "^6.12.2", - "ajv-keywords": "^3.4.1" - } - }, - "tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" - } - } - }, - "form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", - "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.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" - }, - "fraction.js": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.1.tgz", - "integrity": "sha512-MHOhvvxHTfRFpF1geTK9czMIZ6xclsEor2wkIGYYq+PxcQqT7vStJqjhe6S1TenZrMZzo+wlqOufBDVepUEgPg==" - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" - }, - "from": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", - "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", - "dev": true - }, - "fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "fs-monkey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", - "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==" - }, - "fs-readfile-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fs-readfile-promise/-/fs-readfile-promise-2.0.1.tgz", - "integrity": "sha1-gAI4I5gfn//+AWCei+Zo9prknnA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2" - } - }, - "fs-writefile-promise": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fs-writefile-promise/-/fs-writefile-promise-1.0.3.tgz", - "integrity": "sha1-4C+bWP/CVe2CKtx6ARFPRF1I0GM=", - "dev": true, - "requires": { - "mkdirp-promise": "^1.0.0", - "pinkie-promise": "^1.0.0" - }, - "dependencies": { - "pinkie": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-1.0.0.tgz", - "integrity": "sha1-Wkfyi6EBXQIBvae/DzWOR77Ix+Q=", - "dev": true - }, - "pinkie-promise": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-1.0.0.tgz", - "integrity": "sha1-0dpn9UglY7t89X8oauKCLs+/NnA=", - "dev": true, - "requires": { - "pinkie": "^1.0.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.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "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.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" - }, - "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - } - }, - "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-port": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", - "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=" - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" - }, - "github-slugger": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.4.0.tgz", - "integrity": "sha512-w0dzqw/nt51xMVmlaV1+JRzN+oCa1KfcgGEWhxUG16wbdA+Xnt/yoFO8Z8x/V82ZcZ0wy6ln9QDup5avbhiDhQ==" - }, - "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "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.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "requires": { - "is-glob": "^4.0.1" - } - }, - "glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" - }, - "global-dirs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", - "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", - "requires": { - "ini": "2.0.0" - }, - "dependencies": { - "ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==" - } - } - }, - "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": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - } - }, - "got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "requires": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - }, - "dependencies": { - "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" - } - } - } - }, - "graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==" - }, - "grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "graphlib": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz", - "integrity": "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==", - "requires": { - "lodash": "^4.17.15" - } - }, - "gray-matter": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", - "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", - "requires": { - "js-yaml": "^3.13.1", - "kind-of": "^6.0.2", - "section-matter": "^1.0.0", - "strip-bom-string": "^1.0.0" - }, - "dependencies": { - "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" - } - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - } - } - }, - "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=", - "dev": true - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "dev": true, - "requires": { - "ajv": "^6.12.3", - "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=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - } - } - }, - "has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" - }, - "has-yarn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==" - }, - "hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - } - } - }, - "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": "9.0.1", - "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz", - "integrity": "sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA==", - "requires": { - "@types/unist": "^2.0.3", - "comma-separated-tokens": "^1.0.0", - "property-information": "^5.3.0", - "space-separated-tokens": "^1.0.0", - "style-to-object": "^0.3.0", - "unist-util-is": "^4.0.0", - "web-namespaces": "^1.0.0" - } - }, - "hast-util-from-parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz", - "integrity": "sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==", - "requires": { - "@types/parse5": "^5.0.0", - "hastscript": "^6.0.0", - "property-information": "^5.0.0", - "vfile": "^4.0.0", - "vfile-location": "^3.2.0", - "web-namespaces": "^1.0.0" - } - }, - "hast-util-parse-selector": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz", - "integrity": "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==" - }, - "hast-util-raw": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-6.0.1.tgz", - "integrity": "sha512-ZMuiYA+UF7BXBtsTBNcLBF5HzXzkyE6MLzJnL605LKE8GJylNjGc4jjxazAHUtcwT5/CEt6afRKViYB4X66dig==", - "requires": { - "@types/hast": "^2.0.0", - "hast-util-from-parse5": "^6.0.0", - "hast-util-to-parse5": "^6.0.0", - "html-void-elements": "^1.0.0", - "parse5": "^6.0.0", - "unist-util-position": "^3.0.0", - "vfile": "^4.0.0", - "web-namespaces": "^1.0.0", - "xtend": "^4.0.0", - "zwitch": "^1.0.0" - } - }, - "hast-util-to-parse5": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz", - "integrity": "sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ==", - "requires": { - "hast-to-hyperscript": "^9.0.0", - "property-information": "^5.0.0", - "web-namespaces": "^1.0.0", - "xtend": "^4.0.0", - "zwitch": "^1.0.0" - } - }, - "hastscript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz", - "integrity": "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==", - "requires": { - "@types/hast": "^2.0.0", - "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==" - }, - "highlightjs": { - "version": "9.16.2", - "resolved": "https://registry.npmjs.org/highlightjs/-/highlightjs-9.16.2.tgz", - "integrity": "sha512-FK1vmMj8BbEipEy8DLIvp71t5UsC7n2D6En/UfM/91PCwmOpj6f2iu0Y0coRC62KSRHHC+dquM2xMULV/X7NFg==", - "dev": true - }, - "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" - } - }, - "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" - } - }, - "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "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" - } - } - } - }, - "html-entities": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz", - "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==" - }, - "html-minifier-terser": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.0.2.tgz", - "integrity": "sha512-AgYO3UGhMYQx2S/FBJT3EM0ZYcKmH6m9XL9c1v77BeK/tYJxGPxT1/AtsdUi4FcP8kZGmqqnItCcjFPcX9hk6A==", - "requires": { - "camel-case": "^4.1.2", - "clean-css": "^5.1.5", - "commander": "^8.1.0", - "he": "^1.2.0", - "param-case": "^3.0.4", - "relateurl": "^0.2.7", - "terser": "^5.7.2" - }, - "dependencies": { - "commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==" - } - } - }, - "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": "5.5.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", - "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", - "requires": { - "@types/html-minifier-terser": "^6.0.0", - "html-minifier-terser": "^6.0.2", - "lodash": "^4.17.21", - "pretty-error": "^4.0.0", - "tapable": "^2.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-basic": { - "version": "8.1.3", - "resolved": "https://registry.npmjs.org/http-basic/-/http-basic-8.1.3.tgz", - "integrity": "sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw==", - "requires": { - "caseless": "^0.12.0", - "concat-stream": "^1.6.2", - "http-response-object": "^3.0.1", - "parse-cache-control": "^1.0.1" - } - }, - "http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" - }, - "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.5.3", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", - "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==" - }, - "http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "http-proxy-middleware": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.1.tgz", - "integrity": "sha512-cfaXRVoZxSed/BmkA7SwBVNI9Kj7HFltaE5rqYOub5kWzWZ+gofV2koVN1j2rMW7pEfSSlCHGJ31xmuyFyfLOg==", - "requires": { - "@types/http-proxy": "^1.17.5", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" - }, - "dependencies": { - "is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==" - } - } - }, - "http-response-object": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz", - "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==", - "requires": { - "@types/node": "^10.0.3" - }, - "dependencies": { - "@types/node": { - "version": "10.17.60", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", - "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" - } - } - }, - "http2-client": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/http2-client/-/http2-client-1.3.3.tgz", - "integrity": "sha512-nUxLymWQ9pzkzTmir24p2RtsgruLmhje7lH3hLX1IpwvyTg77fW+1brenPPP3USAR+rQ36p5sTA/x7sjCJVkAA==" - }, - "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=" - }, - "httpsnippet": { - "version": "1.25.0", - "resolved": "https://registry.npmjs.org/httpsnippet/-/httpsnippet-1.25.0.tgz", - "integrity": "sha512-jobE6S923cLuf5BPG6Jf+oLBRkPzv2RPp0dwOHcWwj/t9FwV/t9hyZ46kpT3Q5DHn9iFNmGhrcmmFUBqyjoTQg==", - "dev": true, - "requires": { - "chalk": "^1.1.1", - "commander": "^2.9.0", - "debug": "^2.2.0", - "event-stream": "3.3.4", - "form-data": "3.0.0", - "fs-readfile-promise": "^2.0.1", - "fs-writefile-promise": "^1.0.3", - "har-validator": "^5.0.0", - "pinkie-promise": "^2.0.0", - "stringify-object": "^3.3.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "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" - } - }, - "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==", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "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=", - "dev": true - }, - "form-data": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.0.tgz", - "integrity": "sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" - }, - "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": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "requires": {} - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, - "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==" - }, - "immer": { - "version": "9.0.6", - "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.6.tgz", - "integrity": "sha512-G95ivKpy+EvVAnAab4fVa4YGYn24J1SpEktnJX7JJ45Bd7xqME/SCplFzYFmTbrkwZbQ4xJK1xMTUYBkN6pWsQ==" - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=" - }, - "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==" - }, - "infima": { - "version": "0.2.0-alpha.34", - "resolved": "https://registry.npmjs.org/infima/-/infima-0.2.0-alpha.34.tgz", - "integrity": "sha512-Na6A2Tl56i1p9dzu7VOAT1Kmu3f5buz63Wvd+D9ZZWL6siQ47L7wkEZUICVKFgc5gERFZVZ/PoPB57Kl++h37Q==" - }, - "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.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "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==" - }, - "internal-ip": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-6.2.0.tgz", - "integrity": "sha512-D8WGsR6yDt8uq7vDMu7mjcR+yRMm3dW8yufyChmszWRjcSHuxLBkR3GdS2HZAjodsaGuCvXeEJpueisXJULghg==", - "requires": { - "default-gateway": "^6.0.0", - "ipaddr.js": "^1.9.1", - "is-ip": "^3.1.0", - "p-event": "^4.2.0" - }, - "dependencies": { - "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==" - } - } - }, - "internmap": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", - "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==" - }, - "interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" - }, - "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==", - "dev": true - }, - "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" - }, - "ip-regex": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", - "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==" - }, - "ipaddr.js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", - "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==" - }, - "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-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.1.0", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", - "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", - "requires": { - "call-bind": "^1.0.0" - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - }, - "is-bigint": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz", - "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==" - }, - "is-binary-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-binary-buffer/-/is-binary-buffer-1.0.0.tgz", - "integrity": "sha1-vGAxKQtly/eZudlQK1D9U3VSQAc=", - "requires": { - "is-buffer": "^1.1.5" - } - }, - "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-boolean-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz", - "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==", - "requires": { - "call-bind": "^1.0.2" - } - }, - "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.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==" - }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "requires": { - "ci-info": "^2.0.0" - }, - "dependencies": { - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" - } - } - }, - "is-core-module": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", - "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", - "requires": { - "has": "^1.0.3" - } - }, - "is-date-object": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz", - "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==" - }, - "is-decimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", - "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==" - }, - "is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" - }, - "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-generator-function": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.9.tgz", - "integrity": "sha512-ZJ34p1uvIfptHCN7sFTjGibB9/oBg17sHqzDLfuwhvmN/qLVvIQXRQ8licZQ35WJ8KuEQt/etnnzQFI9C9Ue/A==" - }, - "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-installed-globally": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", - "requires": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" - } - }, - "is-ip": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-3.1.0.tgz", - "integrity": "sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==", - "requires": { - "ip-regex": "^4.0.0" - } - }, - "is-nan": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", - "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" - } - }, - "is-negative-zero": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==" - }, - "is-npm": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", - "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==" - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - }, - "is-number-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz", - "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==" - }, - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" - }, - "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-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" - }, - "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==" - }, - "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-regex": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", - "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", - "requires": { - "call-bind": "^1.0.2", - "has-symbols": "^1.0.2" - } - }, - "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": "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==" - }, - "is-string": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz", - "integrity": "sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==" - }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "requires": { - "has-symbols": "^1.0.2" - } - }, - "is-typed-array": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.5.tgz", - "integrity": "sha512-S+GRDgJlR3PyEbsX/Fobd9cqpZBuvUS+8asRqYDMLCb2qMzt1oz5m5oxQCxOgUDxiWsOVNi4yaF+/uvdlHlYug==", - "requires": { - "available-typed-arrays": "^1.0.2", - "call-bind": "^1.0.2", - "es-abstract": "^1.18.0-next.2", - "foreach": "^2.0.5", - "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": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-whitespace/-/is-whitespace-0.3.0.tgz", - "integrity": "sha1-Fjnssb4DauxppUy7QBz77XEUq38=" - }, - "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-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.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "requires": { - "is-docker": "^2.0.0" - } - }, - "is-yarn-global": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", - "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" - }, - "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=" - }, - "jest-worker": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.0.6.tgz", - "integrity": "sha512-qupxcj/dRuA3xHPMUd40gr2EaAurFbkwzOh7wfPaeE9id7hyjURRQoqNfHifHK3XjJU6YJJUQKILGUnwGPEOCA==", - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jgexml": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/jgexml/-/jgexml-0.4.4.tgz", - "integrity": "sha512-j0AzSWT7LXy3s3i1cdv5NZxUtscocwiBxgOLiEBfitCehm8STdXVrcOlbAWsJFLCq1elZYpQlGqA9k8Z+n9iJA==", - "dev": true - }, - "joi": { - "version": "17.4.2", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.4.2.tgz", - "integrity": "sha512-Lm56PP+n0+Z2A2rfRvsfWVDXGEWjXxatPopkQ8qQ5mxCEhwHG+Ettgg5o98FFaxilOxozoa14cFhrE/hOzh/Nw==", - "requires": { - "@hapi/hoek": "^9.0.0", - "@hapi/topo": "^5.0.0", - "@sideway/address": "^4.1.0", - "@sideway/formula": "^3.0.0", - "@sideway/pinpoint": "^2.0.0" - } - }, - "js-levenshtein": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", - "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==" - }, - "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": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "requires": { - "argparse": "^2.0.1" - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" - }, - "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" - }, - "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-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - }, - "json-pointer": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/json-pointer/-/json-pointer-0.6.1.tgz", - "integrity": "sha512-3OvjqKdCBvH41DLpV4iSt6v2XhZXV1bPB4OROuknvUXI7ZQNofieCPkmE26stEJ9zdQuvIxDHCuYhfgxFAAs+Q==", - "requires": { - "foreach": "^2.0.4" - } - }, - "json-schema-faker": { - "version": "0.5.0-rcv.35", - "resolved": "https://registry.npmjs.org/json-schema-faker/-/json-schema-faker-0.5.0-rcv.35.tgz", - "integrity": "sha512-UsIroMY2VdhO/4Fw2Vv40lnl37YjGp8pjadLJBW5k/eVldKED9xXV++TJUJaCEqnpwg7ixazLUKSm8C81APD4g==", - "dev": true, - "requires": { - "json-schema-ref-parser": "^6.1.0", - "jsonpath-plus": "^5.1.0", - "randexp": "^0.5.3", - "yaml": "^1.10.2" - }, - "dependencies": { - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "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": "9.0.9", - "resolved": "https://registry.npmjs.org/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz", - "integrity": "sha512-qcP2lmGy+JUoQJ4DOQeLaZDqH9qSkeGCK3suKWxJXS82dg728Mn3j97azDMaOUmJAN4uCq91LdPx4K7E8F1a7Q==", - "dev": true, - "requires": { - "@apidevtools/json-schema-ref-parser": "9.0.9" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, - "json-to-ast": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/json-to-ast/-/json-to-ast-2.1.0.tgz", - "integrity": "sha512-W9Lq347r8tA1DfMvAGn9QNcgYm4Wm7Yc+k8e6vezpMnRT+NHbtlxgNBXRVjXe9YM6eTn6+p/MKOlV/aABJcSnQ==", - "dev": true, - "requires": { - "code-error-fragment": "0.0.230", - "grapheme-splitter": "^1.0.4" - } - }, - "json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "requires": { - "minimist": "^1.2.5" - } - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "jsonpath-plus": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-5.1.0.tgz", - "integrity": "sha512-890w2Pjtj0iswAxalRlt2kHthi6HKrXEfZcn+ZNZptv7F3rUGIeDuZo+C+h4vXBHLEsVjJrHeCm35nYeZLzSBQ==", - "dev": true - }, - "jsonpointer": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.1.0.tgz", - "integrity": "sha512-CXcRvMyTlnR53xMcKnuMzfCA5i/nfblTnnr74CZb6C4vG39eu6w51t7nKmU5MfLfbTgGItliNyjO/ciNPDqClg==", - "dev": true - }, - "keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "requires": { - "json-buffer": "3.0.0" - } - }, - "khroma": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/khroma/-/khroma-1.4.1.tgz", - "integrity": "sha512-+GmxKvmiRuCcUYDgR7g5Ngo0JEDeOsGdNONdU2zsiBQaK4z19Y2NvXqfEDE0ZiIrg45GTZyAnPLVsLZZACYm3Q==" - }, - "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==" - }, - "kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" - }, - "klona": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", - "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==" - }, - "latest-version": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", - "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", - "requires": { - "package-json": "^6.3.0" - } - }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "^0.1.0" - } - }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "dev": true, - "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==" - }, - "lilconfig": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.3.tgz", - "integrity": "sha512-EHKqr/+ZvdKCifpNrJCKxBTgk5XupZA3y/aCPY9mxfgBzmgh93Mt/WqjjQ38oMxXuvDokaKiM3lAgvSH2sjtHg==" - }, - "lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" - }, - "linkify-it": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", - "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==", - "dev": true, - "requires": { - "uc.micro": "^1.0.1" - } - }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "loader-runner": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", - "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==" - }, - "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": "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" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "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.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" - }, - "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.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" - }, - "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.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.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" - }, - "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.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "requires": { - "tslib": "^2.0.3" - } - }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "lunr": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==" - }, - "magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "requires": { - "sourcemap-codec": "^1.4.4" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - }, - "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==", - "dev": true, - "requires": { - "p-defer": "^1.0.0" - } - }, - "map-stream": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", - "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=", - "dev": true - }, - "mark.js": { - "version": "8.11.1", - "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz", - "integrity": "sha1-GA8fnr74sOY45BZq1S24eb6y/8U=" - }, - "markdown-escapes": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz", - "integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==" - }, - "markdown-it": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-10.0.0.tgz", - "integrity": "sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "entities": "~2.0.0", - "linkify-it": "^2.0.0", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - }, - "dependencies": { - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "entities": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", - "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==", - "dev": true - } - } - }, - "markdown-it-emoji": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/markdown-it-emoji/-/markdown-it-emoji-1.4.0.tgz", - "integrity": "sha1-m+4OmpkKljupbfaYDE/dsF37Tcw=", - "dev": true - }, - "marked": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.7.0.tgz", - "integrity": "sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg==" - }, - "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": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz", - "integrity": "sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ==", - "requires": { - "unist-util-remove": "^2.0.0" - } - }, - "mdast-util-definitions": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz", - "integrity": "sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==", - "requires": { - "unist-util-visit": "^2.0.0" - } - }, - "mdast-util-to-hast": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.0.1.tgz", - "integrity": "sha512-BW3LM9SEMnjf4HXXVApZMt8gLQWVNXc3jryK0nJu/rOXPOnlkUjmdkDlmxMirpbU9ILncGFIwLH/ubnWBbcdgA==", - "requires": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "mdast-util-definitions": "^4.0.0", - "mdurl": "^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": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", - "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==" - }, - "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==", - "dev": true, - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - } - }, - "memfs": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.3.0.tgz", - "integrity": "sha512-BEE62uMfKOavX3iG7GYX43QJ+hAeeWnwIAuJ/R6q96jaMtiLzhsxHJC8B1L7fK7Pt/vXDRwb3SG/yBpNGDPqzg==", - "requires": { - "fs-monkey": "1.0.3" - } - }, - "memoize-one": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", - "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" - }, - "memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", - "dev": true - }, - "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.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" - }, - "mermaid": { - "version": "8.13.8", - "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-8.13.8.tgz", - "integrity": "sha512-Z5v31rvo8P7BPTiGicdJl9BbzyUe9s5sXILK8sM1g7ijkagpfFjPtXZVsq5P1WlN8m/fUp2PPNXVF9SqeTM91w==", - "requires": { - "@braintree/sanitize-url": "^3.1.0", - "d3": "^7.0.0", - "dagre": "^0.8.5", - "dagre-d3": "^0.6.4", - "dompurify": "2.3.4", - "graphlib": "^2.1.8", - "khroma": "^1.4.1", - "moment-mini": "^2.24.0", - "stylis": "^4.0.10" - }, - "dependencies": { - "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" - }, - "d3": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/d3/-/d3-7.2.1.tgz", - "integrity": "sha512-E/5sP0aeK6YPXI/+4QlefvBFgmcyR2jYftId0PrYWv4Y/gW3c3thp1XG4rQzF0eUwV9tR1x05X5eWuJ6rQXvew==", - "requires": { - "d3-array": "3", - "d3-axis": "3", - "d3-brush": "3", - "d3-chord": "3", - "d3-color": "3", - "d3-contour": "3", - "d3-delaunay": "6", - "d3-dispatch": "3", - "d3-drag": "3", - "d3-dsv": "3", - "d3-ease": "3", - "d3-fetch": "3", - "d3-force": "3", - "d3-format": "3", - "d3-geo": "3", - "d3-hierarchy": "3", - "d3-interpolate": "3", - "d3-path": "3", - "d3-polygon": "3", - "d3-quadtree": "3", - "d3-random": "3", - "d3-scale": "4", - "d3-scale-chromatic": "3", - "d3-selection": "3", - "d3-shape": "3", - "d3-time": "3", - "d3-time-format": "4", - "d3-timer": "3", - "d3-transition": "3", - "d3-zoom": "3" - } - }, - "d3-array": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.1.1.tgz", - "integrity": "sha512-33qQ+ZoZlli19IFiQx4QEpf2CBEayMRzhlisJHSCsSUbDXv6ZishqS1x7uFVClKG4Wr7rZVHvaAttoLow6GqdQ==", - "requires": { - "internmap": "1 - 2" - } - }, - "d3-axis": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", - "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==" - }, - "d3-brush": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", - "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", - "requires": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "3", - "d3-transition": "3" - } - }, - "d3-chord": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", - "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", - "requires": { - "d3-path": "1 - 3" - } - }, - "d3-color": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.0.1.tgz", - "integrity": "sha512-6/SlHkDOBLyQSJ1j1Ghs82OIUXpKWlR0hCsw0XrLSQhuUPuCSmLQ1QPH98vpnQxMUQM2/gfAkUEWsupVpd9JGw==" - }, - "d3-contour": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-3.0.1.tgz", - "integrity": "sha512-0Oc4D0KyhwhM7ZL0RMnfGycLN7hxHB8CMmwZ3+H26PWAG0ozNuYG5hXSDNgmP1SgJkQMrlG6cP20HoaSbvcJTQ==", - "requires": { - "d3-array": "2 - 3" - } - }, - "d3-dispatch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", - "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==" - }, - "d3-drag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", - "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", - "requires": { - "d3-dispatch": "1 - 3", - "d3-selection": "3" - } - }, - "d3-dsv": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", - "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", - "requires": { - "commander": "7", - "iconv-lite": "0.6", - "rw": "1" - } - }, - "d3-ease": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", - "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==" - }, - "d3-fetch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", - "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", - "requires": { - "d3-dsv": "1 - 3" - } - }, - "d3-force": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", - "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", - "requires": { - "d3-dispatch": "1 - 3", - "d3-quadtree": "1 - 3", - "d3-timer": "1 - 3" - } - }, - "d3-format": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", - "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==" - }, - "d3-geo": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", - "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", - "requires": { - "d3-array": "2.5.0 - 3" - } - }, - "d3-hierarchy": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.1.tgz", - "integrity": "sha512-LtAIu54UctRmhGKllleflmHalttH3zkfSi4NlKrTAoFKjC+AFBJohsCAdgCBYQwH0F8hIOGY89X1pPqAchlMkA==" - }, - "d3-interpolate": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", - "requires": { - "d3-color": "1 - 3" - } - }, - "d3-path": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.0.1.tgz", - "integrity": "sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==" - }, - "d3-polygon": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", - "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==" - }, - "d3-quadtree": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", - "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==" - }, - "d3-random": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", - "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==" - }, - "d3-scale": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", - "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", - "requires": { - "d3-array": "2.10.0 - 3", - "d3-format": "1 - 3", - "d3-interpolate": "1.2.0 - 3", - "d3-time": "2.1.1 - 3", - "d3-time-format": "2 - 4" - } - }, - "d3-scale-chromatic": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", - "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==", - "requires": { - "d3-color": "1 - 3", - "d3-interpolate": "1 - 3" - } - }, - "d3-selection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", - "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==" - }, - "d3-shape": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.0.1.tgz", - "integrity": "sha512-HNZNEQoDhuCrDWEc/BMbF/hKtzMZVoe64TvisFLDp2Iyj0UShB/E6/lBsLlJTfBMbYgftHj90cXJ0SEitlE6Xw==", - "requires": { - "d3-path": "1 - 3" - } - }, - "d3-time": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.0.0.tgz", - "integrity": "sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==", - "requires": { - "d3-array": "2 - 3" - } - }, - "d3-time-format": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", - "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", - "requires": { - "d3-time": "1 - 3" - } - }, - "d3-timer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", - "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==" - }, - "d3-transition": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", - "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", - "requires": { - "d3-color": "1 - 3", - "d3-dispatch": "1 - 3", - "d3-ease": "1 - 3", - "d3-interpolate": "1 - 3", - "d3-timer": "1 - 3" - } - }, - "d3-zoom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", - "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", - "requires": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "2 - 3", - "d3-transition": "2 - 3" - } - }, - "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - } - } - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" - }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, - "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" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } - } - }, - "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.48.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz", - "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==" - }, - "mime-types": { - "version": "2.1.31", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz", - "integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==", - "requires": { - "mime-db": "1.48.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" - }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" - }, - "mini-create-react-context": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz", - "integrity": "sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==", - "requires": { - "@babel/runtime": "^7.12.1", - "tiny-warning": "^1.0.3" - } - }, - "mini-css-extract-plugin": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-1.6.2.tgz", - "integrity": "sha512-WhDvO3SjGm40oV5y26GjMJYjd2UMqrLAGKy5YS2/3QKJy2F7jgynuHTir/tgUUOiNQu5saXHdc8reo7YuhhT4Q==", - "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0", - "webpack-sources": "^1.1.0" - }, - "dependencies": { - "loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "schema-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", - "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", - "requires": { - "@types/json-schema": "^7.0.7", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "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==" - }, - "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": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - }, - "mkdirp-promise": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-1.1.0.tgz", - "integrity": "sha1-LISJPtZ24NmPsY+5piEv0bK5qBk=", - "dev": true, - "requires": {} - }, - "mobx": { - "version": "6.3.2", - "resolved": "https://registry.npmjs.org/mobx/-/mobx-6.3.2.tgz", - "integrity": "sha512-xGPM9dIE1qkK9Nrhevp0gzpsmELKU4MFUJRORW/jqxVFIHHWIoQrjDjL8vkwoJYY3C2CeVJqgvl38hgKTalTWg==" - }, - "mobx-react": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/mobx-react/-/mobx-react-7.2.0.tgz", - "integrity": "sha512-KHUjZ3HBmZlNnPd1M82jcdVsQRDlfym38zJhZEs33VxyVQTvL77hODCArq6+C1P1k/6erEeo2R7rpE7ZeOL7dg==", - "requires": { - "mobx-react-lite": "^3.2.0" - } - }, - "mobx-react-lite": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/mobx-react-lite/-/mobx-react-lite-3.2.0.tgz", - "integrity": "sha512-q5+UHIqYCOpBoFm/PElDuOhbcatvTllgRp3M1s+Hp5j0Z6XNgDbgqxawJ0ZAUEyKM8X1zs70PCuhAIzX1f4Q/g==", - "requires": {} - }, - "moment-mini": { - "version": "2.24.0", - "resolved": "https://registry.npmjs.org/moment-mini/-/moment-mini-2.24.0.tgz", - "integrity": "sha512-9ARkWHBs+6YJIvrIp0Ik5tyTTtP9PoV0Ssu2Ocq5y9v8+NOOpWiRshAp8c4rZVWTOe+157on/5G+zj5pwIQFEQ==" - }, - "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=" - }, - "nanoid": { - "version": "3.1.30", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", - "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==" - }, - "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.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "requires": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node-emoji": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", - "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", - "requires": { - "lodash": "^4.17.21" - } - }, - "node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" - }, - "node-fetch-h2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/node-fetch-h2/-/node-fetch-h2-2.3.0.tgz", - "integrity": "sha512-ofRW94Ab0T4AOh5Fk8t0h8OBWrmjb0SSB20xh1H8YnPV9EJ+f5AMoYSUQ2zgJ4Iq2HAK0I2l5/Nequ8YzFS3Hg==", - "requires": { - "http2-client": "^1.2.5" - } - }, - "node-forge": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", - "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==" - }, - "node-polyfill-webpack-plugin": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/node-polyfill-webpack-plugin/-/node-polyfill-webpack-plugin-1.1.4.tgz", - "integrity": "sha512-Z0XTKj1wRWO8o/Vjobsw5iOJCN+Sua3EZEUc2Ziy9CyVvmHKu6o+t4gUH9GOE0czyPR94LI6ZCV/PpcM8b5yow==", - "requires": { - "assert": "^2.0.0", - "browserify-zlib": "^0.2.0", - "buffer": "^6.0.3", - "console-browserify": "^1.2.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.12.0", - "domain-browser": "^4.19.0", - "events": "^3.3.0", - "filter-obj": "^2.0.2", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "^1.0.1", - "process": "^0.11.10", - "punycode": "^2.1.1", - "querystring-es3": "^0.2.1", - "readable-stream": "^3.6.0", - "stream-browserify": "^3.0.0", - "stream-http": "^3.2.0", - "string_decoder": "^1.3.0", - "timers-browserify": "^2.0.12", - "tty-browserify": "^0.0.1", - "url": "^0.11.0", - "util": "^0.12.4", - "vm-browserify": "^1.1.2" - }, - "dependencies": { - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" - } - } - }, - "node-readfiles": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/node-readfiles/-/node-readfiles-0.2.0.tgz", - "integrity": "sha1-271K8SE04uY1wkXvk//Pb2BnOl0=", - "requires": { - "es6-promise": "^3.2.1" - } - }, - "noms": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/noms/-/noms-0.0.0.tgz", - "integrity": "sha1-2o69nzr51nYJGbJ9nNyAkqczKFk=", - "requires": { - "inherits": "^2.0.1", - "readable-stream": "~1.0.31" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - } - } - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "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": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" - }, - "npm-run-all": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", - "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "chalk": "^2.4.1", - "cross-spawn": "^6.0.5", - "memorystream": "^0.3.1", - "minimatch": "^3.0.4", - "pidtree": "^0.3.0", - "read-pkg": "^3.0.0", - "shell-quote": "^1.6.1", - "string.prototype.padend": "^3.0.0" - }, - "dependencies": { - "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==", - "dev": true, - "requires": { - "color-convert": "^1.9.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==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "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==", - "dev": true, - "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=", - "dev": true - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "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=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "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=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "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" - } - }, - "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" - } - }, - "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=", - "dev": true - }, - "oas-kit-common": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/oas-kit-common/-/oas-kit-common-1.0.8.tgz", - "integrity": "sha512-pJTS2+T0oGIwgjGpw7sIRU8RQMcUoKCDWFLdBqKB2BNmGpbBMH2sdqAaOXUg8OzonZHU0L7vfJu1mJFEiYDWOQ==", - "requires": { - "fast-safe-stringify": "^2.0.7" - } - }, - "oas-linter": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/oas-linter/-/oas-linter-3.2.2.tgz", - "integrity": "sha512-KEGjPDVoU5K6swgo9hJVA/qYGlwfbFx+Kg2QB/kd7rzV5N8N5Mg6PlsoCMohVnQmo+pzJap/F610qTodKzecGQ==", - "requires": { - "@exodus/schemasafe": "^1.0.0-rc.2", - "should": "^13.2.1", - "yaml": "^1.10.0" - } - }, - "oas-resolver": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/oas-resolver/-/oas-resolver-2.5.5.tgz", - "integrity": "sha512-1po1gzIlTXQqyVNtLFWJuzDm4xxhMCJ8QcP3OarKDO8aJ8AmCtQ67XZ1X+nBbHH4CjTcEsIab1qX5+GIU4f2Gg==", - "requires": { - "node-fetch-h2": "^2.3.0", - "oas-kit-common": "^1.0.8", - "reftools": "^1.1.8", - "yaml": "^1.10.0", - "yargs": "^17.0.1" - }, - "dependencies": { - "yargs": { - "version": "17.0.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.0.1.tgz", - "integrity": "sha512-xBBulfCc8Y6gLFcrPvtqKz9hz8SO0l1Ni8GgDekvBX2ro0HRQImDGnikfc33cgzcYUSncapnNcZDjVFIH3f6KQ==", - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - } - } - }, - "oas-schema-walker": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/oas-schema-walker/-/oas-schema-walker-1.1.5.tgz", - "integrity": "sha512-2yucenq1a9YPmeNExoUa9Qwrt9RFkjqaMAA1X+U7sbb0AqBeTIdMHky9SQQ6iN94bO5NW0W4TRYXerG+BdAvAQ==" - }, - "oas-validator": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/oas-validator/-/oas-validator-5.0.7.tgz", - "integrity": "sha512-gtOjKWQMVeOBIuioguaXA7sMXfJ9q4efHDFo3kmcy9HZEtmGla3aptQK0LZG1AhOX9zambKUwH72kqgoIJa0Fg==", - "requires": { - "call-me-maybe": "^1.0.1", - "oas-kit-common": "^1.0.8", - "oas-linter": "^3.2.2", - "oas-resolver": "^2.5.5", - "oas-schema-walker": "^1.1.5", - "reftools": "^1.1.8", - "should": "^13.2.1", - "yaml": "^1.10.0" - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "object-inspect": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.3.tgz", - "integrity": "sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==" - }, - "object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "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.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - }, - "object.getownpropertydescriptors": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz", - "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" - } - }, - "object.values": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.4.tgz", - "integrity": "sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.2" - } - }, - "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.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "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.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", - "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", - "requires": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" - } - }, - "openapi-sampler": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/openapi-sampler/-/openapi-sampler-1.1.0.tgz", - "integrity": "sha512-/LhZYKNBWphLEpbAG5BdpBZbIbmLgC4vTiTj8N/MV0LF9ptmKOiJ2nETVlacNjXHt7iqDgZDELJCIoZ3q5ZG6A==", - "requires": { - "@types/json-schema": "^7.0.7", - "json-pointer": "^0.6.1" - } - }, - "opener": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", - "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==" - }, - "ory-prettier-styles": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/ory-prettier-styles/-/ory-prettier-styles-1.1.2.tgz", - "integrity": "sha512-J7YcNdGlfTKCXAHEoFl9lp5EhnIASGgM5ua9Y+8OdWtS9tXJTik5xFYCF6xS46tpI3sk8cxFguKWhZeaeb6Z/A==", - "dev": true - }, - "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==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.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==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "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" - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "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=", - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "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=", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" - }, - "p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", - "dev": true - }, - "p-event": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz", - "integrity": "sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==", - "requires": { - "p-timeout": "^3.1.0" - } - }, - "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==", - "dev": true - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "requires": { - "yocto-queue": "^0.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" - }, - "dependencies": { - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "requires": { - "p-try": "^2.0.0" - } - } - } - }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "p-retry": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", - "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", - "requires": { - "@types/retry": "^0.12.0", - "retry": "^0.13.1" - } - }, - "p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", - "requires": { - "p-finally": "^1.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==" - }, - "package-json": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", - "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", - "requires": { - "got": "^9.6.0", - "registry-auth-token": "^4.0.0", - "registry-url": "^5.0.0", - "semver": "^6.2.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - }, - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" - }, - "param-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "requires": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "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.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "requires": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "parse-cache-control": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz", - "integrity": "sha1-juqz5U+laSD+Fro493+iGqzC104=" - }, - "parse-entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", - "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", - "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": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "parse-numeric-range": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz", - "integrity": "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==" - }, - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" - }, - "parser-front-matter": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/parser-front-matter/-/parser-front-matter-1.6.4.tgz", - "integrity": "sha512-eqtUnI5+COkf1CQOYo8FmykN5Zs+5Yr60f/7GcPgQDZEEjdE/VZ4WMaMo9g37foof8h64t/TH2Uvk2Sq0fDy/g==", - "requires": { - "extend-shallow": "^2.0.1", - "file-is-binary": "^1.0.0", - "gray-matter": "^3.0.2", - "isobject": "^3.0.1", - "lazy-cache": "^2.0.2", - "mixin-deep": "^1.2.0", - "trim-leading-lines": "^0.1.1" - }, - "dependencies": { - "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" - } - }, - "gray-matter": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-3.1.1.tgz", - "integrity": "sha512-nZ1qjLmayEv0/wt3sHig7I0s3/sJO0dkAaKYQ5YAOApUtYEOonXSFdWvL1khvnZMTvov4UufkqlFsilPnejEXA==", - "requires": { - "extend-shallow": "^2.0.1", - "js-yaml": "^3.10.0", - "kind-of": "^5.0.2", - "strip-bom-string": "^1.0.0" - } - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "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==" - } - } - }, - "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.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" - }, - "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==" - }, - "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.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "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": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" - }, - "pause-stream": { - "version": "0.0.11", - "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", - "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", - "dev": true, - "requires": { - "through": "~2.3" - } - }, - "pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "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" - } - }, - "perfect-scrollbar": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/perfect-scrollbar/-/perfect-scrollbar-1.5.1.tgz", - "integrity": "sha512-MrSImINnIh3Tm1hdPT6bji6fmIeRorVEegQvyUnhqko2hDGTHhmjPefHXfxG/Jb8xVbfCwgmUIlIajERGXjVXQ==" - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==" - }, - "pidtree": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", - "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", - "dev": true - }, - "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=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "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" - } - }, - "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" - } - }, - "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.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "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" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - } - } - }, - "polished": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/polished/-/polished-4.1.3.tgz", - "integrity": "sha512-ocPAcVBUOryJEKe0z2KLd1l9EBa1r5mSwlKpExmrLzsnIzJo4axsoU9O2BjOTkDGDT4mZ0WFE5XKTlR3nLnZOA==", - "requires": { - "@babel/runtime": "^7.14.0" - } - }, - "portfinder": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", - "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", - "requires": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.5" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "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" - } - } - } - }, - "postcss": { - "version": "8.3.11", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.11.tgz", - "integrity": "sha512-hCmlUAIlUiav8Xdqw3Io4LcpA1DOt7h3LSTAC4G6JGHFFaWzI6qvFt9oilvl8BmkbBRX1IhM90ZAmpk68zccQA==", - "requires": { - "nanoid": "^3.1.30", - "picocolors": "^1.0.0", - "source-map-js": "^0.6.2" - } - }, - "postcss-calc": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.0.0.tgz", - "integrity": "sha512-5NglwDrcbiy8XXfPM11F3HeC6hoT9W7GUH/Zi5U/p7u3Irv4rHhdDcIZwG0llHXV4ftsBjpfWMXAnXNl4lnt8g==", - "requires": { - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.2" - } - }, - "postcss-colormin": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.1.tgz", - "integrity": "sha512-VVwMrEYLcHYePUYV99Ymuoi7WhKrMGy/V9/kTS0DkCoJYmmjdOMneyhzYUxcNgteKDVbrewOkSM7Wje/MFwxzA==", - "requires": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "colord": "^2.9.1", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-convert-values": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.2.tgz", - "integrity": "sha512-KQ04E2yadmfa1LqXm7UIDwW1ftxU/QWZmz6NKnHnUvJ3LEYbbcX6i329f/ig+WnEByHegulocXrECaZGLpL8Zg==", - "requires": { - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-discard-comments": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz", - "integrity": "sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg==", - "requires": {} - }, - "postcss-discard-duplicates": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz", - "integrity": "sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA==", - "requires": {} - }, - "postcss-discard-empty": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz", - "integrity": "sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw==", - "requires": {} - }, - "postcss-discard-overridden": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz", - "integrity": "sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q==", - "requires": {} - }, - "postcss-discard-unused": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-5.0.1.tgz", - "integrity": "sha512-tD6xR/xyZTwfhKYRw0ylfCY8wbfhrjpKAMnDKRTLMy2fNW5hl0hoV6ap5vo2JdCkuHkP3CHw72beO4Y8pzFdww==", - "requires": { - "postcss-selector-parser": "^6.0.5" - } - }, - "postcss-loader": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.0.tgz", - "integrity": "sha512-H9hv447QjQJVDbHj3OUdciyAXY3v5+UDduzEytAlZCVHCpNAAg/mCSwhYYqZr9BiGYhmYspU8QXxZwiHTLn3yA==", - "requires": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.4", - "semver": "^7.3.5" - } - }, - "postcss-merge-idents": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-5.0.1.tgz", - "integrity": "sha512-xu8ueVU0RszbI2gKkxR6mluupsOSSLvt8q4gA2fcKFkA+x6SlH3cb4cFHpDvcRCNFbUmCR/VUub+Y6zPOjPx+Q==", - "requires": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-merge-longhand": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.2.tgz", - "integrity": "sha512-BMlg9AXSI5G9TBT0Lo/H3PfUy63P84rVz3BjCFE9e9Y9RXQZD3+h3YO1kgTNsNJy7bBc1YQp8DmSnwLIW5VPcw==", - "requires": { - "css-color-names": "^1.0.1", - "postcss-value-parser": "^4.1.0", - "stylehacks": "^5.0.1" - } - }, - "postcss-merge-rules": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.2.tgz", - "integrity": "sha512-5K+Md7S3GwBewfB4rjDeol6V/RZ8S+v4B66Zk2gChRqLTCC8yjnHQ601omj9TKftS19OPGqZ/XzoqpzNQQLwbg==", - "requires": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "cssnano-utils": "^2.0.1", - "postcss-selector-parser": "^6.0.5", - "vendors": "^1.0.3" - } - }, - "postcss-minify-font-values": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.0.1.tgz", - "integrity": "sha512-7JS4qIsnqaxk+FXY1E8dHBDmraYFWmuL6cgt0T1SWGRO5bzJf8sUoelwa4P88LEWJZweHevAiDKxHlofuvtIoA==", - "requires": { - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-minify-gradients": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.3.tgz", - "integrity": "sha512-Z91Ol22nB6XJW+5oe31+YxRsYooxOdFKcbOqY/V8Fxse1Y3vqlNRpi1cxCqoACZTQEhl+xvt4hsbWiV5R+XI9Q==", - "requires": { - "colord": "^2.9.1", - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-minify-params": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.1.tgz", - "integrity": "sha512-4RUC4k2A/Q9mGco1Z8ODc7h+A0z7L7X2ypO1B6V8057eVK6mZ6xwz6QN64nHuHLbqbclkX1wyzRnIrdZehTEHw==", - "requires": { - "alphanum-sort": "^1.0.2", - "browserslist": "^4.16.0", - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0", - "uniqs": "^2.0.0" - } - }, - "postcss-minify-selectors": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.1.0.tgz", - "integrity": "sha512-NzGBXDa7aPsAcijXZeagnJBKBPMYLaJJzB8CQh6ncvyl2sIndLVWfbcDi0SBjRWk5VqEjXvf8tYwzoKf4Z07og==", - "requires": { - "alphanum-sort": "^1.0.2", - "postcss-selector-parser": "^6.0.5" - } - }, - "postcss-modules-extract-imports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", - "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "requires": {} - }, - "postcss-modules-local-by-default": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", - "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", - "requires": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-modules-scope": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", - "requires": { - "postcss-selector-parser": "^6.0.4" - } - }, - "postcss-modules-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", - "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", - "requires": { - "icss-utils": "^5.0.0" - } - }, - "postcss-normalize-charset": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz", - "integrity": "sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg==", - "requires": {} - }, - "postcss-normalize-display-values": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.1.tgz", - "integrity": "sha512-uupdvWk88kLDXi5HEyI9IaAJTE3/Djbcrqq8YgjvAVuzgVuqIk3SuJWUisT2gaJbZm1H9g5k2w1xXilM3x8DjQ==", - "requires": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-normalize-positions": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.0.1.tgz", - "integrity": "sha512-rvzWAJai5xej9yWqlCb1OWLd9JjW2Ex2BCPzUJrbaXmtKtgfL8dBMOOMTX6TnvQMtjk3ei1Lswcs78qKO1Skrg==", - "requires": { - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-normalize-repeat-style": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.1.tgz", - "integrity": "sha512-syZ2itq0HTQjj4QtXZOeefomckiV5TaUO6ReIEabCh3wgDs4Mr01pkif0MeVwKyU/LHEkPJnpwFKRxqWA/7O3w==", - "requires": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-normalize-string": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.0.1.tgz", - "integrity": "sha512-Ic8GaQ3jPMVl1OEn2U//2pm93AXUcF3wz+OriskdZ1AOuYV25OdgS7w9Xu2LO5cGyhHCgn8dMXh9bO7vi3i9pA==", - "requires": { - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-normalize-timing-functions": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.1.tgz", - "integrity": "sha512-cPcBdVN5OsWCNEo5hiXfLUnXfTGtSFiBU9SK8k7ii8UD7OLuznzgNRYkLZow11BkQiiqMcgPyh4ZqXEEUrtQ1Q==", - "requires": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-normalize-unicode": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.1.tgz", - "integrity": "sha512-kAtYD6V3pK0beqrU90gpCQB7g6AOfP/2KIPCVBKJM2EheVsBQmx/Iof+9zR9NFKLAx4Pr9mDhogB27pmn354nA==", - "requires": { - "browserslist": "^4.16.0", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-normalize-url": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.2.tgz", - "integrity": "sha512-k4jLTPUxREQ5bpajFQZpx8bCF2UrlqOTzP9kEqcEnOfwsRshWs2+oAFIHfDQB8GO2PaUaSE0NlTAYtbluZTlHQ==", - "requires": { - "is-absolute-url": "^3.0.3", - "normalize-url": "^6.0.1", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-normalize-whitespace": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.1.tgz", - "integrity": "sha512-iPklmI5SBnRvwceb/XH568yyzK0qRVuAG+a1HFUsFRf11lEJTiQQa03a4RSCQvLKdcpX7XsI1Gen9LuLoqwiqA==", - "requires": { - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-ordered-values": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.0.2.tgz", - "integrity": "sha512-8AFYDSOYWebJYLyJi3fyjl6CqMEG/UVworjiyK1r573I56kb3e879sCJLGvR3merj+fAdPpVplXKQZv+ey6CgQ==", - "requires": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-reduce-idents": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-5.0.1.tgz", - "integrity": "sha512-6Rw8iIVFbqtaZExgWK1rpVgP7DPFRPh0DDFZxJ/ADNqPiH10sPCoq5tgo6kLiTyfh9sxjKYjXdc8udLEcPOezg==", - "requires": { - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-reduce-initial": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.0.1.tgz", - "integrity": "sha512-zlCZPKLLTMAqA3ZWH57HlbCjkD55LX9dsRyxlls+wfuRfqCi5mSlZVan0heX5cHr154Dq9AfbH70LyhrSAezJw==", - "requires": { - "browserslist": "^4.16.0", - "caniuse-api": "^3.0.0" - } - }, - "postcss-reduce-transforms": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.1.tgz", - "integrity": "sha512-a//FjoPeFkRuAguPscTVmRQUODP+f3ke2HqFNgGPwdYnpeC29RZdCBvGRGTsKpMURb/I3p6jdKoBQ2zI+9Q7kA==", - "requires": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-selector-parser": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", - "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - } - }, - "postcss-sort-media-queries": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-sort-media-queries/-/postcss-sort-media-queries-4.1.0.tgz", - "integrity": "sha512-pPiw94cMOqGFSlp4QGzOKrhYr8O3VyMNQnb7qlGM25H4EDEii3iKtIUMoFe5gKiCEAt/Iyk2ah47eoRhGqSBGA==", - "requires": { - "sort-css-media-queries": "2.0.4" - } - }, - "postcss-svgo": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.3.tgz", - "integrity": "sha512-41XZUA1wNDAZrQ3XgWREL/M2zSw8LJPvb5ZWivljBsUQAGoEKMYm6okHsTjJxKYI4M75RQEH4KYlEM52VwdXVA==", - "requires": { - "postcss-value-parser": "^4.1.0", - "svgo": "^2.7.0" - }, - "dependencies": { - "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" - }, - "css-select": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", - "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", - "requires": { - "boolbase": "^1.0.0", - "css-what": "^5.0.0", - "domhandler": "^4.2.0", - "domutils": "^2.6.0", - "nth-check": "^2.0.0" - } - }, - "css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "requires": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - } - }, - "css-what": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", - "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==" - }, - "dom-serializer": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", - "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - } - }, - "domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==" - }, - "domhandler": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz", - "integrity": "sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==", - "requires": { - "domelementtype": "^2.2.0" - } - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" - }, - "mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" - }, - "nth-check": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", - "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", - "requires": { - "boolbase": "^1.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==" - }, - "svgo": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", - "requires": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" - } - } - } - }, - "postcss-unique-selectors": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.1.tgz", - "integrity": "sha512-gwi1NhHV4FMmPn+qwBNuot1sG1t2OmacLQ/AX29lzyggnjd+MnVD5uqQmpXO3J17KGL2WAxQruj1qTd3H0gG/w==", - "requires": { - "alphanum-sort": "^1.0.2", - "postcss-selector-parser": "^6.0.5", - "uniqs": "^2.0.0" - } - }, - "postcss-value-parser": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", - "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==" - }, - "postcss-zindex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-5.0.1.tgz", - "integrity": "sha512-nwgtJJys+XmmSGoYCcgkf/VczP8Mp/0OfSv3v0+fw0uABY4yxw+eFs0Xp9nAZHIKnS5j+e9ywQ+RD+ONyvl5pA==", - "requires": {} - }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" - }, - "prettier": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.2.tgz", - "integrity": "sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ==", - "dev": true - }, - "pretty-error": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", - "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", - "requires": { - "lodash": "^4.17.20", - "renderkid": "^3.0.0" - } - }, - "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.2.1", - "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-1.2.1.tgz", - "integrity": "sha512-w23ch4f75V1Tnz8DajsYKvY5lF7H1+WvzvLUcF0paFxkTHSp42RS0H5CttdN2Q8RR3DRGZ9v5xD/h3n8C8kGmg==", - "requires": {} - }, - "prismjs": { - "version": "1.24.1", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.24.1.tgz", - "integrity": "sha512-mNPsedLuk90RVJioIky8ANZEwYm5w9LcvCXrxHlwf4fNVSn8jEipMybMkWUyyF0JhnC+C4VcOVSBuHRKs1L5Ow==" - }, - "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": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/promise/-/promise-8.1.0.tgz", - "integrity": "sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q==", - "requires": { - "asap": "~2.0.6" - } - }, - "prompts": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz", - "integrity": "sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==", - "requires": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - } - }, - "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.6.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", - "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", - "requires": { - "xtend": "^4.0.0" - } - }, - "proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "requires": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "dependencies": { - "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==" - } - } - }, - "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" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } - } - }, - "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" - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - }, - "pupa": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", - "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", - "requires": { - "escape-goat": "^2.0.0" - } - }, - "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==" - }, - "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=" - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" - }, - "ramda": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.1.tgz", - "integrity": "sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw==", - "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" - } - }, - "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" - }, - "dependencies": { - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" - } - } - }, - "raw-loader": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz", - "integrity": "sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==", - "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "dependencies": { - "loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "schema-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", - "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.7", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" - } - } - }, - "react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", - "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "react-dev-utils": { - "version": "12.0.0-next.47", - "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.0-next.47.tgz", - "integrity": "sha512-PsE71vP15TZMmp/RZKOJC4fYD5Pvt0+wCoyG3QHclto0d4FyIJI78xGRICOOThZFROqgXYlZP6ddmeybm+jO4w==", - "requires": { - "@babel/code-frame": "^7.10.4", - "address": "^1.1.2", - "browserslist": "^4.16.5", - "chalk": "^2.4.2", - "cross-spawn": "^7.0.3", - "detect-port-alt": "^1.1.6", - "escape-string-regexp": "^2.0.0", - "filesize": "^6.1.0", - "find-up": "^4.1.0", - "fork-ts-checker-webpack-plugin": "^6.0.5", - "global-modules": "^2.0.0", - "globby": "^11.0.1", - "gzip-size": "^5.1.1", - "immer": "^9.0.6", - "is-root": "^2.1.0", - "loader-utils": "^2.0.0", - "open": "^7.0.2", - "pkg-up": "^3.1.0", - "prompts": "^2.4.0", - "react-error-overlay": "7.0.0-next.54+1465357b", - "recursive-readdir": "^2.2.2", - "shell-quote": "^1.7.2", - "strip-ansi": "^6.0.0", - "text-table": "^0.2.0" - }, - "dependencies": { - "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" - } - }, - "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=" - } - } - }, - "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=" - }, - "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==" - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "loader-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.1.tgz", - "integrity": "sha512-g4miPa9uUrZz4iElkaVJgDFwKJGh8aQGM7pUL4ejXl6cu7kSb30seQOVGNMP6sW8j7DW77X68hJZ+GM7UGhXeQ==", - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "react-error-overlay": { - "version": "7.0.0-next.54", - "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-7.0.0-next.54.tgz", - "integrity": "sha512-b96CiTnZahXPDNH9MKplvt5+jD+BkxDw7q5R3jnkUXze/ux1pLv32BBZmlj0OfCUeMqyz4sAmF+0ccJGVMlpXw==" - }, - "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" - } - } - } - }, - "react-dom": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", - "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.2" - } - }, - "react-error-overlay": { - "version": "6.0.9", - "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.9.tgz", - "integrity": "sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==" - }, - "react-fast-compare": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz", - "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==" - }, - "react-helmet": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/react-helmet/-/react-helmet-6.1.0.tgz", - "integrity": "sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw==", - "requires": { - "object-assign": "^4.1.1", - "prop-types": "^15.7.2", - "react-fast-compare": "^3.1.1", - "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==", - "peer": true, - "requires": { - "prop-types": "^15.5.0" - } - }, - "react-loadable-ssr-addon-v5-slorber": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/react-loadable-ssr-addon-v5-slorber/-/react-loadable-ssr-addon-v5-slorber-1.0.1.tgz", - "integrity": "sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A==", - "requires": { - "@babel/runtime": "^7.10.3" - } - }, - "react-router": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.0.tgz", - "integrity": "sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw==", - "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.4.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.2.0", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.2.0.tgz", - "integrity": "sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA==", - "requires": { - "@babel/runtime": "^7.1.2", - "history": "^4.9.0", - "loose-envify": "^1.3.1", - "prop-types": "^15.6.2", - "react-router": "5.2.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0" - } - }, - "react-side-effect": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.1.tgz", - "integrity": "sha512-2FoTQzRNTncBVtnzxFOk2mCpcfxQpenBMbk5kSVBg5UcPqV9fRbgY2zhb7GTWWOlpFmAxhClBDlIq8Rsubz1yQ==", - "requires": {} - }, - "react-tabs": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/react-tabs/-/react-tabs-3.2.2.tgz", - "integrity": "sha512-/o52eGKxFHRa+ssuTEgSM8qORnV4+k7ibW+aNQzKe+5gifeVz8nLxCrsI9xdRhfb0wCLdgIambIpb1qCxaMN+A==", - "requires": { - "clsx": "^1.1.0", - "prop-types": "^15.5.0" - } - }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "dev": true, - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - }, - "dependencies": { - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "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.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "requires": { - "picomatch": "^2.2.1" - } - }, - "reading-time": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/reading-time/-/reading-time-1.5.0.tgz", - "integrity": "sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==" - }, - "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" - } - }, - "redoc": { - "version": "2.0.0-rc.54", - "resolved": "https://registry.npmjs.org/redoc/-/redoc-2.0.0-rc.54.tgz", - "integrity": "sha512-xwukaWdoktkDAoQuhajekdC54+/lSLwIUqJCNSTVEjeYEuZPq2tFUj9H5SBt8/YSq5UF/zOmDQrXPWMgildQpQ==", - "requires": { - "@babel/runtime": "^7.14.0", - "@redocly/openapi-core": "^1.0.0-beta.50", - "@redocly/react-dropdown-aria": "^2.0.11", - "@types/node": "^15.6.1", - "classnames": "^2.3.1", - "decko": "^1.2.0", - "dompurify": "^2.2.8", - "eventemitter3": "^4.0.7", - "json-pointer": "^0.6.1", - "lunr": "^2.3.9", - "mark.js": "^8.11.1", - "marked": "^0.7.0", - "memoize-one": "^5.2.1", - "mobx-react": "^7.2.0", - "openapi-sampler": "^1.0.1", - "path-browserify": "^1.0.1", - "perfect-scrollbar": "^1.5.1", - "polished": "^4.1.3", - "prismjs": "^1.23.0", - "prop-types": "^15.7.2", - "react-tabs": "^3.2.2", - "slugify": "~1.4.7", - "stickyfill": "^1.1.1", - "swagger2openapi": "^7.0.6", - "url-template": "^2.0.8" - }, - "dependencies": { - "@types/node": { - "version": "15.14.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-15.14.1.tgz", - "integrity": "sha512-wF6hazbsnwaW3GhK4jFuw5NaLDQVRQ6pWQUGAUrJzxixFkTaODSiAKMPXuHwPEPkAKQWHAzj6uJ5h+3zU9gQxg==" - }, - "prismjs": { - "version": "1.25.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.25.0.tgz", - "integrity": "sha512-WCjJHl1KEWbnkQom1+SzftbtXMKQoezOCYs5rECqMN+jP+apI7ftoflyqigqzopSO3hMhTEb0mFClA8lkolgEg==" - } - } - }, - "redocusaurus": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/redocusaurus/-/redocusaurus-0.4.4.tgz", - "integrity": "sha512-Y4TF3V1m0FmCI2IUUzg4DofXr4Hss+q0wFyCx0tvy5BOEFRHQoO7y1kJ6Uq5lR8HOyFIiFpwlzVsJQf6CwrsaQ==", - "requires": { - "@docusaurus/types": "^2.0.0-beta.0", - "docusaurus-plugin-redoc": "^0.4.1", - "docusaurus-theme-redoc": "^0.4.4" - } - }, - "reftools": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/reftools/-/reftools-1.1.8.tgz", - "integrity": "sha512-Yvz9NH8uFHzD/AXX82Li1GdAP6FzDBxEZw+njerNBBQv/XHihqsWAjNfXtaq4QD2l4TEZVnp4UbktdYSegAM3g==" - }, - "regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" - }, - "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.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" - }, - "regenerator-transform": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", - "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", - "requires": { - "@babel/runtime": "^7.8.4" - } - }, - "regexp.prototype.flags": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", - "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "regexpu-core": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", - "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" - } - }, - "registry-auth-token": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", - "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", - "requires": { - "rc": "^1.2.8" - } - }, - "registry-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", - "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", - "requires": { - "rc": "^1.2.8" - } - }, - "regjsgen": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==" - }, - "regjsparser": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", - "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", - "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" - }, - "dependencies": { - "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" - } - }, - "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" - } - }, - "parse5": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==" - } - } - }, - "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" - }, - "dependencies": { - "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" - } - } - } - }, - "remark-emoji": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/remark-emoji/-/remark-emoji-2.2.0.tgz", - "integrity": "sha512-P3cj9s5ggsUvWw5fS2uzCHJMGuXYRb0NnZqYlNecewXt8QBU9n5vW3DUUKOhepS8F9CwdMx9B8a3i7pqFWAI5w==", - "requires": { - "emoticon": "^3.2.0", - "node-emoji": "^1.10.0", - "unist-util-visit": "^2.0.3" - } - }, - "remark-footnotes": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/remark-footnotes/-/remark-footnotes-2.0.0.tgz", - "integrity": "sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ==" - }, - "remark-mdx": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-1.6.22.tgz", - "integrity": "sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ==", - "requires": { - "@babel/core": "7.12.9", - "@babel/helper-plugin-utils": "7.10.4", - "@babel/plugin-proposal-object-rest-spread": "7.12.1", - "@babel/plugin-syntax-jsx": "7.12.1", - "@mdx-js/util": "1.6.22", - "is-alphabetical": "1.0.4", - "remark-parse": "8.0.3", - "unified": "9.2.0" - }, - "dependencies": { - "@babel/core": { - "version": "7.12.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz", - "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==", - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.12.5", - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helpers": "^7.12.5", - "@babel/parser": "^7.12.7", - "@babel/template": "^7.12.7", - "@babel/traverse": "^7.12.9", - "@babel/types": "^7.12.7", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.2", - "lodash": "^4.17.19", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", - "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", - "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.12.1" - } - }, - "@babel/plugin-syntax-jsx": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", - "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "remark-mdx-remove-exports": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/remark-mdx-remove-exports/-/remark-mdx-remove-exports-1.6.22.tgz", - "integrity": "sha512-7g2uiTmTGfz5QyVb+toeX25frbk1Y6yd03RXGPtqx0+DVh86Gb7MkNYbk7H2X27zdZ3CQv1W/JqlFO0Oo8IxVA==", - "requires": { - "unist-util-remove": "2.0.0" - }, - "dependencies": { - "unist-util-remove": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-2.0.0.tgz", - "integrity": "sha512-HwwWyNHKkeg/eXRnE11IpzY8JT55JNM1YCwwU9YNCnfzk6s8GhPXrVBBZWiwLeATJbI7euvoGSzcy9M29UeW3g==", - "requires": { - "unist-util-is": "^4.0.0" - } - } - } - }, - "remark-mdx-remove-imports": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/remark-mdx-remove-imports/-/remark-mdx-remove-imports-1.6.22.tgz", - "integrity": "sha512-lmjAXD8Ltw0TsvBzb45S+Dxx7LTJAtDaMneMAv8LAUIPEyYoKkmGbmVsiF0/pY6mhM1Q16swCmu1TN+ie/vn/A==", - "requires": { - "unist-util-remove": "2.0.0" - }, - "dependencies": { - "unist-util-remove": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-2.0.0.tgz", - "integrity": "sha512-HwwWyNHKkeg/eXRnE11IpzY8JT55JNM1YCwwU9YNCnfzk6s8GhPXrVBBZWiwLeATJbI7euvoGSzcy9M29UeW3g==", - "requires": { - "unist-util-is": "^4.0.0" - } - } - } - }, - "remark-parse": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.3.tgz", - "integrity": "sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==", - "requires": { - "ccount": "^1.0.0", - "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": "^2.0.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": "^2.0.0", - "vfile-location": "^3.0.0", - "xtend": "^4.0.1" - } - }, - "remark-squeeze-paragraphs": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-4.0.0.tgz", - "integrity": "sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw==", - "requires": { - "mdast-squeeze-paragraphs": "^4.0.0" - } - }, - "remarkable": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/remarkable/-/remarkable-2.0.1.tgz", - "integrity": "sha512-YJyMcOH5lrR+kZdmB0aJJ4+93bEojRZ1HGDn9Eagu6ibg7aVZhc3OWbbShRid+Q5eAfsEqWxpe+g5W5nYNfNiA==", - "dev": true, - "requires": { - "argparse": "^1.0.10", - "autolinker": "^3.11.0" - }, - "dependencies": { - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - } - } - }, - "renderkid": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", - "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", - "requires": { - "css-select": "^4.1.3", - "dom-converter": "^0.2.0", - "htmlparser2": "^6.1.0", - "lodash": "^4.17.21", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "css-select": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", - "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", - "requires": { - "boolbase": "^1.0.0", - "css-what": "^5.0.0", - "domhandler": "^4.2.0", - "domutils": "^2.6.0", - "nth-check": "^2.0.0" - } - }, - "css-what": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", - "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==" - }, - "dom-serializer": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", - "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - } - }, - "domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==" - }, - "domhandler": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz", - "integrity": "sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==", - "requires": { - "domelementtype": "^2.2.0" - } - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" - }, - "htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - }, - "nth-check": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", - "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", - "requires": { - "boolbase": "^1.0.0" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" - }, - "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": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "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.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - }, - "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==" - }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "requires": { - "lowercase-keys": "^1.0.0" - } - }, - "ret": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.2.2.tgz", - "integrity": "sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==", - "dev": true - }, - "retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" - }, - "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" - } - }, - "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" - } - }, - "robust-predicates": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", - "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==" - }, - "rtl-detect": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/rtl-detect/-/rtl-detect-1.0.4.tgz", - "integrity": "sha512-EBR4I2VDSSYr7PkBmFy04uhycIpDKp+21p/jARYXlCSjQksTBQcJ0HFUPOO79EPPH5JS6VAhiIQbycf0O3JAxQ==" - }, - "rtlcss": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-3.4.0.tgz", - "integrity": "sha512-pOSLxwmJTjqcnlFIezpCGyhRoPKIwXj78wJfBI8iZw7gZGVzjT/T5QcaimRComsPanMSV0hzmI5o+oWIP3nNBA==", - "requires": { - "chalk": "^4.1.0", - "find-up": "^5.0.0", - "mkdirp": "^1.0.4", - "postcss": "^8.2.4", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "requires": { - "p-locate": "^5.0.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "requires": { - "p-limit": "^3.0.2" - } - } - } - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "rw": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", - "integrity": "sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q=" - }, - "rxjs": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.4.0.tgz", - "integrity": "sha512-7SQDi7xeTMCJpqViXh8gL/lebcwlp3d831F05+9B44A4B0WfsEwUQHR64gsH1kvJ+Ep/J9K2+n1hVl1CsGN23w==", - "requires": { - "tslib": "~2.1.0" - }, - "dependencies": { - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" - } - } - }, - "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==" - }, - "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.20.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "requires": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - } - }, - "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-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.11", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.11.tgz", - "integrity": "sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA==", - "requires": { - "node-forge": "^0.10.0" - } - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "semver-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", - "requires": { - "semver": "^6.3.0" - }, - "dependencies": { - "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": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "requires": { - "randombytes": "^2.1.0" - } - }, - "serve-handler": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.3.tgz", - "integrity": "sha512-FosMqFBNrLyeiIDvP1zgO6YoTzFYHxLDEIavhlmQ+knB2Z7l1t+kGLHkZIDN7UVWqQAmKI3D20A6F6jo3nDd4w==", - "requires": { - "bytes": "3.0.0", - "content-disposition": "0.5.2", - "fast-url-parser": "1.1.3", - "mime-types": "2.1.18", - "minimatch": "3.0.4", - "path-is-inside": "1.0.2", - "path-to-regexp": "2.2.1", - "range-parser": "1.2.0" - }, - "dependencies": { - "content-disposition": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" - }, - "mime-db": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" - }, - "mime-types": { - "version": "2.1.18", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", - "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", - "requires": { - "mime-db": "~1.33.0" - } - }, - "path-to-regexp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz", - "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==" - }, - "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" - } - } - }, - "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=", - "dev": true - }, - "set-getter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/set-getter/-/set-getter-0.1.1.tgz", - "integrity": "sha512-9sVWOy+gthr+0G9DzqqLaYNA7+5OKkSmcqjL9cBpDEaZrr3ShQlyX2cZ/O/ozE41oxn/Tt0LGEM/w4Rub3A3gw==", - "requires": { - "to-object-path": "^0.3.0" - } - }, - "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" - } - }, - "shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "requires": { - "kind-of": "^6.0.2" - } - }, - "shallowequal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", - "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" - }, - "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.4", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz", - "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==", - "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - } - }, - "should": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/should/-/should-13.2.3.tgz", - "integrity": "sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ==", - "requires": { - "should-equal": "^2.0.0", - "should-format": "^3.0.3", - "should-type": "^1.4.0", - "should-type-adaptors": "^1.0.1", - "should-util": "^1.0.0" - } - }, - "should-equal": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/should-equal/-/should-equal-2.0.0.tgz", - "integrity": "sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA==", - "requires": { - "should-type": "^1.4.0" - } - }, - "should-format": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/should-format/-/should-format-3.0.3.tgz", - "integrity": "sha1-m/yPdPo5IFxT04w01xcwPidxJPE=", - "requires": { - "should-type": "^1.3.0", - "should-type-adaptors": "^1.0.1" - } - }, - "should-type": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/should-type/-/should-type-1.4.0.tgz", - "integrity": "sha1-B1bYzoRt/QmEOmlHcZ36DUz/XPM=" - }, - "should-type-adaptors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/should-type-adaptors/-/should-type-adaptors-1.1.0.tgz", - "integrity": "sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA==", - "requires": { - "should-type": "^1.3.0", - "should-util": "^1.0.0" - } - }, - "should-util": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/should-util/-/should-util-1.0.1.tgz", - "integrity": "sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g==" - }, - "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" - }, - "sirv": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.12.tgz", - "integrity": "sha512-+jQoCxndz7L2tqQL4ZyzfDhky0W/4ZJip3XoOuxyQWnAwMxindLl3Xv1qT4x1YX/re0leShvTm8Uk0kQspGhBg==", - "requires": { - "@polka/url": "^1.0.0-next.15", - "mime": "^2.3.1", - "totalist": "^1.0.0" - }, - "dependencies": { - "mime": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", - "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==" - } - } - }, - "sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" - }, - "sitemap": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-7.0.0.tgz", - "integrity": "sha512-Ud0jrRQO2k7fEtPAM+cQkBKoMvxQyPKNXKDLn8tRVHxRCsdDQ2JZvw+aZ5IRYYQVAV9iGxEar6boTwZzev+x3g==", - "requires": { - "@types/node": "^15.0.1", - "@types/sax": "^1.2.1", - "arg": "^5.0.0", - "sax": "^1.2.4" - }, - "dependencies": { - "@types/node": { - "version": "15.14.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-15.14.1.tgz", - "integrity": "sha512-wF6hazbsnwaW3GhK4jFuw5NaLDQVRQ6pWQUGAUrJzxixFkTaODSiAKMPXuHwPEPkAKQWHAzj6uJ5h+3zU9gQxg==" - } - } - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" - }, - "slugify": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.4.7.tgz", - "integrity": "sha512-tf+h5W1IrjNm/9rKKj0JU2MDMruiopx0jjVA5zCdBtcGjfp0+c5rHw/zADLC3IeKlGHtVbHtpfzvYA0OYT+HKg==" - }, - "sockjs": { - "version": "0.3.21", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", - "integrity": "sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==", - "requires": { - "faye-websocket": "^0.11.3", - "uuid": "^3.4.0", - "websocket-driver": "^0.7.4" - } - }, - "sort-css-media-queries": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/sort-css-media-queries/-/sort-css-media-queries-2.0.4.tgz", - "integrity": "sha512-PAIsEK/XupCQwitjv7XxoMvYhT7EAfyzI3hsy/MyDgTvc+Ft55ctdkctJLOy6cQejaIC+zjpUL4djFVm2ivOOw==" - }, - "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-js": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", - "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==" - }, - "source-map-support": { - "version": "0.5.20", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", - "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", - "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==" - } - } - }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" - }, - "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==" - }, - "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz", - "integrity": "sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ==", - "dev": true - }, - "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": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", - "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", - "dev": true, - "requires": { - "through": "2" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, - "stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" - }, - "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==" - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" - }, - "std-env": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-2.3.0.tgz", - "integrity": "sha512-4qT5B45+Kjef2Z6pE0BkskzsH0GO7GrND0wGlTM1ioUe3v0dGYx9ZJH0Aro/YyA8fqQ5EyIKDRjZojJYMFTflw==", - "requires": { - "ci-info": "^3.0.0" - } - }, - "stickyfill": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stickyfill/-/stickyfill-1.1.1.tgz", - "integrity": "sha1-OUE/7p0CXHSn5ZzuyyN4TMDxfwI=" - }, - "stream-browserify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", - "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", - "requires": { - "inherits": "~2.0.4", - "readable-stream": "^3.5.0" - } - }, - "stream-combiner": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", - "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", - "dev": true, - "requires": { - "duplexer": "~0.1.1" - } - }, - "stream-http": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", - "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "xtend": "^4.0.2" - } - }, - "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.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - } - } - }, - "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "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==" - } - } - }, - "string.prototype.padend": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.2.tgz", - "integrity": "sha512-/AQFLdYvePENU3W5rgurfWSMU6n+Ww8n/3cUt7E+vPBB/D7YDG8x+qjoFs4M/alR2bW7Qg6xMjVwWUOvuQ0XpQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" - } - }, - "string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "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" - } - }, - "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" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - }, - "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=", - "dev": true - }, - "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==" - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" - }, - "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" - } - }, - "styled-components": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.3.0.tgz", - "integrity": "sha512-bPJKwZCHjJPf/hwTJl6TbkSZg/3evha+XPEizrZUGb535jLImwDUdjTNxXqjjaASt2M4qO4AVfoHJNe3XB/tpQ==", - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/traverse": "^7.4.5", - "@emotion/is-prop-valid": "^0.8.8", - "@emotion/stylis": "^0.8.4", - "@emotion/unitless": "^0.7.4", - "babel-plugin-styled-components": ">= 1.12.0", - "css-to-react-native": "^3.0.0", - "hoist-non-react-statics": "^3.0.0", - "shallowequal": "^1.1.0", - "supports-color": "^5.5.0" - }, - "dependencies": { - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "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" - } - } - } - }, - "stylehacks": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.0.1.tgz", - "integrity": "sha512-Es0rVnHIqbWzveU1b24kbw92HsebBepxfcqe5iix7t9j0PQqhs0IxXVXv0pY2Bxa08CgMkzD6OWql7kbGOuEdA==", - "requires": { - "browserslist": "^4.16.0", - "postcss-selector-parser": "^6.0.4" - } - }, - "stylis": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.13.tgz", - "integrity": "sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag==" - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - }, - "svg-parser": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", - "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==" - }, - "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": { - "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" - } - }, - "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" - } - }, - "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": "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=" - }, - "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.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==" - }, - "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" - } - }, - "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=" - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "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" - } - }, - "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" - } - } - } - }, - "swagger2openapi": { - "version": "7.0.7", - "resolved": "https://registry.npmjs.org/swagger2openapi/-/swagger2openapi-7.0.7.tgz", - "integrity": "sha512-uQMHn9Q1gOte13xarNTRtK00K3VgoLydwB3QMHcEptp8e8Q/idynMq+n1gTTf6U9BVcjfrbKXUpfyv/z/RLvQA==", - "requires": { - "call-me-maybe": "^1.0.1", - "node-fetch": "^2.6.1", - "node-fetch-h2": "^2.3.0", - "node-readfiles": "^0.2.0", - "oas-kit-common": "^1.0.8", - "oas-resolver": "^2.5.5", - "oas-schema-walker": "^1.1.5", - "oas-validator": "^5.0.7", - "reftools": "^1.1.8", - "yaml": "^1.10.0", - "yargs": "^17.0.1" - }, - "dependencies": { - "yargs": { - "version": "17.0.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.0.1.tgz", - "integrity": "sha512-xBBulfCc8Y6gLFcrPvtqKz9hz8SO0l1Ni8GgDekvBX2ro0HRQImDGnikfc33cgzcYUSncapnNcZDjVFIH3f6KQ==", - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - } - } - }, - "sync-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/sync-request/-/sync-request-6.1.0.tgz", - "integrity": "sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw==", - "requires": { - "http-response-object": "^3.0.1", - "sync-rpc": "^1.2.1", - "then-request": "^6.0.0" - } - }, - "sync-rpc": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/sync-rpc/-/sync-rpc-1.3.6.tgz", - "integrity": "sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw==", - "requires": { - "get-port": "^3.1.0" - } - }, - "tapable": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", - "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==" - }, - "terser": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz", - "integrity": "sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==", - "requires": { - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.20" - }, - "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.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" - } - } - }, - "terser-webpack-plugin": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.2.4.tgz", - "integrity": "sha512-E2CkNMN+1cho04YpdANyRrn8CyN4yMy+WdFKZIySFZrGXZxJwJP6PMNGGc/Mcr6qygQHUUqRxnAPmi0M9f00XA==", - "requires": { - "jest-worker": "^27.0.6", - "p-limit": "^3.1.0", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1", - "terser": "^5.7.2" - }, - "dependencies": { - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" - }, - "then-request": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/then-request/-/then-request-6.0.2.tgz", - "integrity": "sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA==", - "requires": { - "@types/concat-stream": "^1.6.0", - "@types/form-data": "0.0.33", - "@types/node": "^8.0.0", - "@types/qs": "^6.2.31", - "caseless": "~0.12.0", - "concat-stream": "^1.6.0", - "form-data": "^2.2.0", - "http-basic": "^8.1.1", - "http-response-object": "^3.0.1", - "promise": "^8.0.0", - "qs": "^6.4.0" - }, - "dependencies": { - "@types/node": { - "version": "8.10.66", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz", - "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==" - } - } - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "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.12", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", - "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", - "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-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==" - }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" - }, - "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-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" - }, - "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==" - }, - "totalist": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz", - "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==" - }, - "trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=" - }, - "trim-leading-lines": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/trim-leading-lines/-/trim-leading-lines-0.1.1.tgz", - "integrity": "sha1-DnysPoMELc+Vp07TaWbxd0TVwWk=", - "requires": { - "is-whitespace": "^0.3.0" - } - }, - "trim-trailing-lines": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz", - "integrity": "sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==" - }, - "trough": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", - "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==" - }, - "tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" - }, - "tty-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", - "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==" - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" - }, - "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=" - }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "requires": { - "is-typedarray": "^1.0.0" - } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "peer": true - }, - "uc.micro": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", - "dev": true - }, - "unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", - "requires": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", - "which-boxed-primitive": "^1.0.2" - } - }, - "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": "9.2.0", - "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", - "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", - "requires": { - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^2.0.0", - "trough": "^1.0.0", - "vfile": "^4.0.0" - }, - "dependencies": { - "is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==" - } - } - }, - "uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=" - }, - "unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "requires": { - "crypto-random-string": "^2.0.0" - } - }, - "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.6", - "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz", - "integrity": "sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==" - }, - "unist-util-is": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", - "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==" - }, - "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": "2.1.0", - "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-2.1.0.tgz", - "integrity": "sha512-J8NYPyBm4baYLdCbjmf1bhPu45Cr1MWTm77qd9istEkzWpnN6O9tMsEbB2JhNnBCqGENRqEWomQ+He6au0B27Q==", - "requires": { - "unist-util-is": "^4.0.0" - } - }, - "unist-util-remove-position": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz", - "integrity": "sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==", - "requires": { - "unist-util-visit": "^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.3", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", - "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0", - "unist-util-visit-parents": "^3.0.0" - } - }, - "unist-util-visit-parents": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", - "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0" - } - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" - }, - "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=" - }, - "untildify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==" - }, - "update-notifier": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", - "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", - "requires": { - "boxen": "^5.0.0", - "chalk": "^4.1.0", - "configstore": "^5.0.1", - "has-yarn": "^2.1.0", - "import-lazy": "^2.1.0", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.4.0", - "is-npm": "^5.0.0", - "is-yarn-global": "^0.3.0", - "latest-version": "^5.1.0", - "pupa": "^2.1.1", - "semver": "^7.3.4", - "semver-diff": "^3.1.1", - "xdg-basedir": "^4.0.0" - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "requires": { - "punycode": "^2.1.0" - } - }, - "urijs": { - "version": "1.19.7", - "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.7.tgz", - "integrity": "sha512-Id+IKjdU0Hx+7Zx717jwLPsPeUqz7rAtuVBRLLs+qn+J2nf9NGITWVCxcijgYxBqe83C7sqsQPs6H1pyz3x9gA==", - "dev": true - }, - "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" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" - } - } - }, - "url-loader": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", - "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", - "requires": { - "loader-utils": "^2.0.0", - "mime-types": "^2.1.27", - "schema-utils": "^3.0.0" - }, - "dependencies": { - "loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "schema-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", - "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", - "requires": { - "@types/json-schema": "^7.0.7", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "requires": { - "prepend-http": "^2.0.0" - } - }, - "url-template": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", - "integrity": "sha1-/FZaPMy/93MMd19WQflVV5FDnyE=" - }, - "util": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz", - "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==", - "requires": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "safe-buffer": "^5.1.2", - "which-typed-array": "^1.1.2" - } - }, - "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.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" - } - }, - "utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=" - }, - "utility-types": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz", - "integrity": "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==" - }, - "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==" - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "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==" - }, - "vfile": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", - "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", - "requires": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^2.0.0", - "vfile-message": "^2.0.0" - }, - "dependencies": { - "is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==" - } - } - }, - "vfile-location": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz", - "integrity": "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==" - }, - "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-on": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-6.0.0.tgz", - "integrity": "sha512-tnUJr9p5r+bEYXPUdRseolmz5XqJTTj98JgOsfBn7Oz2dxfE2g3zw1jE+Mo8lopM3j3et/Mq1yW7kKX6qw7RVw==", - "requires": { - "axios": "^0.21.1", - "joi": "^17.4.0", - "lodash": "^4.17.21", - "minimist": "^1.2.5", - "rxjs": "^7.1.0" - } - }, - "watchpack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.2.0.tgz", - "integrity": "sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA==", - "requires": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - } - }, - "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==" - }, - "webpack": { - "version": "5.61.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.61.0.tgz", - "integrity": "sha512-fPdTuaYZ/GMGFm4WrPi2KRCqS1vDp773kj9S0iI5Uc//5cszsFEDgHNaX4Rj1vobUiU1dFIV3mA9k1eHeluFpw==", - "requires": { - "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.50", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.8.3", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.4", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.2.0", - "webpack-sources": "^3.2.0" - }, - "dependencies": { - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" - }, - "schema-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", - "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", - "requires": { - "@types/json-schema": "^7.0.7", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - }, - "webpack-sources": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.1.tgz", - "integrity": "sha512-t6BMVLQ0AkjBOoRTZgqrWm7xbXMBzD+XDq2EZ96+vMfn3qKgsvdXZhbPZ4ElUOpdv4u+iiGe+w3+J75iy/bYGA==" - } - } - }, - "webpack-bundle-analyzer": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.4.2.tgz", - "integrity": "sha512-PIagMYhlEzFfhMYOzs5gFT55DkUdkyrJi/SxJp8EF3YMWhS+T9vvs2EoTetpk5qb6VsCq02eXTlRDOydRhDFAQ==", - "requires": { - "acorn": "^8.0.4", - "acorn-walk": "^8.0.0", - "chalk": "^4.1.0", - "commander": "^6.2.0", - "gzip-size": "^6.0.0", - "lodash": "^4.17.20", - "opener": "^1.5.2", - "sirv": "^1.0.7", - "ws": "^7.3.1" - }, - "dependencies": { - "commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==" - }, - "gzip-size": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", - "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", - "requires": { - "duplexer": "^0.1.2" - } - } - } - }, - "webpack-dev-middleware": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.2.1.tgz", - "integrity": "sha512-Kx1X+36Rn9JaZcQMrJ7qN3PMAuKmEDD9ZISjUj3Cgq4A6PtwYsC4mpaKotSRYH3iOF6HsUa8viHKS59FlyVifQ==", - "requires": { - "colorette": "^2.0.10", - "memfs": "^3.2.2", - "mime-types": "^2.1.31", - "range-parser": "^1.2.1", - "schema-utils": "^3.1.0" - }, - "dependencies": { - "colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==" - }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "webpack-dev-server": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.4.0.tgz", - "integrity": "sha512-+S0XRIbsopVjPFjCO8I07FXYBWYqkFmuP56ucGMTs2hA/gV4q2M9xTmNo5Tg4o8ffRR+Nm3AsXnQXxKRyYovrA==", - "requires": { - "ansi-html-community": "^0.0.8", - "bonjour": "^3.5.0", - "chokidar": "^3.5.2", - "colorette": "^2.0.10", - "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", - "del": "^6.0.0", - "express": "^4.17.1", - "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.0", - "internal-ip": "^6.2.0", - "ipaddr.js": "^2.0.1", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "portfinder": "^1.0.28", - "schema-utils": "^3.1.0", - "selfsigned": "^1.10.11", - "serve-index": "^1.9.1", - "sockjs": "^0.3.21", - "spdy": "^4.0.2", - "strip-ansi": "^7.0.0", - "url": "^0.11.0", - "webpack-dev-middleware": "^5.2.1", - "ws": "^8.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" - }, - "colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==" - }, - "open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", - "requires": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - } - }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - }, - "strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "requires": { - "ansi-regex": "^6.0.1" - } - }, - "ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", - "requires": {} - } - } - }, - "webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "requires": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - } - }, - "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": "5.0.0-3", - "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-5.0.0-3.tgz", - "integrity": "sha512-viW6KCYjMb0NPoDrw2jAmLXU2dEOhRrtku28KmOfeE1vxbfwCYuTbTaMhnkrCZLFAFyY9Q49Z/jzYO80Dw5b8g==", - "requires": { - "ansi-escapes": "^4.3.1", - "chalk": "^4.1.0", - "consola": "^2.15.0", - "figures": "^3.2.0", - "pretty-time": "^1.1.0", - "std-env": "^2.2.1", - "text-table": "^0.2.0", - "wrap-ansi": "^7.0.0" - } - }, - "websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "requires": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - } - }, - "websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" - }, - "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-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "which-typed-array": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.4.tgz", - "integrity": "sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA==", - "requires": { - "available-typed-arrays": "^1.0.2", - "call-bind": "^1.0.0", - "es-abstract": "^1.18.0-next.1", - "foreach": "^2.0.5", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.1", - "is-typed-array": "^1.1.3" - } - }, - "widdershins": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/widdershins/-/widdershins-4.0.1.tgz", - "integrity": "sha512-y7TGynno+J/EqRPtUrpEuEjJUc1N2ajfP7R4sHU7Qg8I/VFHGavBxL7ZTeOAVmd1fhmY2wJIbpX2LMDWf37vVA==", - "dev": true, - "requires": { - "dot": "^1.1.3", - "fast-safe-stringify": "^2.0.7", - "highlightjs": "^9.12.0", - "httpsnippet": "^1.19.0", - "jgexml": "latest", - "markdown-it": "^10.0.0", - "markdown-it-emoji": "^1.4.0", - "node-fetch": "^2.0.0", - "oas-resolver": "^2.3.1", - "oas-schema-walker": "^1.1.3", - "openapi-sampler": "^1.0.0-beta.15", - "reftools": "^1.1.0", - "swagger2openapi": "^6.0.1", - "urijs": "^1.19.0", - "yaml": "^1.8.3", - "yargs": "^12.0.5" - }, - "dependencies": { - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "dev": true, - "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" - } - }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - }, - "dependencies": { - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - } - } - }, - "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", - "dev": true - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "oas-validator": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/oas-validator/-/oas-validator-4.0.8.tgz", - "integrity": "sha512-bIt8erTyclF7bkaySTtQ9sppqyVc+mAlPi7vPzCLVHJsL9nrivQjc/jHLX/o+eGbxHd6a6YBwuY/Vxa6wGsiuw==", - "dev": true, - "requires": { - "ajv": "^5.5.2", - "better-ajv-errors": "^0.6.7", - "call-me-maybe": "^1.0.1", - "oas-kit-common": "^1.0.8", - "oas-linter": "^3.1.3", - "oas-resolver": "^2.4.3", - "oas-schema-walker": "^1.1.5", - "reftools": "^1.1.5", - "should": "^13.2.1", - "yaml": "^1.8.3" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "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==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "swagger2openapi": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/swagger2openapi/-/swagger2openapi-6.2.3.tgz", - "integrity": "sha512-cUUktzLpK69UwpMbcTzjMw2ns9RZChfxh56AHv6+hTx3StPOX2foZjPgds3HlJcINbxosYYBn/D3cG8nwcCWwQ==", - "dev": true, - "requires": { - "better-ajv-errors": "^0.6.1", - "call-me-maybe": "^1.0.1", - "node-fetch-h2": "^2.3.0", - "node-readfiles": "^0.2.0", - "oas-kit-common": "^1.0.8", - "oas-resolver": "^2.4.3", - "oas-schema-walker": "^1.1.5", - "oas-validator": "^4.0.8", - "reftools": "^1.1.5", - "yaml": "^1.8.3", - "yargs": "^15.3.1" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^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==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - } - }, - "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "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=", - "dev": true, - "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=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", - "dev": true, - "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": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "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==", - "dev": true - }, - "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=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.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==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, - "widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", - "requires": { - "string-width": "^4.0.0" - } - }, - "wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==" - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "ws": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.2.tgz", - "integrity": "sha512-lkF7AWRicoB9mAgjeKbGqVUekLnSNO4VjKVnuPHpQeOxZOErX6BPXwJk70nFslRCEEA8EVW7ZjKwXaP9N+1sKQ==", - "requires": {} - }, - "xdg-basedir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==" - }, - "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" - } - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" - }, - "yaml-ast-parser": { - "version": "0.0.43", - "resolved": "https://registry.npmjs.org/yaml-ast-parser/-/yaml-ast-parser-0.0.43.tgz", - "integrity": "sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==" - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" - }, - "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 deleted file mode 100644 index f486357bb..000000000 --- a/docs/package.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "name": "docusaurus-template", - "version": "0.0.0", - "private": true, - "prettier": "ory-prettier-styles", - "config": { - "prettierTarget": "{docs/**,docs/,scripts/,static/,contrib/,src/,src/**/,}*.{md,mdx,json,js,css,html}" - }, - "scripts": { - "gen": "npm-run-all gen:*", - "docusaurus": "docusaurus", - "gen:api": "mkdir -p docs/.static && cp ../spec/api.json docs/.static/api.json", - "gen:config": "node ./scripts/config.js config.js", - "start": "docusaurus start", - "build": "docusaurus build", - "swizzle": "docusaurus swizzle", - "serve": "docusaurus serve", - "deploy": "docusaurus deploy", - "format": "prettier --write ${npm_package_config_prettierTarget}", - "format:check": "prettier --check ${npm_package_config_prettierTarget}" - }, - "dependencies": { - "@docusaurus/core": "2.0.0-beta.9", - "@docusaurus/plugin-content-docs": "2.0.0-beta.9", - "@docusaurus/plugin-content-pages": "2.0.0-beta.9", - "@docusaurus/plugin-sitemap": "2.0.0-beta.9", - "@docusaurus/theme-classic": "2.0.0-beta.9", - "@docusaurus/theme-search-algolia": "2.0.0-beta.9", - "classnames": "2.3.1", - "file-loader": "6.2.0", - "mermaid": "8.13.8", - "node-fetch": "2.6.1", - "parser-front-matter": "1.6.4", - "prism-react-renderer": "1.2.1", - "prismjs": "1.24.1", - "react": "17.0.2", - "react-dom": "17.0.2", - "redocusaurus": "0.4.4", - "sync-request": "6.1.0", - "url-loader": "4.1.1" - }, - "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.35", - "json-schema-ref-parser": "9.0.9", - "npm-run-all": "^4.1.5", - "ory-prettier-styles": "1.1.2", - "prettier": "2.3.2", - "ramda": "0.27.1", - "raw-loader": "4.0.2", - "remark-admonitions": "1.2.1", - "remarkable": "2.0.1", - "widdershins": "4.0.1", - "yaml": "1.10.2" - } -} diff --git a/docs/scripts/config.js b/docs/scripts/config.js deleted file mode 100644 index ce2bc434d..000000000 --- a/docs/scripts/config.js +++ /dev/null @@ -1,266 +0,0 @@ -const RefParser = require('json-schema-ref-parser') -const parser = new RefParser() -const jsf = require('json-schema-faker').default -const YAML = require('yaml') -const { pathOr } = require('ramda') -const path = require('path') -const fs = require('fs') -const prettier = require('prettier') -const prettierStyles = require('ory-prettier-styles') -const { execSync } = require('child_process') -const fetch = require('node-fetch') - -const oryXVersion = execSync( - "cd ..; go list -f '{{.Version}}' -m github.com/ory/x" -) - .toString('utf-8') - .trim() - -const refs = { - 'ory://tracing-config': `https://raw.githubusercontent.com/ory/x/${oryXVersion}/tracing/config.schema.json`, - 'ory://logging-config': `https://raw.githubusercontent.com/ory/x/${oryXVersion}/logrusx/config.schema.json` -} - -const oryResolver = { - order: 1, - canRead: /^ory:/i, - read: ({ url }) => fetch(refs[url]).then((res) => res.json()) -} - -jsf.option({ - alwaysFakeOptionals: true, - useExamplesValue: true, - useDefaultValue: true, - minItems: 1, - random: () => 0 -}) - -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 enums = pathOr('', [...path, 'enum'], schema) - if (enums && Array.isArray(enums)) { - comments.push( - ' One of:', - ...YAML.stringify(enums) - .split('\n') - .map((i) => ` ${i}`) - ) // split always returns one empty object so no need for newline - } - - const min = pathOr('', [...path, 'minimum'], schema) - if (min || min === 0) { - comments.push(` Minimum value: ${min}`, '') - } - - const max = pathOr('', [...path, 'maximum'], schema) - if (max || max === 0) { - comments.push(` Maximum value: ${max}`, '') - } - - 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 - } - }) - } - - const showEnvVarBlockForObject = pathOr( - '', - [...path, 'showEnvVarBlockForObject'], - schema - ) - if (!hasChildren || showEnvVarBlockForObject) { - 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}=`, - '' - ) - - // Show this if the config property is an object, to call out how to specify the env var - if (hasChildren) { - comments.push( - ' This can be set as an environment variable by supplying it as a JSON object.', - '' - ) - } - } - - item.commentBefore = comments.join('\n') - item.spaceBefore = true - } - -new Promise((resolve, reject) => { - parser.dereference( - require(path.resolve(config.updateConfig.src)), - { - resolve: { - ory: oryResolver - } - }, - (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 ---- - - - -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. - -:::warning Disclaimer - -This reference configuration documents all keys, also deprecated ones! -It is a reference for all possible configuration values. - -If you are looking for an example configuration, it is better to try out the quickstart. - -::: - -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), - prettier.format(content, { ...prettierStyles, parser: 'markdown' }), - '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 deleted file mode 100644 index a023ce637..000000000 --- a/docs/scripts/docker-tag.js +++ /dev/null @@ -1,51 +0,0 @@ -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) => { - const content = fs.readFileSync(path, 'utf8') - const updated = replacer(content) - fs.unlinkSync(path) - fs.writeFileSync(path, updated, 'utf8') -} - -config.updateTags.forEach(({ files, image, replacer }) => { - files.forEach((loc) => { - replace(loc, (content) => { - if (replacer) { - return replacer({ - content, - next, - semverRegex: /v[0-9]\.[0-9]\.[0-9](-([0-9a-zA-Z.\-]+)|)/gi - }) - } - - return content.replace( - new RegExp(`${image}:v[0-9a-zA-Z.+_-]+`, 'gi'), - `${image}:${next}` - ) - }) - console.log('Processed file:', loc) - }) -}) diff --git a/docs/scripts/fix-api.js b/docs/scripts/fix-api.js deleted file mode 100644 index efb13a60a..000000000 --- a/docs/scripts/fix-api.js +++ /dev/null @@ -1,55 +0,0 @@ -const fs = require('fs') -const prettier = require('prettier') -const prettierStyles = require('ory-prettier-styles') - -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(/
/g, '
', -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, - prettier.format(t, { ...prettierStyles, parser: 'mdx' }), - (err) => { - if (err) { - throw err - } - } - ) -}) diff --git a/docs/scripts/gen-faq.js b/docs/scripts/gen-faq.js deleted file mode 100644 index e90e4485f..000000000 --- a/docs/scripts/gen-faq.js +++ /dev/null @@ -1,105 +0,0 @@ -// gen-faq.js -// generates faq.mdx and faq.module.css from the contents of faq.yaml. See https://github.com/ory/kratos/pull/1039. -const fs = require('fs') -const yaml = require('js-yaml') -const { Remarkable } = require('remarkable') -const path = require('path') -const yamlPath = path.resolve('./faq.yaml') -const prettier = require('prettier') -const prettierStyles = require('ory-prettier-styles') -const config = require('../contrib/config.js') - -// Generating FAQ.mdx - -if (!fs.existsSync(yamlPath)) { - //file exists - console.warn('faq.yaml File does not exists, skipping generating FAQ') - return 0 -} - -const faqYaml = fs.readFileSync(yamlPath, 'utf8') -const faq = yaml.load(faqYaml) - -const tags = Array.from(new Set(faq.map(({ tags }) => tags).flat(1))) - -// which project are we running in? -const project = config.projectSlug - -let markdownPage = `--- -id: faq -title: Frequently Asked Questions (FAQ) ---- - - - - -import {Question, FaqTags} from '@theme/Faq' - - -

- -` -md = new Remarkable() -faq.forEach((el) => { - markdownPage += `\n` - markdownPage += `${el.tags - .map((tag) => { - return '#' + tag - }) - .join(' ')} -` - markdownPage += md.render(`**Q**: ${el.q}`) - markdownPage += md.render(`**A**: ${el.a}`) - if (el.context) { - markdownPage += md.render(`context: ${el.context}`) - } - markdownPage += ` - -
-` -}) - -fs.writeFileSync( - path.resolve('./docs/faq.mdx'), - prettier.format(markdownPage, { ...prettierStyles, parser: 'mdx' }) -) - -// Generating faq.module.css -const tagList = Array.from( - new Set( - faq - .map((el) => { - return el.tags - }) - .flat(1) - ) -) - -let generatedCSS = ` -.selected { - background-color: #ffba00; -} - -div.question { - display: none; -} -` - -tagList.forEach((tag) => { - generatedCSS += ` -li.selected.${tag} { - color:red; -} - -li.selected.${tag}~.question.${tag} { - display: inline; -} -` -}) - -fs.writeFileSync( - './src/theme/faq.gen.module.css', - prettier.format(generatedCSS, { ...prettierStyles, parser: 'css' }) -) diff --git a/docs/scripts/rerelease.js b/docs/scripts/rerelease.js deleted file mode 100644 index 1d42fde41..000000000 --- a/docs/scripts/rerelease.js +++ /dev/null @@ -1,15 +0,0 @@ -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.json b/docs/sidebar.json deleted file mode 100644 index d2c991ac9..000000000 --- a/docs/sidebar.json +++ /dev/null @@ -1,76 +0,0 @@ -[ - { - "Introduction": [ - "index", - "install", - "implemented-planned-features", - "performance", - "quickstart" - ] - }, - { - "Concepts": [ - "concepts/relation-tuples", - "concepts/namespaces", - "concepts/objects", - "concepts/subjects", - "concepts/graph-of-relations", - "concepts/api-overview", - "concepts/internal-algorithms", - "concepts/snaptokens-evaluation-consistency" - ] - }, - { - "Guides": [ - "secure", - "guides/simple-access-check-guide", - "guides/list-api-display-objects", - "guides/expand-api-display-who-has-access", - "guides/production", - "guides/v0.7-migration", - "guides/rbac", - "guides/access-control-inheritance", - "guides/access-control-list-design-best-practices" - ] - }, - { - "Examples": ["examples/olymp-file-sharing"] - }, - { - "Reference": [ - "reference/configuration", - "reference/rest-api", - "reference/proto-api", - { - "Command Line Interface (CLI)": [ - "cli/keto", - "cli/keto-check", - "cli/keto-expand", - "cli/keto-migrate", - "cli/keto-migrate-down", - "cli/keto-migrate-status", - "cli/keto-migrate-up", - "cli/keto-namespace", - "cli/keto-namespace-migrate", - "cli/keto-namespace-migrate-legacy", - "cli/keto-namespace-validate", - "cli/keto-relation-tuple", - "cli/keto-relation-tuple-create", - "cli/keto-relation-tuple-delete", - "cli/keto-relation-tuple-delete-all", - "cli/keto-relation-tuple-get", - "cli/keto-relation-tuple-parse", - "cli/keto-serve", - "cli/keto-status", - "cli/keto-version" - ] - } - ] - }, - { - "SDKs": ["sdk/index"] - }, - { - "Development": ["milestones"] - } -] diff --git a/docs/src/css/.gitkeep b/docs/src/css/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/docs/src/css/theme.css b/docs/src/css/theme.css deleted file mode 100644 index fde8a975b..000000000 --- a/docs/src/css/theme.css +++ /dev/null @@ -1,18 +0,0 @@ -/* 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/http-api.js b/docs/src/pages/http-api.js deleted file mode 100644 index 1266b4e62..000000000 --- a/docs/src/pages/http-api.js +++ /dev/null @@ -1,27 +0,0 @@ -import React from 'react' -import ApiDoc from '@theme/ApiDoc' -import useBaseUrl from '@docusaurus/useBaseUrl' -import { useActiveVersion } from '@theme/hooks/useDocs' -import { Redirect } from '@docusaurus/router' -import config from '../../config' - -function CustomPage() { - const { path } = useActiveVersion() - if (!config.enableRedoc) { - return - } - return ( - - ) -} - -export default CustomPage diff --git a/docs/src/pages/versions.js b/docs/src/pages/versions.js deleted file mode 100644 index 044bc4561..000000000 --- a/docs/src/pages/versions.js +++ /dev/null @@ -1,107 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -import React from 'react' -import useDocusaurusContext from '@docusaurus/useDocusaurusContext' -import Link from '@docusaurus/Link' -import Layout from '@theme/Layout' - -import { useVersions, useLatestVersion } from '@theme/hooks/useDocs' - -function capitalizeFirstLetter(string) { - return string.charAt(0).toUpperCase() + string.slice(1) -} - -function Version() { - const { siteConfig } = useDocusaurusContext() - const versions = useVersions() - const latestVersion = useLatestVersion() - const currentVersion = versions.find((version) => version.name === 'current') - const pastVersions = versions.filter( - (version) => version !== latestVersion && version.name !== 'current' - ) - const repoUrl = `https://github.com/${siteConfig.organizationName}/${siteConfig.projectName}` - const project = `ORY ${capitalizeFirstLetter(siteConfig.projectName)}` - - return ( - -
-

{project} documentation versions

- -
-

Current version (Stable)

-

- Here you can find the documentation for current released version. -

- - - - - - - - -
{latestVersion.name} - Documentation - - Changelog -
-
- - {currentVersion !== latestVersion && ( -
-

Next version (Unreleased)

-

Here you can find the documentation for unreleased version.

- - - - - - - - -
next - Documentation - - Source Code -
-
- )} - - {pastVersions.length > 0 && ( -
-

Past versions (Not maintained anymore)

-

Here you can find documentation for previous versions.

- - - {pastVersions.map((version) => ( - - - - - - ))} - -
{version.label} - Documentation - - - Changelog - -
-
- )} -
-
- ) -} - -export default Version diff --git a/docs/src/plugins/docusaurus-plugin-matamo/analytics.js b/docs/src/plugins/docusaurus-plugin-matamo/analytics.js deleted file mode 100644 index e0dc03963..000000000 --- a/docs/src/plugins/docusaurus-plugin-matamo/analytics.js +++ /dev/null @@ -1,36 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -import ExecutionEnvironment from '@docusaurus/ExecutionEnvironment' - -export default (function () { - if (!ExecutionEnvironment.canUseDOM) { - return null - } - - let lastLocation = window.location.pathname - return { - onRouteUpdate({ location }) { - if (!window._paq) { - return - } - - const pagePath = location - ? location.pathname + location.search + location.hash - : undefined - - if (lastLocation === location.pathname) { - return - } - lastLocation = location.pathname - - _paq.push(['setCustomUrl', pagePath]) - _paq.push(['setDocumentTitle', document.domain + '/' + document.title]) - _paq.push(['trackPageView']) - } - } -})() diff --git a/docs/src/plugins/docusaurus-plugin-matamo/index.js b/docs/src/plugins/docusaurus-plugin-matamo/index.js deleted file mode 100644 index 01a0aa1a2..000000000 --- a/docs/src/plugins/docusaurus-plugin-matamo/index.js +++ /dev/null @@ -1,47 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -const path = require('path') - -module.exports = function (context) { - return { - name: 'docusaurus-plugin-matamo', - - getClientModules() { - return [path.resolve(__dirname, './analytics')] - }, - - injectHtmlTags() { - return { - postBodyTags: [ - `` - ], - headTags: [ - { - tagName: 'script', - innerHTML: ` -var _paq = window._paq = window._paq || []; -/* tracker methods like "setCustomDimension" should be called before "trackPageView" */ -_paq.push(["setDocumentTitle", document.domain + "/" + document.title]); -_paq.push(["setCookieDomain", "*.ory.sh"]); -_paq.push(["disableCookies"]); -_paq.push(['trackPageView']); -_paq.push(['enableLinkTracking']); -(function() { - var u="//sqa-web.ory.sh/"; - _paq.push(['setTrackerUrl', u+'np.php']); - _paq.push(['setSiteId', '2']); - var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; - g.type='text/javascript'; g.async=true; g.src=u+'js/np.min.js'; s.parentNode.insertBefore(g,s); -})(); -` - } - ] - } - } - } -} diff --git a/docs/src/plugins/docusaurus-plugin-matamo/package.json b/docs/src/plugins/docusaurus-plugin-matamo/package.json deleted file mode 100644 index 982187e91..000000000 --- a/docs/src/plugins/docusaurus-plugin-matamo/package.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "main": "index.js", - "name": "docusaurus-plugin-matamo" -} diff --git a/docs/src/plugins/ory-scripts-loader/index.js b/docs/src/plugins/ory-scripts-loader/index.js deleted file mode 100644 index 0a0e0372b..000000000 --- a/docs/src/plugins/ory-scripts-loader/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const path = require('path') - -module.exports = function (context) { - return { - name: 'docusaurus-plugin-ory-web-script', - - // https://docusaurus.io/docs/api/plugin-methods/lifecycle-apis#injectHtmlTags - injectHtmlTags({ content }) { - return { - postBodyTags: [ - '' - ] - } - } - } -} diff --git a/docs/src/plugins/ory-scripts-loader/ory-scripts-loader.js b/docs/src/plugins/ory-scripts-loader/ory-scripts-loader.js deleted file mode 100644 index 760af0175..000000000 --- a/docs/src/plugins/ory-scripts-loader/ory-scripts-loader.js +++ /dev/null @@ -1,23 +0,0 @@ -import ExecutionEnvironment from '@docusaurus/ExecutionEnvironment' - -export default (function () { - if ( - !ExecutionEnvironment.canUseDOM || - process.env.NODE_ENV !== 'production' - ) { - return null - } - - const script = document.createElement('script') - script.src = 'https://www.ory.sh/scripts.js' - script.onload = () => window.initAnalytics() - document.body.appendChild(script) - - return { - onRouteUpdate() { - if (window && typeof window.initAnalytics === 'function') { - window.initAnalytics() - } - } - } -})() diff --git a/docs/src/plugins/ory-scripts-loader/package.json b/docs/src/plugins/ory-scripts-loader/package.json deleted file mode 100644 index 14ab704d8..000000000 --- a/docs/src/plugins/ory-scripts-loader/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "main": "index.js" -} diff --git a/docs/src/theme/API.js b/docs/src/theme/API.js deleted file mode 100644 index e7c2efef0..000000000 --- a/docs/src/theme/API.js +++ /dev/null @@ -1,9 +0,0 @@ -import React from 'react' -import Redoc from '@theme/Redoc' -import './API.module.css' - -function API({ spec }) { - return -} - -export default API diff --git a/docs/src/theme/API.module.css b/docs/src/theme/API.module.css deleted file mode 100644 index 58bd552b5..000000000 --- a/docs/src/theme/API.module.css +++ /dev/null @@ -1,19 +0,0 @@ -:global #route-identifier[data-route*='reference/rest-api'] .container, -:global #route-identifier[data-route*='reference/api'] .container { - width: 100% !important; - max-width: 100% !important; -} - -:global #route-identifier[data-route*='reference/rest-api'] .container .col, -:global #route-identifier[data-route*='reference/api'] .container .col { - width: 100% !important; - max-width: 100% !important; -} - -:global - #route-identifier[data-route*='reference/rest-api'] - .container - .col.col--3, -:global #route-identifier[data-route*='reference/api'] .container .col.col--3 { - display: none; -} diff --git a/docs/src/theme/CodeFromRemote.js b/docs/src/theme/CodeFromRemote.js deleted file mode 100644 index 189028c20..000000000 --- a/docs/src/theme/CodeFromRemote.js +++ /dev/null @@ -1,100 +0,0 @@ -import React, { useEffect, useState } from 'react' -import fetch from 'node-fetch' -import CodeBlock from '@theme/CodeBlock' -import styles from './CodeFromRemote.module.css' - -const detectLanguage = (src) => { - const ext = src.split('.').pop() - switch (ext) { - case 'jsx': - return 'jsx' - case 'tsx': - return 'tsx' - case 'ts': - return 'typescript' - case 'go': - return 'go' - case 'yaml': - case 'yml': - return 'yaml' - case 'js': - return 'javascript' - case 'html': - return 'html' - case 'pug': - return 'pug' - default: - return ext - } -} - -const findPath = (src) => { - const matches = - src.match( - new RegExp('https://github.com/[^/]+/[^/]+/blob/[^/]+/(.+)', 'i') - ) || [] - if (matches.length >= 2) { - return matches[1] - } - return src -} - -const findLine = (needle, haystack) => { - if (!needle) { - return 0 - } - - const index = haystack.findIndex((s) => s.indexOf(needle) > -1) - - if (index === -1) { - return 0 - } - - return index -} - -const transform = - ({ startAt, endAt }) => - (content) => { - let lines = content.split('\n') - - const startIndex = findLine(startAt, lines) - if (startIndex > 0) { - lines = ['// ...', ...lines.slice(startIndex, -1)] - } - - const endIndex = findLine(endAt, lines) - if (endIndex > 0) { - lines = [...lines.slice(0, endIndex + 1), '// ...'] - } - - return lines.join('\n') - } - -const CodeFromRemote = (props) => { - const { src, title } = props - const [content, setContent] = useState('') - - useEffect(() => { - fetch( - src - .replace('github.com', 'raw.githubusercontent.com') - .replace('/blob/', '/') - ) - .then((body) => body.text()) - .then(transform(props)) - .then(setContent) - .catch(console.error) - }, []) - - const lang = `language-${detectLanguage(src)}` - const metaString = `title="${title || findPath(src)}"` - - return ( -
- -
- ) -} - -export default CodeFromRemote diff --git a/docs/src/theme/CodeFromRemote.module.css b/docs/src/theme/CodeFromRemote.module.css deleted file mode 100644 index c3c038838..000000000 --- a/docs/src/theme/CodeFromRemote.module.css +++ /dev/null @@ -1,3 +0,0 @@ -.container { - margin-bottom: var(--ifm-leading); -} diff --git a/docs/src/theme/CodeTabs/index.js b/docs/src/theme/CodeTabs/index.js deleted file mode 100644 index d3588ae1f..000000000 --- a/docs/src/theme/CodeTabs/index.js +++ /dev/null @@ -1,45 +0,0 @@ -import React from 'react' -import Tabs from '@theme/Tabs' -import TabItem from '@theme/TabItem' -import CodeFromRemote from '../CodeFromRemote' - -const CodeTabs = ({ sampleId, version }) => ( - <> - - - - - - - - - - - - - - - - -) - -export default CodeTabs diff --git a/docs/src/theme/Faq.js b/docs/src/theme/Faq.js deleted file mode 100644 index d181720a9..000000000 --- a/docs/src/theme/Faq.js +++ /dev/null @@ -1,54 +0,0 @@ -import React, { useState } from 'react' -import cn from 'classnames' -import styles from './faq.module.css' -import genStyle from './faq.gen.module.css' - -const Question = ({ children, tags }) => ( -
genStyle[tag]))}> - {children} -
-) - -const TagButton = ({ tag, isSelected, children, toggleSelected }) => ( -
  • - {children} -
  • -) - -const FaqTags = ({ tags, initiallyDisabled }) => { - const [selectedTags, setSelectedTags] = useState( - tags.filter((t) => !initiallyDisabled.includes(t)) - ) - - return ( - <> - {tags.map((tag) => ( - t === tag)} - toggleSelected={() => { - if (selectedTags.find((t) => t === tag)) { - setSelectedTags(selectedTags.filter((t) => t !== tag)) - } else { - setSelectedTags([...selectedTags, tag]) - } - }} - > - #{tag} - - ))} - - ) -} - -export { FaqTags, Question } diff --git a/docs/src/theme/Footer/index.js b/docs/src/theme/Footer/index.js deleted file mode 100644 index f8ffeb47a..000000000 --- a/docs/src/theme/Footer/index.js +++ /dev/null @@ -1,123 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ -import React from 'react' -import clsx from 'clsx' -import Link from '@docusaurus/Link' -import { useThemeConfig } from '@docusaurus/theme-common' -import useBaseUrl from '@docusaurus/useBaseUrl' -import styles from './styles.module.css' - -function FooterLink({ to, href, label, prependBaseUrlToHref, ...props }) { - const toUrl = useBaseUrl(to) - const normalizedHref = useBaseUrl(href, { - forcePrependBaseUrl: true - }) - return ( - - {label} - - ) -} - -const FooterLogo = ({ url, alt }) => ( - {alt} -) - -function Footer() { - const { footer } = useThemeConfig() - const { copyright, links = [], logo = {} } = footer || {} - const logoUrl = useBaseUrl(logo.src) - - if (!footer) { - return null - } - - return ( -
    - ) -} - -export default Footer diff --git a/docs/src/theme/Footer/styles.module.css b/docs/src/theme/Footer/styles.module.css deleted file mode 100644 index 58c5842c8..000000000 --- a/docs/src/theme/Footer/styles.module.css +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -.footerLogoLink { - opacity: 0.5; - transition: opacity 0.15s ease-in-out; -} - -.footerLogoLink:hover { - opacity: 1; -} diff --git a/docs/src/theme/Mermaid.js b/docs/src/theme/Mermaid.js deleted file mode 100644 index f237456e5..000000000 --- a/docs/src/theme/Mermaid.js +++ /dev/null @@ -1,73 +0,0 @@ -// according to https://github.com/facebook/docusaurus/issues/1258#issuecomment-594393744 - -// use in *.mdx like: - -// import Mermaid from '@theme/Mermaid' -// -// backoffice[Backoffice Server REST] -// `}/> - -import React, { useEffect, useState } from 'react' -import mermaid from 'mermaid' -import styles from './mermaid.module.css' -import cn from 'classnames' - -mermaid.initialize({ - startOnLoad: true, - logLevel: 'fatal', - securityLevel: 'strict', - arrowMarkerAbsolute: false, - theme: 'neutral', - flowchart: { - useMaxWidth: true, - htmlLabels: true, - rankSpacing: 65, - nodeSpacing: 30, - curve: 'basis' - }, - sequence: { - useMaxWidth: true - }, - gantt: { - useMaxWidth: true - } -}) - -const Mermaid = ({ chart }) => { - const [zoomed, setZoomed] = useState(false) - const [svg, setSvg] = useState(undefined) - const [id] = useState(`mermaid-${Math.random().toString(36).substr(2, -1)}`) - const toggle = () => setZoomed(!zoomed) - - useEffect(() => { - mermaid.render(id, chart, (svg) => { - setSvg(svg) - }) - }, []) - - return ( - <> -
    -
    -
    e.stopPropagation()} - className={cn(styles.backdrop, styles.graph)} - dangerouslySetInnerHTML={{ __html: svg }} - /> -
    - - ) -} - -export default Mermaid diff --git a/docs/src/theme/RoutedDocPage/index.tsx b/docs/src/theme/RoutedDocPage/index.tsx deleted file mode 100644 index 1718161d3..000000000 --- a/docs/src/theme/RoutedDocPage/index.tsx +++ /dev/null @@ -1,7 +0,0 @@ -import React from 'react'; -import type {Props} from '@theme/DocPage'; -import DocPage from '@theme/DocPage' - -export default function RoutedDocPage(props: Props): JSX.Element { - return
    -} diff --git a/docs/src/theme/RoutedDocPage/styles.module.css b/docs/src/theme/RoutedDocPage/styles.module.css deleted file mode 100644 index 6d9c59153..000000000 --- a/docs/src/theme/RoutedDocPage/styles.module.css +++ /dev/null @@ -1,80 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -:root { - --doc-sidebar-width: 300px; - --doc-sidebar-hidden-width: 30px; -} - -:global(.docs-wrapper) { - display: flex; -} - -.docPage, -.docMainContainer { - display: flex; - width: 100%; -} - -@media (min-width: 997px) { - .docMainContainer { - flex-grow: 1; - max-width: calc(100% - var(--doc-sidebar-width)); - } - - .docMainContainerEnhanced { - max-width: calc(100% - var(--doc-sidebar-hidden-width)); - } - - .docSidebarContainer { - width: var(--doc-sidebar-width); - margin-top: calc(-1 * var(--ifm-navbar-height)); - border-right: 1px solid var(--ifm-toc-border-color); - will-change: width; - transition: width var(--ifm-transition-fast) ease; - clip-path: inset(0); - } - - .docSidebarContainerHidden { - width: var(--doc-sidebar-hidden-width); - cursor: pointer; - } - - .collapsedDocSidebar { - position: sticky; - top: 0; - height: 100%; - max-height: 100vh; - display: flex; - align-items: center; - justify-content: center; - transition: background-color var(--ifm-transition-fast) ease; - } - - .collapsedDocSidebar:hover, - .collapsedDocSidebar:focus { - background-color: var(--ifm-color-emphasis-200); - } - - .expandSidebarButtonIcon { - transform: rotate(0); - } - html[dir='rtl'] .expandSidebarButtonIcon { - transform: rotate(180deg); - } - - html[data-theme='dark'] .collapsedDocSidebar:hover, - html[data-theme='dark'] .collapsedDocSidebar:focus { - background-color: var(--collapse-button-bg-color-dark); - } - - .docItemWrapperEnhanced { - max-width: calc( - var(--ifm-container-width) + var(--doc-sidebar-width) - ) !important; - } -} diff --git a/docs/src/theme/faq.module.css b/docs/src/theme/faq.module.css deleted file mode 100644 index cc92c5f04..000000000 --- a/docs/src/theme/faq.module.css +++ /dev/null @@ -1,83 +0,0 @@ -.pills, -.tabs { - font-weight: var(--ifm-font-weight-bold); -} -.pills { - padding-left: 0; -} -.pills__item { - border-radius: 0.5rem; - cursor: pointer; - display: inline-block; - padding: 0.25rem 1rem; - transition: background var(--ifm-transition-fast) - var(--ifm-transition-timing-default); -} -.pills__item--active { - background: var(--ifm-pills-color-background-active); - color: var(--ifm-pills-color-active); -} -.pills__item:not(.pills__item--active):hover { - background-color: var(--ifm-pills-color-background-active); -} -.pills__item:not(:first-child) { - margin-left: var(--ifm-pills-spacing); -} -.pills__item:not(:last-child) { - margin-right: var(--ifm-pills-spacing); -} -.pills--block { - display: flex; - justify-content: stretch; -} -.pills--block .pills__item { - flex-grow: 1; - text-align: center; -} -.tabs { - display: flex; - overflow-x: auto; - color: var(--ifm-tabs-color); - margin-bottom: 0; - padding-left: 0; -} -.tabs__item { - border-bottom: 3px solid transparent; - border-radius: var(--ifm-global-radius); - cursor: pointer; - display: inline-flex; - padding: var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal); - margin: 0; - transition: background-color var(--ifm-transition-fast) - var(--ifm-transition-timing-default); -} -.tabs__item--active { - border-bottom-color: var(--ifm-tabs-color-active); - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; - color: var(--ifm-tabs-color-active); -} -.tabs__item:hover { - background-color: var(--ifm-hover-overlay); -} -.tabs--block { - justify-content: stretch; -} -.tabs--block .tabs__item { - flex-grow: 1; - justify-content: center; -} - -p { - margin-bottom: 0px; -} - -.selected { - background-color: #ffba00; -} - -div.question { - display: none; -} - -@import 'faq.module.gen.css'; diff --git a/docs/src/theme/ketoRelationTuplesPrism.js b/docs/src/theme/ketoRelationTuplesPrism.js deleted file mode 100644 index 9a00e5bbf..000000000 --- a/docs/src/theme/ketoRelationTuplesPrism.js +++ /dev/null @@ -1,57 +0,0 @@ -const delimiter = { - delimiter: /[:#@()]/ -} - -const namespace = { - pattern: /[^:#@()\n]+:/, - inside: { - ...delimiter, - namespace: /.*/ - } -} - -const object = { - pattern: /[^:#@()\n]+#/, - inside: { - ...delimiter, - 'property-access': /.*/ - } -} - -const relation = { - pattern: /[^:#@()\n]+/ -} - -const subjectID = { - pattern: /@[^:#@()\n]+/, - inside: { - ...delimiter, - subject: /.*/ - } -} - -const subjectSet = { - pattern: /@\(([^:#@()\n]+:)?([^:#@()\n]+)#([^:#@()\n]*)\)/, - inside: { - delimiter: /[@()]*/, - namespace, - object, - relation - } -} - -export default (prism) => - (prism.languages['keto-relation-tuples'] = { - comment: /\/\/.*(\n|$)/, - 'relation-tuple': { - pattern: - /([^:#@()\n]+:)?([^:#@()\n]+)#([^:#@()\n]+)@?((\(([^:#@()\n]+:)?([^:#@()\n]+)#([^:#@()\n]*)\))|([^:#@()\n]+))/, - inside: { - namespace, - object, - subjectID, - subjectSet, - relation - } - } - }) diff --git a/docs/src/theme/mermaid.module.css b/docs/src/theme/mermaid.module.css deleted file mode 100644 index 35fffb3f5..000000000 --- a/docs/src/theme/mermaid.module.css +++ /dev/null @@ -1,44 +0,0 @@ -.graph svg { - max-width: 100%; -} - -.pointer { - cursor: pointer; -} - -.graph { - margin-bottom: var(--ifm-leading); -} - -.graph.overlay.visible { - display: block; -} - -.graph.overlay { - display: none; - position: fixed; - top: 0; - left: 0; - right: 0; - bottom: 0; - background-color: rgba(0, 0, 0, 0.1); - z-index: 10000; - margin-bottom: 0; -} - -.graph.overlay .backdrop { - position: absolute; - top: 10%; - left: 10%; - right: 10%; - bottom: 10%; - background-color: white; - text-align: center; - cursor: default; - overflow: auto; -} - -.graph.overlay .backdrop svg { - margin: 0 auto; - width: 100%; -} diff --git a/docs/src/theme/prism-include-languages.js b/docs/src/theme/prism-include-languages.js deleted file mode 100644 index 85a2750eb..000000000 --- a/docs/src/theme/prism-include-languages.js +++ /dev/null @@ -1,27 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ -import ExecutionEnvironment from '@docusaurus/ExecutionEnvironment' -import siteConfig from '@generated/docusaurus.config' -import ketoRelationTuplesPrism from './ketoRelationTuplesPrism' - -const prismIncludeLanguages = (PrismObject) => { - if (ExecutionEnvironment.canUseDOM) { - const { - themeConfig: { prism: { additionalLanguages = [] } = {} } - } = siteConfig - window.Prism = PrismObject - additionalLanguages.forEach((lang) => { - require(`prismjs/components/prism-${lang}`) // eslint-disable-line - }) - - ketoRelationTuplesPrism(window.Prism) - - delete window.Prism - } -} - -export default prismIncludeLanguages diff --git a/docs/static/img/favico.png b/docs/static/img/favico.png deleted file mode 100644 index 57311fe08183a5387bcd0a967af76546ccef5016..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6784 zcmaiZdpwi<|Nl0ZT$@ANoED3X5rsAtE6O&pDaq*;g`DnG$R>vz(r9yBjPA-^q#~)5 zB$2b3a}@5w0sVUp+r8}R2e;+(>+VAz*mgx^CZqk)FZlnB;F0E6TLvGCn6VoBuH4DN1&`R>RS<2mQ?Gopv^tc8|j7g}3+YxpP}% z|L&_9l}kgDGZtT#ILJ<~DgkqTC^$DUx>%9xd--y;$>klqZE_gj5=@^s6CqM*vl zuz}COjR{w3_QUpopRIL+s7)QlMEFVy_r{q!ygW@JTmget3aDq#YLoOd;B=0)9Mggk z?*l3GM%c3f{NlN%p%;WVlmOuE{hjztZn`8rIGq0UvP!i{`Rf7Mx==fd4VKhJ4A$=g zmtfW+B6{?Fgl>|#1a)Krgim(?!ROo1X|X)OjX)rGc&*LNvZi_2t&@CZvb?bHxDBa9 zeD0|L;)?ObwQZ33TtZ|Gn|FS$>BoENPwB#X01@w}j9Y`S(I&7IBo$IbdL{^F(y4Y< zETIx2K3N+trA=ZX;0kbzbZV2JtvyzNa>L2gbg?aHUHKX_83OqMZ|W~|i6Su?$?E}Of3pc{)55Sf)hJ4|2NN*W~rGi9`Thr{XdigH%WtXdTlzdM#1e`w7S@WZV zol#NL_6DWts)5b4qRHW+X`qb40V)X~aR4#5M4HDQHquqXA~LB6AKG^~5l_vdB=WeV zG%n8m2sAfgdw~!w6l2g*o7aO9n$<}KB-{pahZ~Q%XoXk#|9{Y00hH8dIphBaRR0nJ z$`Yn97&I&sT9iuQNhRYb|1G*rhQ}s2oFzsYEI;_XVI|;yTXB+NP`$(%LIaI7*46oi zbj5!com4}M;CWrR|8O@#xUFJ+B9V}+O;|SoElMkx#QryUJ9z0DPfF*jY}oJuJ7dP5QKH%@T zR(@_Sx?Gpw003=na=lKurxH)xHD{`wKgll+`#!Nat~rpv<)P7}o2Kumrg>W^_(5s* z?0eLvZ)JlUYdX7(^0{2ETeu)O2|MNfMjz3LnQk)IODhTrSHr22a#_)%%SfaypX*fw zGJ{4G9tM0H7Ev*1fwTmtZcW0eBjOJ?sjrxn?=5rP}r2=@yDUx4TVyp zUq&B3Ff|?A0p9_|;ep$Umd3lHOz<9COYd(+9!Vs+VeE;B_;#|#CG&zZdwoRwKJ(w{ zp3$p!w&c9TSZ}oP-5%c#ohF_`qMN{)Y>bG%*;J;`-|gdi_blHb(dL02^TkZPwKq#1 zE|p?dWMuNY=zaed?`O+lBi=5h-7o7_1BXiYD_D91@p1USA4eTxejqBmuikUqY_M~bO9hDY=N3N)4R?4RfEbPwx$+}4vK75 z0NCVHg7@HXe#`D|P)BpHhmBXLe>%v$!a zGG|-w1U|B?V0Scd<*505i9N)FWTwe`H7qh$~mej%}Op3qpn{w zy`&`>Ix2SZL-7h~4Togn6qemaA{X$$1rPs_)z*5&C; zg*ns~6)SM+$>gT|I ztKFXq{Ab&HKlmv*q7aTr6_Xg%&L-ct4#geOPL=O+He3A!S@6o49`8Zz%2?^LHl^PQm)?mMIf`*G9Z!Nz`@ zw?N^@cku50G?hm3%wsMk)pSE_W#`o+U0I@b*R0B`@=k{|le%Seb!`9Ky};FQ8ya@J zs0~4-RC#p`e(=~HjLQ0pd}(gX4kx$m(j}ceDt_a4BQ-UBKP6&V z2_vFklBM0;HnWQTzr$2s%~;YxlvKK!UMctdgOeTq<&E01ZJMK#`~CQS0Jyue!t`Ut zYjyYVkOq*X&ADk@dyOuZ(hsQ|-c|WrF?yzf87JWJXO6ipEnEOWM`hJlbuTRg3?ufF z(=jaFk*~f72NQKnr1Li$6n-$xyDwn;QxB396Z6sy;dgzNGUcra8>q&Mu$~q@k~%<= zy7vBL!p)Dq2m#x3RrFr=yEb9N8;dhG&Q4rqyV5VmW)&N@BYfPeC)}&`P(Q`0e1njP z${;|zYjRhj$3V_0C_Q}pfxJ^aA?5PyQTRL}bu7H(LO=QGq?S}|OD~cFRjRD8vpC~`F_ zNJtR-ALYytj6Y}hrbn7w-Ux_=lc{-l%NW1s6Ns%>A49WyCeiEtjEc?=m_l`yG`vJi zu@E56Abh0Zlzhpo6g)C@3Uou;5(w7#Jr6?Zw3XNjac|@S=>A8RjFNWI`M|)L{1dWZ zlJd7&27NMs>=6KmQ$!I9dlTZn1=z7P;FNgjP$klkee3io7?gFR{f(Sl^^kB%92fVp zX4@4Ry;~&j_RBf0V^BV{Jy^ODCwipV0YJIDg`;)Tymv`Z=>%n9wi5tIU-cQ>8U~0F zeHQkF7o1#kgpZ{Y&CPvYp3hQ)Q|fI#pzX8R1FJd0?FaIm(tp#VH;c%E7p9_N}FlaECC6NH*-bABe_4Z(rv|Tv> zOC}Oj&LHCdIdfNM4P|Xw;Blm$U}mutTFHm&kCN31snmzYT!$A(2_w802Nqq|cErVi zDdKsMYNJ`(Yc~B ze89g20{%M75PsWh@CEdPF!$5+cLhqyxLjQK^rAg&Lv=*aIaeA@aGcG!Ns>>CShK=X zw!L19XCkIt8W4lwJ~we3nZAMmB=oA*;vCnZZ7BMR>*^!O@FTb9fsdVu=V}bIXf!!* z;zp}ss_B|T40T`SKCdYo!<|s4LjxOuXR^IdCgL{$Vq70xNa?c>5DCrHmhCG4eA*R5 zd(7kFde4f>Mh^tFItI+GPt!ka2_{hn!-NVm;?|x@FBF`jXX{HjC>U6HR9mi<#h}TJ zpZfBrnr!5WlC%992p{`-X{W$1R-S#*r@OZ5xc>|0s;eZ;99y<=Kh~ApBjqed?TIts%&2obdiWx|6sC zTB1qzju8FfvM2VjCCykl_tpF9!8x>7=7^MH@w9l*oWj3UGWm39Lycza&P`s%dr(e? z&TaKe#;}?z-$&_u&Y|dY#>bhAry%QdR=bEt4*LUE@Ca4!tfI@kdmlkY=);`caN7zV zqUbaf=Fa0c?@}p0yeG#a3m&%DE4g?>ty@H6d5g63))?zLdPXXuP z`!#vzlv5hOeA*R_pQ^9MjPA|MFn461dRn95J$}ys%7;&)8iRO|C->;z+FV;&?4Qhx z1X(wS7IUI6S%o>@h^}iXj-47(NoiEFmc;IwI=Wt_;TE^yS6ctv(cfLuSw9&Rg#N%# z+Vv~_GKh7fIlXGrdg^d}_v$uw`)b8c}Csun?zBJYi1)rmvv!Oyu(eQy;r^V~D)S4ZA6bhPy7o)YaQE zp>sdpx_P#`&GYTWQvMAf;Qup~S+lZ`Y-FMq<@W7md$-F1>z7~5;Zp84s1I-LiSPgX z^z+Z#5qtNBVD1$4&F6n{HE1DZiA1zCgNGK_T=C|DCq)x`987K9N_tUJzCip)@NY>+FulAFPGFm>{v%eLJdq2!B z`s_R8p)Ihk?vgzbQaNT;`Ll0oAPlbUBM)3!C|?a(oa~<)|Eph{NC@x=BJG%#wqNa5 zu+SWdyGKUQKe?*g?30U3EmL?EhXFU2M>UR_9qkQ?u~9ZF)77&(WYa&AwsRzI7c})j zRO+{A$rXuLv^D~N(z0rTt z?NVe>I8!|*&BceBRlqn2HPC(0GRXnFVq>443)a=wENUGuA1C|?0LSpD$+MOlZBJWW zP9GgQaQQ)6|9io9ueF|iu;n&O^%e3c#}C_Yr(nIwp}l2}PF7%UkStlhpXfJ8Xw-t* z{m}Cxp*MRK^00UKKWtW(Bom^H!o8#BL%%atUsnX2)Q&m(CaFOXD`W1ylOrkAeD zQ-0B11=mx(lO2$~UY)fS+4&K%*((Oc=P^x&nh1&6Vnz2$7yqN0Q>L@T652x$Oi?aZ z2oAg-`9X4cU&W6X39_qn=j_^VtBal&UrL{i`BeVpYZCyry&rtde3)m&h|iuAm6Y6?k(@clS%lYU zlP;KI)z~M7=I?c*EFJ~)etGh^YExa*c}>l4sgi~7*FwI(*bzM$>oIM2Na3hyby?*Y z)YmsDw{o@NV>?wcr($+w^Cp({ygPP_x-DtgmOom!iin6%L*E2Xua@$FF*8eQ z6v!H>c!y)Bb7#fEBA&1ajmFUJ(etTxH2y<5#kE&C&RUY{6yi6aOH&mDU#sIK>n9-mc|+T2f=4;t_!`Kcl1Jc2>9aU&W zHyTwai$F|N5|OGS^B&C9gXb&;g=mG32?u_zQwrB?Ej%o_QEPJ6ZcA14Kle>_&n0QD z>-=TMndb;nmLOjQfoCTYI_4&-suqv;XlE|eEzL|tsusMxE`L;$GD15Af+0Ifgn0QD z&m)@ry1B#4UogTA2%kom1s}BlD$_FLS(gx^DSwe0Vx89NL$7^NS~1afJU=B0sUwWX zV>{ndPy2E4S>KAg1vax;tCHePKkFbPTXJA}M%~Ii@F*(vd$3&98;wTJhrisDns2Qv zZfjusP)|h`Pehwl*7k*z^FDIm#wkMQV>g5bhLL4``7gqinfO#Kd|papy~{#x%nku{ zh=6~}mQd1!&Y!Onlm9)G5-roULy1&$IV8Fr?1FPK#ZSLj?mRG`;DuGqwnb;Q<7L|- zVs%9hh7gZuwEb@)>C%|z$MCwB#Ym0zxkLj{D-XQX1k34fB_WOea^VjVGBLZKGR0vA+aH?q{h<8qAb7j{lpt0E) zNqvyJ9$Svs;DJ^ch?52E_OjSX?BRzMHC&Lhqm&9xALSm$9}2Urz)ZSN$qyfXJi_P;@Ua! zc`7{82A))zL~Q*4Y!gGgV49+uFP+t#!1fBHW>8#s`6fIm-xj1GnJU-zi4F5qX_4qb z=_o-_RdMcBb?~IkR%~V*M!^=p$sm))>M{tm?2v5T!jrn#oSc%6&a4_w$TO^Y@^tJl z0$YzvAz?D#gEA1EDSQ$SIk3}>ERUf!ouNHWCT$yzfY2xUZk5lIaziZj5V{q!>+ul9rfxd>2% zP-z$_Kd^C`x7qa;d5dY$qPSaV^nVQNn%CW60YKATGIUz3v|Jq`dRb3@unoCpK1gdml2q;{PApv|--> diff --git a/docs/static/img/logo-docs.svg b/docs/static/img/logo-docs.svg deleted file mode 100644 index 39519959b..000000000 --- a/docs/static/img/logo-docs.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/docs/static/img/logo-docusaurus-template.svg b/docs/static/img/logo-docusaurus-template.svg deleted file mode 100644 index 39519959b..000000000 --- a/docs/static/img/logo-docusaurus-template.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/docs/static/img/logo-hydra.svg b/docs/static/img/logo-hydra.svg deleted file mode 100644 index 82bf2d98f..000000000 --- a/docs/static/img/logo-hydra.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/docs/static/img/logo-keto.svg b/docs/static/img/logo-keto.svg deleted file mode 100644 index c9fba861f..000000000 --- a/docs/static/img/logo-keto.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/docs/static/img/logo-kratos.svg b/docs/static/img/logo-kratos.svg deleted file mode 100644 index 4cad5182b..000000000 --- a/docs/static/img/logo-kratos.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/docs/static/img/logo-oathkeeper.svg b/docs/static/img/logo-oathkeeper.svg deleted file mode 100644 index 7b4e74164..000000000 --- a/docs/static/img/logo-oathkeeper.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/docs/versioned_docs/version-v0.5/.gitkeep b/docs/versioned_docs/version-v0.5/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/docs/versioned_docs/version-v0.5/configure-deploy.md b/docs/versioned_docs/version-v0.5/configure-deploy.md deleted file mode 100644 index d727ea769..000000000 --- a/docs/versioned_docs/version-v0.5/configure-deploy.md +++ /dev/null @@ -1,166 +0,0 @@ ---- -id: configure-deploy -title: Configure and Deploy ---- - -Like all other ORY services, ORY Keto is implemented following -[12factor principles](https://12factor.net) and completely stateless. To store -state, ORY Keto supports two types of storage adapters: - -- **in-memory:** This adapter does not work with more than one instance - ("cluster") and any state is lost after restarting the instance. -- **SQL:** This adapter works with more than one instance and state persists - after restarts. - -The SQL adapter supports two DBMS: PostgreSQL 9.6+ and MySQL 5.7+. Please note -that older MySQL versions may have issues with the database schema. We recommend -working with PostgreSQL as migrations will be faster. - -This guide will: - -1. Download and run a PostgreSQL container in Docker. -2. Download and run ORY Keto using Docker. - -## Create a Network - -As a first step, we create a network to which we connect all our Docker -containers. This enables the containers to communicate with each other. - -``` -$ docker network create ketoguide -``` - -## Start the PostgreSQL Container - -For the purpose of this tutorial, we will use PostgreSQL as a database. As you -probably already know, don't run databases in Docker in production! For the sake -of this tutorial however, let's use Docker to quickly deploy the database. - -``` -$ docker run \ - --network ketoguide \ - --name ory-keto-example--postgres \ - -e POSTGRES_USER=keto \ - -e POSTGRES_PASSWORD=secret \ - -e POSTGRES_DB=keto \ - -d postgres:9.6 -``` - -This command wil start a postgres instance with name -`ory-keto-example--postgres`, set up a database called `keto` and create a user -`keto` with password `secret`. - -## Run the ORY Keto Service - -``` -# The database url points us at the postgres instance. -# This could also be an ephermal in-memory database (`export DSN=memory`) -# or a MySQL URI. -$ export DSN=postgres://keto:secret@ory-keto-example--postgres:5432/keto?sslmode=disable - -# ORY Keto does not do magic, it requires conscious decisions. -# An example is running SQL migrations when setting up a new installation of ORY Keto -# or upgrading an existing one. -# This is equivalent to: -# DSN=postgres://keto:secret@ory-keto-example--postgres:5432/keto?sslmode=disable keto migrate sql` -$ docker run -it --rm \ - --network ketoguide \ - -e DSN=$DSN \ - oryd/keto:v0.5.6-alpha.1 \ - migrate sql -e - -Applying `client` SQL migrations... -[...] -Migration successful! - -# Let's run the server! -$ docker run -d \ - --name ory-keto-example--keto \ - --network ketoguide \ - -p 4466:4466 \ - -e DSN=$DSN \ - oryd/keto:v0.5.6-alpha.1 \ - serve -``` - -Great, the server is running now! Make sure to check the logs and see if there -were any errors or issues before moving on to the next step: - -``` -$ docker logs ory-keto-example--keto -``` - -You should see one line showing where the server is running: - -``` -time="2018-10-27T11:48:56Z" level=info msg="Listening on http://localhost:4466" -``` - -## Working with the CLI - -Let's explore managing ORY Keto via the CLI. We will use the ORY Access Control -Policy Engine (`/engines/acp/ory`) with the `exact` matcher, define policies, -and check if particular users are allowed to do certain things. Let's create our -first policy: - -``` -$ mkdir policies - -$ cat > policies/example-policy.json <"] -} -``` - -In this example, the (incomplete) policy would match every subject that is -prefixed with `users:`, so for example `users:alice`, `users:bob`. ORY Ladon and -ORY Keto delimit regular expressions with `<` and `>`. For example, `"users:.*"` -is not a valid regular expression, just a simple string. - -The next example will allow all subjects with prefix `user:` to read -(`actions:read`) all resources that match `resources:blog_posts:<[0-9]+>` (e.g. -`resources:blog_posts:1234` but not `resources:blog_posts:abcde`): - -```json -{ - "subjects": ["users:<.*>"], - "resources": ["resources:blog_posts:<[0-9]+>"], - "actions": ["actions:read"], - "effect": "allow" -} -``` - -### Computational Overhead - -Some pattern matching strategies can introduce computational complexity. -Consider the performance implications when choosing an approach: - -- Case sensitive equality: no computational overhead -- Glob pattern matching: little computational overhead -- Regex: considerable computational overhead - -## Conditions - -So far, we covered that an ORY ACP applies to a list of `subjects`, `resources`, -and `actions`. Conditions narrow down the use cases in which a certain ACP -applies. A condition may, for example, mandate that the IP Address of the client -making the request has to match `192.168.0.0/16` or that the subject is also the -owner of the resource. Here is an example for the former condition: - -```json -{ - "description": "One policy to rule them all", - "subjects": ["users:maria"], - "actions": ["delete", "create", "update"], - "effect": "allow", - "resources": ["resources:articles:<.*>"], - "conditions": { - "remoteIPAddress": { - "type": "CIDRCondition", - "options": { - "cidr": "192.168.0.0/16" - } - } - } -} -``` - -Conditions are a part of policies. They determine if a policy can decide the -current access request in the current context. Context is the larger environment -in which the access request happens. A condition has this JSON format: - -```json -{ - "subjects": ["..."], - "actions": ["..."], - "effect": "allow", - "resources": ["..."], - "conditions": { - "this-key-will-be-matched-with-the-context": { - "type": "SomeConditionType", - "options": { - "some": "configuration options set by the condition type" - } - } - } -} -``` - -Conditions are functions returning true or false given a context. Because -conditions implement logic, they must be programmed. ORY Keto provides the -following commonly used conditions out of the box. You can improve or extend -them. - -### CIDR Condition - -The CIDR condition matches CIDR IP Ranges. A possible policy definition could -look like this: - -```json -{ - "description": "One policy to rule them all.", - "subjects": ["users:maria"], - "actions": ["delete", "create", "update"], - "effect": "allow", - "resources": ["resources:articles:<.*>"], - "conditions": { - "remoteIPAddress": { - "type": "CIDRCondition", - "options": { - "cidr": "192.168.0.0/16" - } - } - } -} -``` - -The following access request would be allowed. - -```json -{ - "subject": "users:maria", - "action": "delete", - "resource": "resources:articles:12345", - "context": { - "remoteIPAddress": "192.168.0.5" - } -} -``` - -The next access request would be denied as the condition is not fulfilled and -thus no policy matches. - -```json -{ - "subject": "users:maria", - "action": "delete", - "resource": "resources:articles:12345", - "context": { - "remoteIPAddress": "255.255.0.0" - } -} -``` - -The next access request would also be denied as the context is not using the key -`remoteIPAddress` but instead `someOtherKey`. - -```json -{ - "subject": "users:maria", - "action": "delete", - "resource": "resources:articles:12345", - "context": { - "someOtherKey": "192.168.0.5" - } -} -``` - -##### String Equal Condition - -This condition matches if the value passed in the access request's context is -identical with the string defined in the condition. - -```json -{ - "description": "One policy to rule them all.", - "subjects": ["users:maria"], - "actions": ["delete", "create", "update"], - "effect": "allow", - "resources": ["resources:articles:<.*>"], - "conditions": { - "myKey": { - "type": "StringEqualCondition", - "options": { - "equals": "expected-value" - } - } - } -} -``` - -The following access request would be allowed. - -```json -{ - "subject": "users:maria", - "action": "delete", - "resource": "resources:articles:12345", - "context": { - "myKey": "expected-value" - } -} -``` - -The following access request would be denied. - -```json -{ - "subject": "users:maria", - "action": "delete", - "resource": "resources:articles:12345", - "context": { - "meKey": "another-value" - } -} -``` - -### String Match Condition - -This condition applies when the value passed in the access request's context -matches the regular expression in the condition. - -```json -{ - "description": "One policy to rule them all.", - "subjects": ["users:maria"], - "actions": ["delete", "create", "update"], - "effect": "allow", - "resources": ["resources:articles:<.*>"], - "conditions": { - "someKeyName": { - "type": "StringMatchCondition", - "options": { - "matches": "foo.+" - } - } - } -} -``` - -The following access request would be allowed. - -```json -{ - "subject": "users:maria", - "action": "delete", - "resource": "resources:articles:12345", - "context": { - "someKeyName": "foo-bar" - } -} -``` - -The following access request would be denied. - -```json -{ - "subject": "users:maria", - "action": "delete", - "resource": "resources:articles:12345", - "context": { - "someKeyName": "bar" - } -} -``` - -### Subject Condition - -This condition matches when the access request's subject is identical with the -string specified in the condition. - -```json -{ - "description": "One policy to rule them all.", - "subjects": ["users:maria"], - "actions": ["delete", "create", "update"], - "effect": "allow", - "resources": ["resources:articles:<.*>"], - "conditions": { - "owner": { - "type": "EqualsSubjectCondition", - "options": {} - } - } -} -``` - -The following access request would be allowed. - -```json -{ - "subject": "users:maria", - "action": "delete", - "resource": "resources:articles:12345", - "context": { - "owner": "users:maria" - } -} -``` - -The following access request would be denied. - -```json -{ - "subject": "users:maria", - "action": "delete", - "resource": "resources:articles:12345", - "context": { - "owner": "another-user" - } -} -``` - -This condition makes sense together with access tokens, where the subject is -extracted from the token. - -### String Pairs Equal Condition - -This condition matches when the value passed in the access request's context -contains two-element arrays and both elements in each pair are equal. - -```json -{ - "description": "One policy to rule them all.", - "subjects": ["users:maria"], - "actions": ["delete", "create", "update"], - "effect": "allow", - "resources": ["resources:articles:<.*>"], - "conditions": { - "someKey": { - "type": "StringPairsEqualCondition", - "options": {} - } - } -} -``` - -The following access request would be allowed. - -```json -{ - "subject": "users:maria", - "action": "delete", - "resource": "resources:articles:12345", - "context": { - "someKey": [ - ["foo", "foo"], - ["bar", "bar"] - ] - } -} -``` - -The following access request would be denied. - -```json -{ - "subject": "users:maria", - "action": "delete", - "resource": "resources:articles:12345", - "context": { - "someKey": [["foo", "bar"]] - } -} -``` - -## Roles - -Similar to RBAC, ORY ACPs support the concept of roles. This feature allows -grouping a number of subjects under the same role. Whenever making a request to -the Allowed API, it will check the roles of a subject (if there are any) and use -them when looking up the `subjects` field. - -Assuming the following policies: - -```json -{ - "subjects": ["bob"], - "resources": ["blog_posts:my-first-blog-post"], - "actions": ["create"], - "effect": "allow" -} -``` - -```json -{ - "subjects": ["admin"], - "resources": ["blog_posts:my-first-blog-post"], - "actions": ["delete"], - "effect": "allow" -} -``` - -As you can see, `bob` is allowed to create resource -`blog_posts:my-first-blog-post` and `admin` is allowed to delete it. Making the -following request to the Allowed API - -``` -{ - "subject": "bob", - "action" : "delete", - "resource": "blog_posts:my-first-blog-post" -} -``` - -will return `{ "allowed": false }` while this request - -``` -{ - "subject": "admin", - "action" : "delete", - "resource": "blog_posts:my-first-blog-post" -} -``` - -will return `{ "allowed": true }`. - -## Implementation Status - -ORY Access Control Policies (regex, glob, equality) are first-class citizens. - -## Best Practices - -This sections gives an overview of best practices for access control policies we -developed over the years at ORY. - -### URNs - -> “There are only two hard things in Computer Science: cache invalidation, -> naming things, and off-by-one errors.” -- Phil Karlton - -URN naming is as hard as naming API endpoints. Thankfully, doing the latter -typically provides a solution for the former as well. - -### Scope the Organization Name - -It is good security practice is to prefix resource names with a domain that -represents the organization creating the software. - -- **Do not:** `my-resource` -- **Do:** `myorg.com:my-resource` - -### Scope Actions, Resources and Subjects - -Provide a scope for actions, resources, and subjects to prevent name collisions: - -- **Do not:** `myorg.com:`, `myorg.com:`, - `myorg.com:` -- **Do:** `myorg.com:subjects:`, - `myorg.com:resources:`, `myorg.com:actions:` -- **Do:** `subjects:myorg.com:`, - `resources:myorg.com:`, `actions:myorg.com:` - -### Multi-Tenant Systems - -Multi-tenant systems typically have resources which should not be accessed by -other tenants in the system. This can be achieved by adding the tenant id to the -URN: - -- **Do:** `resources:myorg.com:tenants::` - -Some environments have organizations and projects belonging to those -organizations. The following URN semantics can be used in these situations: - -- **Do:** - `resources:myorg.com:organizations::projects::` diff --git a/docs/versioned_docs/version-v0.5/engines/images/rbac.png b/docs/versioned_docs/version-v0.5/engines/images/rbac.png deleted file mode 100644 index b84d8f3bc4ae03f5a7e07a2d0577df806e9abc15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34841 zcmeIbc~n!^*Efz@wH6SER#c{9E7VpAH~^8U&Q%cF@^uCxBBC-05duOICqS!$iV~0^ zS`}&)0wN#;5*0Nfqkx1tB16Cc0YVZozxyVDTJ>3dervt&de-mJe=y|UbN1b5pMCcJ zeD=Pa{?&1V=2!E-Qd3jY-1y7d-__KnIH;*j9Qbky{N`oO4ktCWZ`C%gUG<-kq}~=Y zKb?}?DX(~QuKtqs-K3pSOD7z+Fmy1Df1Hooo&Na39MgmeR);!%Ir?h1V7DFWDrUe> zl8g4a_+-u2tOB~$54%m5-rRc2DVgl*vvlHBgA?wH52^jURzlc2mpxZ)@h*<72lAhm z{YAUyKSfVbTYHbYAu=F(!h^dx{mYR5RGl+iFlGDks#6n2l9P(}oJ^XOIcG@y%*-M6 zD#LT}Prf`i_b96by?FgIw3@deJ#(%hT}`k0)Q+>CZ}@+vrE7jVgK19WRCO+8P|WAV zD(+|**y{3&6e2eH8ecbtG0;4?Lq~cOsp7^ zF&B5}9?h||CoC$NW`CbBFfwAf_VEA{LqtbMt|m-aS=$+L((>v<^4)p-LiZt<=E)Z+ z_|@M{d4+TBO7ghu@+F$te3r$GEa{0rOr+ex;q_Tm#$TPkoBwFiX}NQnXmanHxURwE`R##ofV@QZhusAHsdXFCpU++L-9(1BZR!;cjXN*YbkMdz_g*YRV?u6EWwsYMNLM?wYXR5LT_=#mk73J+}>Gc2qfKx!+CCf9&Ag$mez0 z-XrK@^Jo>mCw*-FK-n}h{_nh{w|$4KU{iacjX9Ta@w!(m%+Fz1Wd|4?DL1<=dnngK zo9Z6uU`M761d07EP$LRH6O+x{Wg9*+K+(>K_VBCO>v#QieRx1`d$4c3ZfssEC_Tf; z*EV-c#ucf?QNP1DL-)oRo9s?5rn=8sc5ZJ!c1y6Va8TiIUfy$ilKGmlVTrH2zh)ql zE1Y-Yc?P-VI^qCa^KAO&M)}1%V9RrjxzwSj!+RLHXO>_wiIPxiVCC<;w@UM%w3JN< zSZhb_iuT1h`m`FF1$DO=HTC}$-}INIIYw7&S1$ryUCEB~p zsN5af8~BH2Y`&{-FrbD~DJ#V1?XAG$P41n2I^}+!Z(b_BGNW=uk7$|GxW)R~9&5Ge zYVCIqpZSzln6-p)mK7%Mkk>b7*A@oeK@9KDp2(8nC-F7j>I?yIjfHux9&x_1jxyw^7v3vG#Pk=vx zKE8%tEK~H}OFqjT=!$)IES!xeb7~p4sbe1Hf=`oWeV+U8D;W%1KUTn{uJkqLw5Jrz zqoAuL=*d;**4a!ucWw$j-)o*ql^;z^dQpy>XD_=){A_q%CYdM_*4{XQ*x z$NB7fQ}pN})$_x^5~8GvTlNLhmy33&wQTPITlP(?c|vDs#`;3ih1I@x##@TyM10s z-o-bT-_YgVU(O^caS9#&9t;)!=?zVhOrD;0k43q&u9x-T}{M zce{`H)04sspXJ*YcU~d`o88Q?i9`E%uyGco5rVcf9)7 z)Z>qvnHD;pC8@vpr=E+yeprN?8lRmT)K{fXLov^yJx%=2Y8&Ue9zC@L&53W$?ojTB zt~+n6)#A7=oSnhN9rc{KqdmFb$wy_MNb3y~$#X0#N=;66+TcRf~AaQe0f3ZuRukN{XIHq)X zWR7;t`m)~&c4?^v?`SI6I(-qiYizMP#UktNHWe5lVd ze?mQpJ7ai#kdv6u4cbAxMG3c@yA@}mRvMfUw1n!uRD;3i**A^u2v>j2V29R~!NoVg zm4*{Fb-LG7a$aUUA+RLN{la=j;_*60#RJ^Ur}E3sU0lC4P>PL7RJXz6I(?d?J)+B3 zl-h9BQp-iOArAg3DqKyvueF{Z>Q|hpnB)*sVq;(W6XPqiSH<6Nbhp#6>E3Dert>Zj zBN8-(`+VJXrkbHQwByHxp+8CH8RcMKcCh!?|7>t)8$0Kzkm+}z@f7+G>^IxL=FGRB z6kPmcK>$Ad+|oFpjve14|OZzzW0e&E6Q@q`u_9OAK1YEFBP7!*d;RS#>0Tf zFGZ8LNAG7wX|yMuU}-{Hld1b6gASgap-@bHaFcp;a*b()nPtTcNNh@H_KDBCCt(Mu zh7c0Reb>m>F1BQkC=_Z(XVt8qsQC<~_O-ewBDX_Z?T-lQ@5zyxKW9~C9fS=S+OLZ{NN<+=z}JzRcMYklJy}h-wnQ}f=pIA*f70A1{knL$Pvb?5+7FOo`Iab0 zySY+R=jfhm?lp1Ji9ctZ$Lt>+?d5@bm`pQqbh6c>qup{Wo^o~j{`%3$v`0s?51MZd zlNG0qPF6KK+TS&q6MmR8-+Xkk&!T_Uy2|`M8_fT(ZCcqa5`~5+&Sl;U_k&1YSh(uQS;8Kn6A|(<@8;@O?PKtPvP-dpQ zCCvytVyA|v)7l8Du|#9$Q0c7_RAc~p4FMffqU&5T6+Lw@1pqLh^4doJS)nTE&@j z3{|78B^)dLj-KSCbi7HYq!URS2x#(o47fa}y*_mmx1#yB1Zlna(9zQ|26ofov-st` z5~W8a&Axzn6JUGtFEu7|Bty?#Gp6yC@EaW4Is^F^;I3bmghE@jT|L z9msZ43a5wtap^>vaxg^UCm9R|Tpbk^RTnk!>yVI;xeNAy@!>gZdbTPLm+zmUs*FVo zQOc=j!PK$Ri`qlrHG&`Y_4Un|SzJ@&%vm$xD{C7Y&6#G+t*yDXm;6*x!$kOtm?5Qp z7Oo;3vn@e|s)R<&dM08e_iVqu`k=J56vinp-~4YTefjbwTnr1j)8MOLUom0~)~rQ# zNV?X|T`K*4OaGbNK`K-ppvZ$e4cWUX)jO?AOMH`nMb1Wk;%@m>%o_`1c&gv&V_y(% zRZJWE0!-_jFRs0F2kA{x=GYydheDM2zg}0|rTCEn_fx0Z_#EaLX=qZUxO^G}Y_JvvtF4_p1-O~PywynHEh@>5nHnJ7mWUoaB`I2(Ctt}R|%EB>|O z^+jyUO(yrIy6EOgW1r(9s)MrL~+%^e!^hs8yQVY9POZZ-wzcG+K203vIibY4|kW?sEUANvP+172l1 zJAGwxz^~V=ypllK(?R0sVZlY6}1@@^SF=h~-XTfN1Z*OHpJ6&Z2;Bdkw z1vzYwYhcnsx*fxrj*jKc+PU3VmSITWo1uPIvCpsgMu+%u?LLKqL!lF_a-Cha8xXl> zyOJd0(q@m~a@IbRd5jDe@pOL1P2_nkL}AXSXPZBix~3lZwW03*p45`f238iiD^kiT zuj`FIe=hR;0*di3H?{TatcmR9MY~O9I-AMEMDg$~OD~OLI?C23dhqm6YQAxM4Z~NG z&(LKX((OXuSa=2ctyaIC&RWqyDhoO`=$)u7jmft))1XQe944hQ*Zpq71c9uTAtgwb zKF`&R0!(REV9Ub$h!SJz%Pw0gm$K0(GEoyd-z_z@+$($4=EM%#3~YDh^(DmEByjWI zFZmLN0nrD4{BU>)_@alFaZ+X`xx};*()b5vR;f_~=&- zv!BEn*Nw}G_`{t+G7}p_kB{S8kM#0SyV`kU6n0O$xJ99N(rEIf1mA7z6P$nnwEw(Tt#f02m!FrePWdp$1AC>Zoa|l3kXwT%Mb5suzd1PGmMb*@&&I{e zHO_C3Z7A2x;&MD}8%Sp6WL<6;ir+KnXb{#L&@YjpH9`4sHm4U5NGTX($1padGRUvR zk7@1J{KyiQV9QQE$u&`5V!k%I#k2>_bp1oQpgT~v9wW}&q=t6XRAy1rWzCFV-~Q7C zbDi2OyBOG-${isV>#@|s{dx-qcFQX~F#7ev@A2U`J$qW_wNH*HH*Uo$hzG4(4+zi# zORbVM9SQA8aIARq`P2^S#e5S}TfYMLKu{50yF*LVx-gY4q*cy9KjD+gtU`1Fhc6Qr zTynuJLN;W}-sBszR9iX9$I-!Gq5CAoh~8(GK;E!RuCG+j8xD?ndwH5iQ^ZsrPG90C z!aZZ%?(okR$-A-svMkP@4|0VCwgO9`OpbV%gd}>^BezTu>rJx;7Apl`yi zOx4yeV}&LSo#tl#SD6H3~yNO*3|7t$#&_G-6IIH?vv#dsy+_ewJ>NA|?n% za#ieOMv=K!6k8E=u;r%8aIq&gAx9;5X@2p^HIGw{?wK2z_1H`{W3wZt%D9edqR}g+ zC3;A0vHma47XjAT4oIV0I&%iVpmVNANncNomFXDO5V5`7yaP>L#k9)b(VdYcH`xXD z0X_V%9wYWwqZ?!84R><;GKWn>ecvZ>=aFfKUldP{a_cLd#GqkDXpD0F(cUbsJE1qA z(e&1J{(QLP#h&5wN`qqceNA=`eCFkv#98JbkR>|15F0$DSNVWkc1CVQ<@f*Yazy4< zP;%s#g({brs!6>u?VRR*KW7gO{Y1)EO9A^u+^BB`)#Tmlen~T~^QefIh@0CPbY|{0 zQ%B5}`~)+B>x1}G)R-<+2SHS47vd7?t2xwDx(-ieo)h}JlV<#12)mwWlh z6MJTNl#?v@z}18-hfMbYKjeYTbYp$=e!PPH;@Xodd%!%#G~%u zjktyXrp#4){(5gR9lNN(v_AMZcV^QXpRm=ow)1Q|Y-kqQCGk51Hd!XrLi2HxcW)!Y=`Xp+|JtpW)r3@|>+I&zW@G zGk2^Opb9m5;1m!PBkeKQO_ranvn5t78~22rq|)DpcIZn&9)1z^D;+&{%8uWcOR&Hs z?+Co+ey>Y(qV*O_>9lhAKhbNmxl58${SO5Fk*ArbiVH^L1cPDw(Zxw;4HnU3@~cdD z@}#S{s(2-*QG6NFN`lF=uBlN@7WR((y0+1PWHdlIL4awHL+CPJ($|z%8xi?pCtEA- zXH|r9`wm8Qljdr$(m*FsM`9a-_dDwkfb+>UU~rJ9VZkHWb(2(EXzLC-hEA|45$@nf zAI?%6~Pt$B^rX4OGV7nlEHQcOx`;HKQVkUU@-uNrZ?QN7u6oz)sR(JOq_^E*aNT5lHz!$`KQ-UH%M*(GWBB0ZiCNI}TBK`v%~YcDoofLoasdgHYgT&t8R}3z zz(Gi+rzu$r$d>%}0S2+vxn}BxRlDqnaw$J0VUWB}CX)#3qH?}eK~D<+deRqlhO3|_ zWJK$sQW4@2Bk_CM`>rVgAuad^=uFMP(9lxp$l!H;+rvL)BZD4@8KtD8Aec{^SS;RV zQ=mC~PbJ$p7Kh+WZ(%yHC)*PMEolKjRWrNM^z8a}xx97i+2n_Nqpw8(MS@--dSYtg z1(2gzg2#UMQ=rq$1hccH^M*=89lGK-MSiI%aY-SQqaY1w69|IAhUaBuWL!bHMP_vb z1O=@?0HM6Rykd!v``?B&ebk;KVa1So*?lTi2dbTR8ccDy@lgV${xz4bkmuMcWI|TD z)>IQD2K$h#@j)_7Z+tLmnsnF4FPO_U5s?)l16;y`vmc+xw21nBv**NJ%2igi_?EG;C|^Ba?D5NlQJ?!$0r)nKf(Z+ z>W+>-q+b3Z`BdzVBb_aFHTsrbm87Dg-XV|fxRtalY(GSr=Bh zhwZmNx*S`3AW6^GS$KWTn|6?)m`TAnh3>D4_~^y)*KBtq(|O{7o`dM)EqnL*n-1;I zI{2&ugvtJF2cLEDzrzl^hNV*LLZX6z1mu2xen{lsv(azv)6)!~vJPRf%YZYR4v4oh zKK9(5WyG7VBwq8Mp(207Jwx#wKEm%_)|fe8a0{Z{(ED_{KP_ZlorwmuF@v>q(4_=s#Nx+1n@& z{J=d!>i52**Um;_dBN#$pb|rPUFDS6krpbh7-Gm>26OH-A~Yog_OicAE&N+GSahO4 ze*2jjs?iV*_5!8?fubP>eM|1bNou^*oU@JMrfFbD@WER?cnm336nvH)Z0t}nj_*X% z2)X)}+(l%Wb~f)A?Fj$i$WW&}r+7jx{4AxU_6e#Am5ISSK|DlE?~uDlG9?DyoHCpF zlg_KVcnGDp6^XySi@+WBgpHrhCvE`0j^QRubD<5|tl)CFy9_olm0|Y6jf7(~Wxj*d z{%jmlA6`d5pHmXnvymYA)Z7dT1^-~~;n)A|NK<=yZt<_FO-2%gQ*-_N{XyzHmDJ-5F6igtILivL z;cUdLPa#&KHqiK_zT`tnTlA569dPjM86&pyMgbHM>%J9|17o3!+9>l@Yp_|J2hDxFW>0$$e?avBB2tX0U};; z(_CzSL#gldmvvmwr0Dik{jfIoa^AL@!^L}6cBMSlzxyyN)P46h#|FUF<$W}DbfReA zwx<{U-vAgs$^;AIG3FKyn=-5(r`YbQ#-u$}?{1&V@;hLiy9RZK8yL-5!f?BukVs!c zsd4b7U4Gf+;%Gn>$+U_*+W$jj4zl&caV}V1z_Wnb#=SduV%%4;bYmsigwd&)LTlKb z>d_R-b0XXJ`Fx+K8I1YPL`Fzt*vax3g@F<60EL(2t1r1TMi~D`MHuJ!xVhBpHl>7+ zvBi70xiwzi5*>Or9P9R$9@giT!kRWckp}os`%MYHyyFTpSr=& z(?_8a>V^x}^fs7U)@CtxMayJQDSZX0OVc`*SRnvP{?A%C&d5Z73J^f}>8ZCXMfkY-) z;essxM`-50Fz*v)&OUCnmh8xqT#p0-Ui>|QH8rxrwf?-)WDx6BioUeZTXIC)#cX$w z1+fBBjzAH?kIbeG4_W9e8S|SYJh%LXkY)Ir6Iqqq8%vKWg}=M&}Jz^rG|Llrl2VIdKxrk5N$gC z6wtV?3&M(S4hx%t(kg5jKJh-()@;iX_uNQ57x!!sOF*oWutptbb){4%Mf(CTjL}Ktl3cN% z7RkAogs>rNA-*#aSYZT3%MpwF7SYRmBOS{5kL#=L^JMfjG^SzV#3ozL>+KD&-@2m8 z1D{rU{Xo#Jqn5_*roVe`rge4Rg5v^+olT9ykpb??7jc@C16oTQ4(MHxp_njrtGRjO8_vw7P7+4Q4?v6|*wm{h~}`wy3LcC&ds1S+c$q*mivSQ?Gd4 zp&i<6u|_Oj(FFwd-O}L`jd}SeHDepeo3XvH-oE(<>3U4l`-Ceic4(=JA;2I9^1JS) zXPqtg$XLbwYHic}!7Ntga%e(`6) zA~z0)yx7eVFvnPAr+0EExzd9to z>SCs9o93=K=X>l`J(qp_k>}|4e#6O2)7tEsXtvD9_Cm5>$m6ouhMuX#+#|isP!HnR zfV+d$S(4}^PooU96kh$7rDTtT9tV_RDv(>14vH5l8}?4zV^6WprB5#ox2?yWWmrDp z$6aLkOB*w^Gy22qGu9BeSm2)J)P3d-PbqoZ&mfjU*BLtnj5}s3rfaj1rz14FuxKT=DI)TM$cj>4ey%5;_P77G_4VdZyz7P8n7<@#ukBg_ zGvIMq#57Urbi~MG(9xpO9eA1G5+>E(YDLjN5jxiuhw$BS4g?c_5F_P6f_X;N=%6Mp z9_j-)xF(?mnd+F`mk|x(>Po_5HYqaTsP74=3%AN}KaaU<#GW!LbfVKUi{jGeR7P!X z7oBTf(c@uGTwgLKGeY0K6R0Z6d4*5dswX3RajdWqf9fIAeSf(6+hip;FNMuR zV`q5iPZ6cgL4+nNg$|Ml;xOiRX&$`S(hSb@c6x&3=e~>bl`C+4?MVh=!XKO^QE!Rx zTCl9(#S4kda;&%YQ)mBpjbdVD`4xZ03R%7`c%EOCbp$zW)6i)u+f3iWDE#1ik6u-UHo@s4El#XOSVeOtrOc^{`g2AP~MXm&_LK5mO2#_p+A-``qs4EYGJ-^~ zBnY_rI?;)R%7c{WG!Hvg3$QnVp0uToBE6W$S;O{dZ+u46`j)KIzV0xLe6u4PS8<@6 zANJKX#a3nb?z{h0((w-?zfl_fF6@9GIolxBguunOrMq4_;HP8caL!ad;C+>QTr zjXGil-;MM3U@cHp4@^7E449dcw+BoOc>AIv-w%0vWM93d@xg>5lLw#$0&af4BtJad z=il87Xye+)&~#xVm5Q?YZE90T024$$LlLr6+AKa)@Qo5@L$Dv{lK|KW*|JJNhX_3M zm#}#>t$O5g0$?}**+I#I#k3v|;PQEbSlb}-Fe}jcrJ^xr61nh7?`33}i zi1rYq4?_z-07%~)_&Lw5=*S9q2>24%{Gxw?cFGm(9Ph$FG>KmT%_5?g_ll|~n3Mum zNL;}IxbdEC(z-8|#S`z~gUW|cf{hF5Np31JhJbR%Y_^i~Qm)vZ(r84=2q?m`vx?;$ zE{mRLd*_`|hJg8oEdK2%NI!~d6!TX7`KpSDfdNybNdkpJsoEFx7dIj%3B?@%x*b4T zF97xvRWtd#eOJ|kQ~ig7XOhx zo-!o#fv(1+E7Co4Ny|D&Jh(~;Am<~^BM9^iog4@f?c(aX0#m5rQPK{u9Kz89{uhN* zgH%>Rm(Z~%S3c5M6zw4oM1W-%0G9u%&|qi4Pz z)e-bP!rAb)Q!#f$!le__E0Mx-PVuobW4ip{I$-!EIkr?_zLzME@9&UKOJvK9cUtqmvXog0cPLBOwYsFi^fJ)^SNR0BG{B+RD>xt=}hYCe#$ zZn*y<5cTcM^(Fgv;gOr6?9r~-^U<46D9$|xsyqnP>w9Z5#B;gIihyrEZdnmq#L)84 zyS}9Rym$mW#{hI_IP1?pZ1{;sDErmGRJ9f!2!H>cu17gb2sIdDjel5_=^Fe4XgNX* zfjoUjk-Z!rpUiFSY8`^6AEz6Mj)YwizXxyft2HySCW=vh4PtRO9EJ&sc3= zn5!Ky%IfAAG=0%tYx)?MO?6f#^dvPya|<=Z7+m=_IeZ+Exd?b?mnBA`6wEraWc zQM2pSZbUptCCMlLR5taFy6on2`O6RjT;IVxG*Rd1y&3hx)tKE8qN73A=>KV;&#$b6 z>!o^*yC$dT7Z!lZxbk8mntsA`^DBw6KmOX5@L>ed% z%w4&7rnvN04{AEYI!ZpYQXq&YWf51{pOgn46rU+JtAr7wi){9tU$}ZVxf+T-i7C$@ z4lac_G!Tc&gVN*03K^G3B~7K@gJ2s4m8_*LEiHjzVN@44H+d2Rf>IocOPYnaqteqo zsHzRbdB#eQbe*0QFQ14XCIu*+r&9-1?3F?SLr8gSU>m+2y3=12Ew=QAvWD%*OVO|< ztfH_yh&j^3cF<2MJ)h%R;xSP-iZVXlDfvX+3yhl+;&BD1dmkb7yrn?RQ%RG0MNkN9pYLgMN59nqqtEjuGPHNeg6?bJq~j z$tve6|NRF2L2x%JZ8qY4T@PciJf6+6W1_xRXCBb=r`!Ks)I%~F*1}&@`8e$ z3-*MDgmk-ob$(!AAQJ`(3VK;|sr)PC9KHE7@tAKl=FO;%$A>}=IBgdfm&G%)plYQk zY|+n;z{=o>O-xJ*NO#{p@n*5T>O2LNRbh4~4wDL$4?IyawaJs<4aZ=qbWXipy$NsE zY~^unMxQLu$}N@Fos{ZTOxv|vv71`vzZtA0fi-rIa=p9q9>^aCC$O%-aASmqPiLQ8l1a>T?aD*!rObcy z9@X(aK04TUQs$Vb5Fd!f?onMwMTH%+bo}v@W-vZFL>kyfV~T)P8-F~N zm5z@NQHNvwm?AzaZ*)2Td&`9;{(SBeu)5KuY~nZh z(_u$Sq1&1w$Mvkkg4v9jKvfPAxOVoenWf+_Yl!C2F1T02FrEUo1Jb(PVn1)snHVMy zvw74?{Hd>h2?%h1RT$5@GHL|=)MnF%FyE*dtYXUZ-Ivm#4BM}N%IYU`3@B{+m}#?u zBVGpzRJ$O#Q!0mgd}9%sT|lHCzhL1I9}9M`wBe*qsb3KtUcpCS()#mX^{?A)m~6W9 zv{4K6-S&ftSEcd^nL8@Db_!{>RM6yKN{7Rvx)RNlNxr%7e*E8!Rqig7pNnEZ$;VcO zgYF`e%23W}SJOU&m=c0r`v|@kw8(6z;L_!M%EASkwDl`O73+^|v}nL^axEv_xEQ5%wAE5*v)9n~kdcN_H}9iI7yRV+0Gu zP&_YW_}%EGdG$q>wDFI#TQ8x@#I9Spb-{lSw`YYlQ!~zoHd~=W!xT>#uN`$+Tf*q}QvzTI(g{)5@F90xzpTg0 z@+}glMuy7Fm*| zSk;PGG+wEz8%okK@+Pv{=A-p^yRvc7LrVpeE+00oROYFOEb++4^%|)6(t<-C+J)iW z*;y$FTDJ{4p+in|-D1ctGK94&E7K!~eTBC#P_Du#YCFUvX(gLf&7` z-B=B*s2sm+$&oH`b-sGOM(pp?<{_NA#*#` zG*iO$R!rm#V8U$qb#7o{C^xdw#Zy3xV&ctwqBZ+baXy#j9d-cT8(>o{R7ByyCOj0& z2tGD3K{wgWrf9)3A-&%qDk){$u=!HI9C|OC>)b#X;agseqNWVg@*|3+Ef|I~$C|Gh zo8zs`&==YpuskemQVI+&0;^m^<5d%P57jb%VrEC%v^G%IBujXhm#w^oCoJLYVKoP@ z!Yw`;OsB$>C4>iWoZaywt*l{FRJK{bEjSCoxI*&0uE{FZNUY!M0iezzY&9ZT`C$p9aNNIlm=_OXStsAktNQ!a&5)-FT#OO`O%5JIm zR*D+tNn#|oDrYnhn^E}in4;g=ixPB<8aP%?GC77LuJq9Bt7oAlK|fRySAipVksynC~rekr_9 z$H>WMtA&Fj;zX2gtAaqttH;#&MfUD0eQJ5}Aw%ATCDhr6Ax7|=nUg~s9^7L4z^2A3 zWhd)enxGBM#&$L1EBJRjVuZCE%N2-Bbi2`Q=Y;=j%bhRE`n_8$916FrGk|~qIR|l} zV$6Yl1BteNFN+hl(Jr(?(Q6Wo#XhO3F zZW<#C%V;}fN#J`Zip@jyP<_U3?vJpC?V>Cr^|IfzYBLh_lVwkSa!7%9y((-#=TXru z4k2%{|FhCRelJDwpA0V>C^o9&{OZb++^)CUFjr;WHvHCjZ-c_z#rd#0!U;B=lE|SW zuYW-YSn5V&WQU47_(k`~g~LT9Ev9HxOQm77JL67)@JT=_L&L&BpBiBLdYMBCZ-*C! zKhMYsU%3d@#Ej~AH#g3K`>g+kGhIRI5A8fs=RtN~$_e@_LnPbMYh$qV6cT#y|M;%c z!%Knr?mzzV*1?9a>zO!h>$-`2bi^5^*Juc4(iCQY20IhgYwYA2U#}?8F=9gq)@y^R zI4I!%=0PC!@ku$-mb~BqtLVK0{YM@)@*`Z$4Z66_%$X_K6=!ASyx`cb`gLNGH7%{+ zi8H2hIJ%dgoF^%HLMjqQM>@SpC8$&7nw!y9ya9Q4TN!G6|cotN5EH14vcp5a~ zb(d8cqKXn>Cy>R=1cu4--g-K7OOJ8sU3r{6)BwVA#k2k_N_a;`Pla!q05xKu&j<|e z^Y$iVvaIS%4%!K>b$i=f6WVKI)*JgrKd}wOhH)oI7k` z7BN{=9}$_1WzlE4H97@PS8NEuEqkmv8}wYp!tBEstnjj-@9INEk!u3tU&OfDo!YQ8 zWQUv!CoRpjy6s$I%X~NJ)o02p7=;~!delXiWz^}y_FLOhdkwrT@=~$|y?pW}jI|&H zQxH8<>EpS$66JOq3;7W_ge)TQg;EZ?`lYbfc|uYHb3^%#N{W0)>?qQjQ((tCj)5&c zO}6{Jz&$9J7dAp!woH3|FoYGmIdA12prqN4)dF}~(Z%*H&i*~3+S{A5n@!s;Rp1G? zSKG~fFQ-WEllHetBnv+rOLf1TeO#Azxl3Mt(HZX;p<|R(onPs{rF-go83!dhi3Qc^z$B`!G^B3gj?*K4qpluC2 zg4YPVTn!!w-X93il9KaK;$iCmh#KAHDu4|6MU__M?D}<3O&|(=O^{3T0fYO_7Mkp_ zZuD?bby3o0CDn5C7vizLDtIrz_*0Di0@0vg8q&@M&yB!<&ipXb3yaBJ| zx>a;336{W#V)Zg7B07CsklBD35dboaKpw>Q0@4Jf;j5^g&@}{fKG|K?-$L#0l+IFe zDd?H9$z3<09%0N1N>2kmh>~>#QBtj`B!ZLk!gm3oHB9{^SF~5_s!C zDdgpdm3Bg5LjL{x`-ww=mW0ms*RS{F!(M>82_@7G7q&P}qTeaPM@gl7oGCYyZp-q1DS<9z!=}9c3|`r z=tcn(hOFEexu#YnQHNuFoa|D&@kHh4uhZ4e&jHUp&aA2Zaz^FY*Apjvy9BYQ zF)|1)9NTphf8Gg)+&HZU7mnE?$f;bnF%IwNonz*qu697VNyiAo&kqFj=jRmyGWWB| zfwTI&hdz6`(VB?QPT{jtP}Qrv;}kl-X@T$*s)b#UcmisNJ0ZLvcIi!LoQ^qj=8Q7* zpwZj_Z@&j|EY40-dRHJwUKRHxocWH*(D|J+zi=$}>C*;ea|03um6A}H0`eRJdNi<^ z@~trvpS^oRIrc)$sU2H9G!&Q*geg?H#X%WxC-52m!l73r0essDP5Aj#>MkhFB*BZb z$-EIL7w+$r{r;(l#druB{5zqP*Un2^9HmtXH30>r$zFX>5L+6hWk9It1a>?QaGf9& zhcx38feQLUOZi18o?Q&YbHCg4Og6mUs}y<9RqOI=%CzDmAxz*zYF^tBX#O99;JCk2 zZ3B?reD>zq{*_y_KQYZBF*M~@q6N=q#Ww-LPOP}Cb)15rB_9i`zHVu5mP*TJ?Iutw zm*?l__qaVz{Zw%F6;cfWR4xjIe_-YF7<3Q^%7e@Ydi47{eYSog*1GvhMW(^4saotO z%tCa2YCG~Wd4x>8=+B@;?@1v}^6507M zfF+Ib!wCAKK3Y%q&UX8HjBf{oWcz3-+B;kO=KtbHzv``!LpwW|2c(OsieA5Rg{YF~ z=I+@mW!ou`JR07S?Ks3ENc!^NA|O$D-`jC(*$;0SaK8jJ7A)}NDnHyu)-mFR!AtXY z0K(62*Lw);@W1n&pgM;bW#Ir-#W6DW#SQ*99?#Z(j?<=*dD((K zlWuM_QgBR6@B3O?jEj-vu?P~3omF-nVEx5*yn15URsAR|85C|y31QbdPD69+HMl~ zqf97M@04hBaFqS^4Ro`B-j`o`6Pb`+I}+Tb0|5pZLB30X0-{p-+?HT_v(igw>t6Ot zv@nB1wYL3oiHEnfAZ(YU(Vp1a*pBb1)M;xbEB+Q#AWZWIJ|!uLhz`G8A|FiBF?N;Y z5!+wY-`0)mRA3(1N{{H~|56n8&9k=hlgT+cQze{`gUM;o)qFoL*&{}BGlrX$sPEJ= zqomn1^v$vZb%Fp~jk_;OUn0)pT^-^9WBGh+?i3WztsnRVtU%@|++pO+@UUuD{HSm7n>p5MV)uoU*Y?gpikZ;j~Mb$ z^r7uIXp6}y;>@A5X>O;pa_dO8wC7Xrd-=r|9yTCjTQicc$0Schi9#9rYdYEIUX8JQ zA8~M=q2et@5{4X^NC*CMU|(1Y_L^da?XavCxHd@&!}hE!OJ)aDu!m%%87ru7KhkR* zQc`)l)wE|sclJ1I`Q8$4bR7<~tmv#)WDdM2eALkcfAEyWt7hQ#3+r4Z3}^DqrLVs+ zLghCMT;#nni-EVVi+>fS9WLim_V`Z+j_|!DxhZ>euh^{JtXMOa;ir3cL?f0RE_mvV zk1TO!VgIN!4K3@RRLZOaW_qZ)^7yUZKKqIj3~T6gO&e*UN4_Qh-tISbSp?Mn-EGP1 z_+x{~dalV<1GkebSw2`dRbAjs*$#yn=${FX#%zru(|f-zyeQyx0|m++gR3Ig9ubcynA zCQ33ryhGktKa&@F#N-X})(=RxW#imFHf_q0ppq<|g;ubM6uHh4ZK+m_hlOPw6k52; z2ewoHlGR83iTrVbm%yQB<>-eYo+QR5H;o{qZrj!y-BO+mWZU9WanudF+!%)KHc!QN z>b30LZ75l&cZ~3+o&Og~3qVRQ-deyldKKr6q|}3A5(*6zj!d~8!I9DSUvDk!yExsyxwmfMih-CWz}a>!jN#UAzSYYLx^GZfG?*#Tv&)HL_${yz1n+L( zy}Cut6NG@Cb5z9!+>1b(zKtciQNt@a@*$|_pm(n?sen2N>|Wc__C+n^(1#SHl1aYw z-Oxn2CQX>>7}tyWzum=FNb(jd6fb9ZQ{w80_P2AkE!}(H{n4UiiF9kkM{f)!yAE9h zt+ES=r9*T(?T&#-^+Nx+q&L_f$JsUFymt@32>EJCb}tItyHgJ$U_Xn-usv)$-OtaO z|B&O&=8wG^gTaQqM=?;pMb;8?6ZA*~CB&%U~;fh|-i-3^{oqqAAvyoE4 z()U7_VQr|G9}CGo6dxD?RiW55`g`%#YT`ALd_0)?K!}_4@kr_Objlo9=|=u1Df18% zYOj5aG#~cgRGS6?K2nBz|9&@;KY$&)13jzO`cP0%4qQJlP=zoukR1Xu@#f9nNU1EC z)H|rN>Pi0#`UhNir(T1%G8+nP+_LdcfczFG1J@WuiIB z8fkX?N3!*i`_@5%4EI5aHdO5nXdtE9FzaYi_p!$whQG!|#zOTq8&b=d5%^DKs0?21 zCJZ!RGE908Qx~g4iS%sbPpSb;1W9Wgyk;pFHP!Mpyi7s)`PBASI+0bBRIV=bd^gpE z?G9|q+SZ~lAusjxwkr=@5Uz-~uLLsY0us;u%a2|Tg%tu`>PBg$*OifPLsYa3dB-dT zHXEr$Zz&ZoMEux4*D-JpHIMzrsm_0-{!km=QhEZ@2&KpiTX*r*)TU-`T)XN&Bm@?K zvS5ZnLcpswFIafhmUyCIHtLBsnbRftTKZeNFl1ZDgBpYAYIcd2n77CiIss4mYmsWBSbywdXZA+/TpIBwcvs90XTorkO4sgdTw32jn4xvHkbz6Tf5VlX1vm80VtiDmNahPqDCv6B5TRVdYNjaDUKgrGUkEL3RiyPIdQaDbCOdvq1R5Zqj+1IDEYhlVIUtP6k0Yiqa2LwO3sX4HGSfNk5KqSNQl/x5xtcvU8x8OPh19dnJGmL1W/TEjEtj0TvnXwkjMm6lS2W0JasW2w1e0+v1DajptDLl7TQK3TM0k30Iz4MC6xb1gcZgNVfdfB19uEClgVJKxKt3L1pS0RWSpzSCZVd8AF7F4cEmonKgUELAPB97KKauAvFBulHdSw2nYr4TW8k94q4JkyErX6cdt3R0AmFIRhIJ4BZJ2y+FfBSnEZciACTgBCVgAFng4IDwBqofUB+e/AB5/gI70ATJCP71rk45/gk7GIPu4nx6edtw0+wQk+cntFk6ODZhbpzA06d8AzWpaU5eXonnmGAx2NGxhoroYc8zuQWUzvRdW+hEZ5UV0ZQH6wFMYXCQ7GEwkKjOlDJA92Ksu4SFjMcpLedtZrHVAPBuyouO+lH6oql0GVy+XA7lWLQ6YrewIh9upESzaCSVP33G+MFRrqaninQcvZsA0Pm1rNaZjwGETPpZrrwSElgj7r3b+JLjIkV3ls4KP77Nb3juGz0ewcolNCa2Snia7T4INqdWbReabo0Asr8v6qu/rwe3oAr2eJbnsP/a/o+ra0a94m5QQTNj2PafUOgBZ2POaZheUPeEVr+xadA+Gk9u0AXvxGuoemnzgn+16FgtFclL2e7ypDt1X843CLfxRS+0d9Xw/ByUQ9gm6d26m8bveYIQYSZTSfnE+xGpcaCEydAGLnKnQxbiTT1Mlqs36CUIx/SZwfgbF4R/Q+/HmyCeprLyZbR56BLwokpeH4UeGLMb0TtnTMPrOw5gPCsnUPHIiNrtl6crKyGnrAH/4U2MR9xzlkm0HnAsQE4l3Hojvn7U1mu8/R9XG1++aPb/8C \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.5/engines/index.md b/docs/versioned_docs/version-v0.5/engines/index.md deleted file mode 100644 index 9d173b245..000000000 --- a/docs/versioned_docs/version-v0.5/engines/index.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -id: index -title: Access Control Engines - Introduction ---- - -Whatever your system looks like, you probably have a concept of permissions -which models who is allowed to do what (access control). ORY Keto provides you -with battle-tested, best practice access control concepts. Please note that ORY -Keto doesn't support all access control mechanisms while in "sandbox" mode. - -This chapter introduces the most widely used Access Control Policies. Before we -do that, let's cover some of the basics. - -Every app that has users usually assigns permissions to these users ("Bob and -Alice are allowed to write blog posts"). There are various established best -practices for assigning one or more permissions to one or more users. In the -context of access control, you'll often encounter **users**, **identities** or -**subjects**. They typically include users, robots, cronjobs, services, etc. diff --git a/docs/versioned_docs/version-v0.5/engines/rbac.md b/docs/versioned_docs/version-v0.5/engines/rbac.md deleted file mode 100644 index f791e82ee..000000000 --- a/docs/versioned_docs/version-v0.5/engines/rbac.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -id: rbac -title: Role Based Access Control (RBAC) ---- - -[Role Based Access Control (RBAC)](https://en.wikipedia.org/wiki/Role-based_access_control) -maps subjects to roles and roles to permissions. The goal of (H)RBAC is to make -permission management convenient by grouping subjects in roles and assigning -permissions roles. This type of access control is common in web applications -where one often encounters roles such as "administrator", "moderator", and so -on. - -In **Hierarchical Role Based Access Control (HRBAC)** roles can inherit -permissions from other roles. The "administrator" role, for example, could -inherit all permissions from the "moderator" role. This reduces duplication and -management complexity around defining privileges. - -Let's come back to Alice, Bob, Peter, and blog posts and the matrix from the ACL -example. This time we model the access rights using (H)RBAC and the roles -"reader", "author", and "admin": - -![(H)RBAC Example](./images/rbac.png) - -`Admin` inherits all privileges from `author`, which inherits from `reader`. -Only `Alice` (or rather her role `admin`) can delete blog posts, whereas -`author` can create and modify blog posts. - -(H)RBAC is everywhere. If you ever installed a forum software such as -[phpBB](https://www.phpbb.com/support/docs/en/3.1/ug/adminguide/permissions_roles/) -or [Wordpress](https://codex.wordpress.org/Roles_and_Capabilities), you have -definitely encountered ACL, (H)RBAC, or both. - -(H)RBAC reduces management complexity & overhead with large user/subject bases. -Sometimes however, even (H)RBAC is not enough. An example is when you need to -express ownership (e.g. `bob` can only modify his own blog posts), have -attributes (e.g. `bob` works in department `blog`), or in multi-tenant -environments. - -**Benefits:** - -- Reduces management complexity when many identities share similar permissions. -- Role hierarchies can reduce redundancy even further. -- Is well established and easily understood by many developers as it is a - de-facto standard for web applications. - -**Shortcomings:** - -- Has no concept of context: - - There is no concept of ownership: _Dan is the author of article "Hello - World" and is thus allowed to update it_. - - There is no concept of environment: _Dan is allowed to access accounting - services when the request comes from IP 10.0.0.3_. - - There is no concept of tenants: _Dan is allowed to access resources on the - "dan's test" tenant_. - -**Implementation status:** (Hierarchical) Role Based Access Control is currently -not implemented but will be first-class citizens in the future. To bump this in -priority, please upvote -[this GitHub ticket](https://github.com/ory/keto/issues/60). diff --git a/docs/versioned_docs/version-v0.5/index.md b/docs/versioned_docs/version-v0.5/index.md deleted file mode 100644 index 6827416f8..000000000 --- a/docs/versioned_docs/version-v0.5/index.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -id: index -slug: / -title: Introduction ---- - -ORY Keto is a permission server that implements best practice access control -mechanisms. If you came looking for the answer to the question: - -- Is a certain user allowed to modify this blog article? -- Is this service allowed to print that document? -- Is a member of the ACME organisation allowed to modify data of one of their - tenants? -- Is this process allowed to execute that worker when coming from IP 10.0.0.2 - between 4pm and 5pm on a Monday? -- ... - -ORY Keto provides various access control engines: - -- Available today: - - ORY-flavored Access Control Policies with exact, glob, and regexp matching - strategies -- Available soon: - - [Access Control Lists](https://en.wikipedia.org/wiki/Access_control_list) - - [Role-based Access Control](https://en.wikipedia.org/wiki/Role-based_access_control) - - Role Based Access Control with Context (Google/Kubernetes-flavored) - - Amazon Web Services Identity & Access Management Policies (AWS IAM Policies) - -Each mechanism is powered by a decision engine implemented on top of the -[Open Policy Agent](https://www.openpolicyagent.org/) and provides well-defined -management and authorization REST API endpoints. diff --git a/docs/versioned_docs/version-v0.5/install.md b/docs/versioned_docs/version-v0.5/install.md deleted file mode 100644 index 0adb7f46f..000000000 --- a/docs/versioned_docs/version-v0.5/install.md +++ /dev/null @@ -1,83 +0,0 @@ ---- -id: install -title: Installation ---- - -Installing ORY Keto on any system is straightforward. We provide pre-built -binaries, Docker images, and support a number of package managers. - -## Docker - -We recommend using Docker to run ORY Keto: - -```shell -$ docker pull oryd/keto:v0.5.6-alpha.1 -$ docker run --rm -it oryd/keto:v0.5.6-alpha.1 help -``` - -## macOS - -You can install ORY Keto using [homebrew](https://brew.sh/) on macOS: - -```shell -$ brew tap ory/keto -$ brew install ory/keto/keto -$ keto help -``` - -## Linux - -On linux, you can use `bash <(curl ...)` to fetch the latest stable binary -using: - -```shell -$ bash <(curl https://raw.githubusercontent.com/ory/keto/master/install.sh) -b . v0.5.6-alpha.1 -$ ./keto help -``` - -You may want to move ORY Keto into your `$PATH`: - -```shell -$ sudo mv ./keto /usr/local/bin/ -$ keto help -``` - -## Windows - -You can install ORY Keto using [scoop](https://scoop.sh) on Windows: - -```shell -> scoop bucket add ory-keto https://github.com/ory/scoop-keto.git -> scoop install keto -> keto help -``` - -## Download Binaries - -The client and server **binaries are downloadable via -[GitHub releases](https://github.com/ory/keto/releases)**. There is currently no -installer available. You have to add the Keto binary to the PATH environment -variable yourself or put the binary in a location that is already in your -`$PATH`, for example `/usr/local/bin`. - -Once installed, you should be able to run: - -```shell -$ keto help -``` - -## Building from Source - -If you wish to compile ORY Keto yourself, you need to install and set up -[Go 1.12+](https://golang.org/) and add `$GOPATH/bin` to your `$PATH`. - -The following commands check out the latest release tag of ORY Keto, compile it, -and set up flags so that `keto 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/keto -$ cd $(go env GOPATH)/src/github.com/ory/keto -$ GO111MODULE=on make install-stable -$ $(go env GOPATH)/bin/keto help -``` diff --git a/docs/versioned_docs/version-v0.5/reference/api.md b/docs/versioned_docs/version-v0.5/reference/api.md deleted file mode 100644 index e52807025..000000000 --- a/docs/versioned_docs/version-v0.5/reference/api.md +++ /dev/null @@ -1,3107 +0,0 @@ ---- -title: REST API -id: api ---- - - - -Ory Keto is a cloud native access control server providing best-practice patterns (RBAC, ABAC, ACL, AWS IAM Policies, Kubernetes Roles, ...) via REST APIs. - -> 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. - - -## engines - - - -### Check if a request is allowed - -``` -POST /engines/acp/ory/{flavor}/allowed HTTP/1.1 -Content-Type: application/json -Accept: application/json - -``` - -Use this endpoint to check if a request is allowed or not. If the request is allowed, a 200 response with -`{"allowed":"true"}` will be sent. If the request is denied, a 403 response with `{"allowed":"false"}` will -be sent instead. - -#### Request body - -```json -{ - "action": "string", - "context": {}, - "resource": "string", - "subject": "string" -} -``` - - -##### Parameters - -|Parameter|In|Type|Required|Description| -|---|---|---|---|---| -|flavor|path|string|true|The ORY Access Control Policy flavor. Can be "regex", "glob", and "exact".| -|body|body|[oryAccessControlPolicyAllowedInput](#schemaoryaccesscontrolpolicyallowedinput)|false|none| - -#### Responses - - -##### Overview - -|Status|Meaning|Description|Schema| -|---|---|---|---| -|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|authorizationResult|[authorizationResult](#schemaauthorizationresult)| -|403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|authorizationResult|[authorizationResult](#schemaauthorizationresult)| -|500|[Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1)|The standard error format|Inline| - - -##### Response Schema - -Status Code **500** - -|Name|Type|Required|Restrictions|Description| -|---|---|---|---|---| -|» code|integer(int64)|false|none|none| -|» details|[object]|false|none|none| -|» message|string|false|none|none| -|» reason|string|false|none|none| -|» request|string|false|none|none| -|» status|string|false|none|none| - -##### Examples - -###### 200 response - -```json -{ - "allowed": true -} -``` - - - -#### Code samples - -
    - -
    -
    - -```shell -curl -X POST /engines/acp/ory/{flavor}/allowed \ - -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", "/engines/acp/ory/{flavor}/allowed", bytes.NewBuffer(body)) - req.Header = headers - - client := &http.Client{} - resp, err := client.Do(req) - // ... -} -``` - -
    -
    - -```nodejs -const fetch = require('node-fetch'); -const input = '{ - "action": "string", - "context": {}, - "resource": "string", - "subject": "string" -}'; -const headers = { - 'Content-Type': 'application/json', 'Accept': 'application/json' -} - -fetch('/engines/acp/ory/{flavor}/allowed', { - method: 'POST', - body: input, - headers -}) -.then(r => r.json()) -.then((body) => { - console.log(body) -}) -``` - -
    -
    - -```java -// This sample needs improvement. -URL obj = new URL("/engines/acp/ory/{flavor}/allowed"); - -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( - '/engines/acp/ory/{flavor}/allowed', - params={}, - headers = headers) - -print r.json() -``` - -
    -
    - -```ruby -require 'rest-client' -require 'json' - -headers = { - 'Content-Type' => 'application/json', - 'Accept' => 'application/json' -} - -result = RestClient.post '/engines/acp/ory/{flavor}/allowed', - params: {}, headers: headers - -p JSON.parse(result) -``` - -
    -
    -
    - - - -### listOryAccessControlPolicies - -``` -GET /engines/acp/ory/{flavor}/policies HTTP/1.1 -Accept: application/json - -``` - -List ORY Access Control Policies - - -##### Parameters - -|Parameter|In|Type|Required|Description| -|---|---|---|---|---| -|flavor|path|string|true|The ORY Access Control Policy flavor. Can be "regex", "glob", and "exact"| -|limit|query|integer(int64)|false|The maximum amount of policies returned.| -|offset|query|integer(int64)|false|The offset from where to start looking.| -|subject|query|string|false|The subject for whom the policies are to be listed.| -|resource|query|string|false|The resource for which the policies are to be listed.| -|action|query|string|false|The action for which policies are to be listed.| - -#### Responses - - -##### Overview - -|Status|Meaning|Description|Schema| -|---|---|---|---| -|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|Policies is an array of policies.|Inline| -|500|[Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1)|The standard error format|Inline| - - -##### Response Schema - -Status Code **200** - -|Name|Type|Required|Restrictions|Description| -|---|---|---|---|---| -|*anonymous*|[[oryAccessControlPolicy](#schemaoryaccesscontrolpolicy)]|false|none|none| -|» oryAccessControlPolicy specifies an ORY Access Policy document.|[oryAccessControlPolicy](#schemaoryaccesscontrolpolicy)|false|none|none| -|»» actions|[string]|false|none|Actions is an array representing all the actions this ORY Access Policy applies to.| -|»» conditions|object|false|none|Conditions represents a keyed object of conditions under which this ORY Access Policy is active.| -|»» description|string|false|none|Description is an optional, human-readable description.| -|»» effect|string|false|none|Effect is the effect of this ORY Access Policy. It can be "allow" or "deny".| -|»» id|string|false|none|ID is the unique identifier of the ORY Access Policy. It is used to query, update, and remove the ORY Access Policy.| -|»» resources|[string]|false|none|Resources is an array representing all the resources this ORY Access Policy applies to.| -|»» subjects|[string]|false|none|Subjects is an array representing all the subjects this ORY Access Policy applies to.| - -Status Code **500** - -|Name|Type|Required|Restrictions|Description| -|---|---|---|---|---| -|» code|integer(int64)|false|none|none| -|» details|[object]|false|none|none| -|» message|string|false|none|none| -|» reason|string|false|none|none| -|» request|string|false|none|none| -|» status|string|false|none|none| - -##### Examples - -###### 200 response - -```json -[ - { - "actions": [ - "string" - ], - "conditions": {}, - "description": "string", - "effect": "string", - "id": "string", - "resources": [ - "string" - ], - "subjects": [ - "string" - ] - } -] -``` - - - -#### Code samples - -
    - -
    -
    - -```shell -curl -X GET /engines/acp/ory/{flavor}/policies \ - -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", "/engines/acp/ory/{flavor}/policies", 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('/engines/acp/ory/{flavor}/policies', { - method: 'GET', - headers -}) -.then(r => r.json()) -.then((body) => { - console.log(body) -}) -``` - -
    -
    - -```java -// This sample needs improvement. -URL obj = new URL("/engines/acp/ory/{flavor}/policies"); - -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( - '/engines/acp/ory/{flavor}/policies', - params={}, - headers = headers) - -print r.json() -``` - -
    -
    - -```ruby -require 'rest-client' -require 'json' - -headers = { - 'Accept' => 'application/json' -} - -result = RestClient.get '/engines/acp/ory/{flavor}/policies', - params: {}, headers: headers - -p JSON.parse(result) -``` - -
    -
    -
    - - - -### upsertOryAccessControlPolicy - -``` -PUT /engines/acp/ory/{flavor}/policies HTTP/1.1 -Content-Type: application/json -Accept: application/json - -``` - -Upsert an ORY Access Control Policy - -#### Request body - -```json -{ - "actions": [ - "string" - ], - "conditions": {}, - "description": "string", - "effect": "string", - "id": "string", - "resources": [ - "string" - ], - "subjects": [ - "string" - ] -} -``` - - -##### Parameters - -|Parameter|In|Type|Required|Description| -|---|---|---|---|---| -|flavor|path|string|true|The ORY Access Control Policy flavor. Can be "regex", "glob", and "exact".| -|body|body|[oryAccessControlPolicy](#schemaoryaccesscontrolpolicy)|false|none| - -#### Responses - - -##### Overview - -|Status|Meaning|Description|Schema| -|---|---|---|---| -|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|oryAccessControlPolicy|[oryAccessControlPolicy](#schemaoryaccesscontrolpolicy)| -|500|[Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1)|The standard error format|Inline| - - -##### Response Schema - -Status Code **500** - -|Name|Type|Required|Restrictions|Description| -|---|---|---|---|---| -|» code|integer(int64)|false|none|none| -|» details|[object]|false|none|none| -|» message|string|false|none|none| -|» reason|string|false|none|none| -|» request|string|false|none|none| -|» status|string|false|none|none| - -##### Examples - -###### 200 response - -```json -{ - "actions": [ - "string" - ], - "conditions": {}, - "description": "string", - "effect": "string", - "id": "string", - "resources": [ - "string" - ], - "subjects": [ - "string" - ] -} -``` - - - -#### Code samples - -
    - -
    -
    - -```shell -curl -X PUT /engines/acp/ory/{flavor}/policies \ - -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", "/engines/acp/ory/{flavor}/policies", bytes.NewBuffer(body)) - req.Header = headers - - client := &http.Client{} - resp, err := client.Do(req) - // ... -} -``` - -
    -
    - -```nodejs -const fetch = require('node-fetch'); -const input = '{ - "actions": [ - "string" - ], - "conditions": {}, - "description": "string", - "effect": "string", - "id": "string", - "resources": [ - "string" - ], - "subjects": [ - "string" - ] -}'; -const headers = { - 'Content-Type': 'application/json', 'Accept': 'application/json' -} - -fetch('/engines/acp/ory/{flavor}/policies', { - method: 'PUT', - body: input, - headers -}) -.then(r => r.json()) -.then((body) => { - console.log(body) -}) -``` - -
    -
    - -```java -// This sample needs improvement. -URL obj = new URL("/engines/acp/ory/{flavor}/policies"); - -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( - '/engines/acp/ory/{flavor}/policies', - params={}, - headers = headers) - -print r.json() -``` - -
    -
    - -```ruby -require 'rest-client' -require 'json' - -headers = { - 'Content-Type' => 'application/json', - 'Accept' => 'application/json' -} - -result = RestClient.put '/engines/acp/ory/{flavor}/policies', - params: {}, headers: headers - -p JSON.parse(result) -``` - -
    -
    -
    - - - -### getOryAccessControlPolicy - -``` -GET /engines/acp/ory/{flavor}/policies/{id} HTTP/1.1 -Accept: application/json - -``` - -Get an ORY Access Control Policy - - -##### Parameters - -|Parameter|In|Type|Required|Description| -|---|---|---|---|---| -|flavor|path|string|true|The ORY Access Control Policy flavor. Can be "regex", "glob", and "exact".| -|id|path|string|true|The ID of the ORY Access Control Policy Role.| - -#### Responses - - -##### Overview - -|Status|Meaning|Description|Schema| -|---|---|---|---| -|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|oryAccessControlPolicy|[oryAccessControlPolicy](#schemaoryaccesscontrolpolicy)| -|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|The standard error format|Inline| -|500|[Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1)|The standard error format|Inline| - - -##### Response Schema - -Status Code **404** - -|Name|Type|Required|Restrictions|Description| -|---|---|---|---|---| -|» code|integer(int64)|false|none|none| -|» details|[object]|false|none|none| -|» message|string|false|none|none| -|» reason|string|false|none|none| -|» request|string|false|none|none| -|» status|string|false|none|none| - -Status Code **500** - -|Name|Type|Required|Restrictions|Description| -|---|---|---|---|---| -|» code|integer(int64)|false|none|none| -|» details|[object]|false|none|none| -|» message|string|false|none|none| -|» reason|string|false|none|none| -|» request|string|false|none|none| -|» status|string|false|none|none| - -##### Examples - -###### 200 response - -```json -{ - "actions": [ - "string" - ], - "conditions": {}, - "description": "string", - "effect": "string", - "id": "string", - "resources": [ - "string" - ], - "subjects": [ - "string" - ] -} -``` - - - -#### Code samples - -
    - -
    -
    - -```shell -curl -X GET /engines/acp/ory/{flavor}/policies/{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", "/engines/acp/ory/{flavor}/policies/{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('/engines/acp/ory/{flavor}/policies/{id}', { - method: 'GET', - headers -}) -.then(r => r.json()) -.then((body) => { - console.log(body) -}) -``` - -
    -
    - -```java -// This sample needs improvement. -URL obj = new URL("/engines/acp/ory/{flavor}/policies/{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( - '/engines/acp/ory/{flavor}/policies/{id}', - params={}, - headers = headers) - -print r.json() -``` - -
    -
    - -```ruby -require 'rest-client' -require 'json' - -headers = { - 'Accept' => 'application/json' -} - -result = RestClient.get '/engines/acp/ory/{flavor}/policies/{id}', - params: {}, headers: headers - -p JSON.parse(result) -``` - -
    -
    -
    - - - -### deleteOryAccessControlPolicy - -``` -DELETE /engines/acp/ory/{flavor}/policies/{id} HTTP/1.1 -Accept: application/json - -``` - -Delete an ORY Access Control Policy - - -##### Parameters - -|Parameter|In|Type|Required|Description| -|---|---|---|---|---| -|flavor|path|string|true|The ORY Access Control Policy flavor. Can be "regex", "glob", and "exact".| -|id|path|string|true|The ID of the ORY Access Control Policy Role.| - -#### Responses - - -##### Overview - -|Status|Meaning|Description|Schema| -|---|---|---|---| -|204|[No Content](https://tools.ietf.org/html/rfc7231#section-6.3.5)|An empty response|None| -|500|[Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1)|The standard error format|Inline| - - -##### Response Schema - -Status Code **500** - -|Name|Type|Required|Restrictions|Description| -|---|---|---|---|---| -|» code|integer(int64)|false|none|none| -|» details|[object]|false|none|none| -|» message|string|false|none|none| -|» reason|string|false|none|none| -|» request|string|false|none|none| -|» status|string|false|none|none| - -##### Examples - -###### 500 response - -```json -{ - "code": 0, - "details": [ - {} - ], - "message": "string", - "reason": "string", - "request": "string", - "status": "string" -} -``` - - - -#### Code samples - -
    - -
    -
    - -```shell -curl -X DELETE /engines/acp/ory/{flavor}/policies/{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", "/engines/acp/ory/{flavor}/policies/{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('/engines/acp/ory/{flavor}/policies/{id}', { - method: 'DELETE', - headers -}) -.then(r => r.json()) -.then((body) => { - console.log(body) -}) -``` - -
    -
    - -```java -// This sample needs improvement. -URL obj = new URL("/engines/acp/ory/{flavor}/policies/{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( - '/engines/acp/ory/{flavor}/policies/{id}', - params={}, - headers = headers) - -print r.json() -``` - -
    -
    - -```ruby -require 'rest-client' -require 'json' - -headers = { - 'Accept' => 'application/json' -} - -result = RestClient.delete '/engines/acp/ory/{flavor}/policies/{id}', - params: {}, headers: headers - -p JSON.parse(result) -``` - -
    -
    -
    - - - -### List ORY Access Control Policy Roles - -``` -GET /engines/acp/ory/{flavor}/roles HTTP/1.1 -Accept: application/json - -``` - -Roles group several subjects into one. Rules can be assigned to ORY Access Control Policy (OACP) by using the Role ID -as subject in the OACP. - - -##### Parameters - -|Parameter|In|Type|Required|Description| -|---|---|---|---|---| -|flavor|path|string|true|The ORY Access Control Policy flavor. Can be "regex", "glob", and "exact"| -|limit|query|integer(int64)|false|The maximum amount of policies returned.| -|offset|query|integer(int64)|false|The offset from where to start looking.| -|member|query|string|false|The member for which the roles are to be listed.| - -#### Responses - - -##### Overview - -|Status|Meaning|Description|Schema| -|---|---|---|---| -|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|Roles is an array of roles.|Inline| -|500|[Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1)|The standard error format|Inline| - - -##### Response Schema - -Status Code **200** - -|Name|Type|Required|Restrictions|Description| -|---|---|---|---|---| -|*anonymous*|[[oryAccessControlPolicyRole](#schemaoryaccesscontrolpolicyrole)]|false|none|[oryAccessControlPolicyRole represents a group of users that share the same role. A role could be an administrator, a moderator, a regular user or some other sort of role.]| -|» id|string|false|none|ID is the role's unique id.| -|» members|[string]|false|none|Members is who belongs to the role.| - -Status Code **500** - -|Name|Type|Required|Restrictions|Description| -|---|---|---|---|---| -|» code|integer(int64)|false|none|none| -|» details|[object]|false|none|none| -|» message|string|false|none|none| -|» reason|string|false|none|none| -|» request|string|false|none|none| -|» status|string|false|none|none| - -##### Examples - -###### 200 response - -```json -[ - { - "id": "string", - "members": [ - "string" - ] - } -] -``` - - - -#### Code samples - -
    - -
    -
    - -```shell -curl -X GET /engines/acp/ory/{flavor}/roles \ - -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", "/engines/acp/ory/{flavor}/roles", 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('/engines/acp/ory/{flavor}/roles', { - method: 'GET', - headers -}) -.then(r => r.json()) -.then((body) => { - console.log(body) -}) -``` - -
    -
    - -```java -// This sample needs improvement. -URL obj = new URL("/engines/acp/ory/{flavor}/roles"); - -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( - '/engines/acp/ory/{flavor}/roles', - params={}, - headers = headers) - -print r.json() -``` - -
    -
    - -```ruby -require 'rest-client' -require 'json' - -headers = { - 'Accept' => 'application/json' -} - -result = RestClient.get '/engines/acp/ory/{flavor}/roles', - params: {}, headers: headers - -p JSON.parse(result) -``` - -
    -
    -
    - - - -### Upsert an ORY Access Control Policy Role - -``` -PUT /engines/acp/ory/{flavor}/roles HTTP/1.1 -Content-Type: application/json -Accept: application/json - -``` - -Roles group several subjects into one. Rules can be assigned to ORY Access Control Policy (OACP) by using the Role ID -as subject in the OACP. - -#### Request body - -```json -{ - "id": "string", - "members": [ - "string" - ] -} -``` - - -##### Parameters - -|Parameter|In|Type|Required|Description| -|---|---|---|---|---| -|flavor|path|string|true|The ORY Access Control Policy flavor. Can be "regex", "glob", and "exact".| -|body|body|[oryAccessControlPolicyRole](#schemaoryaccesscontrolpolicyrole)|false|none| - -#### Responses - - -##### Overview - -|Status|Meaning|Description|Schema| -|---|---|---|---| -|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|oryAccessControlPolicyRole|[oryAccessControlPolicyRole](#schemaoryaccesscontrolpolicyrole)| -|500|[Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1)|The standard error format|Inline| - - -##### Response Schema - -Status Code **500** - -|Name|Type|Required|Restrictions|Description| -|---|---|---|---|---| -|» code|integer(int64)|false|none|none| -|» details|[object]|false|none|none| -|» message|string|false|none|none| -|» reason|string|false|none|none| -|» request|string|false|none|none| -|» status|string|false|none|none| - -##### Examples - -###### 200 response - -```json -{ - "id": "string", - "members": [ - "string" - ] -} -``` - - - -#### Code samples - -
    - -
    -
    - -```shell -curl -X PUT /engines/acp/ory/{flavor}/roles \ - -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", "/engines/acp/ory/{flavor}/roles", bytes.NewBuffer(body)) - req.Header = headers - - client := &http.Client{} - resp, err := client.Do(req) - // ... -} -``` - -
    -
    - -```nodejs -const fetch = require('node-fetch'); -const input = '{ - "id": "string", - "members": [ - "string" - ] -}'; -const headers = { - 'Content-Type': 'application/json', 'Accept': 'application/json' -} - -fetch('/engines/acp/ory/{flavor}/roles', { - method: 'PUT', - body: input, - headers -}) -.then(r => r.json()) -.then((body) => { - console.log(body) -}) -``` - -
    -
    - -```java -// This sample needs improvement. -URL obj = new URL("/engines/acp/ory/{flavor}/roles"); - -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( - '/engines/acp/ory/{flavor}/roles', - params={}, - headers = headers) - -print r.json() -``` - -
    -
    - -```ruby -require 'rest-client' -require 'json' - -headers = { - 'Content-Type' => 'application/json', - 'Accept' => 'application/json' -} - -result = RestClient.put '/engines/acp/ory/{flavor}/roles', - params: {}, headers: headers - -p JSON.parse(result) -``` - -
    -
    -
    - - - -### Get an ORY Access Control Policy Role - -``` -GET /engines/acp/ory/{flavor}/roles/{id} HTTP/1.1 -Accept: application/json - -``` - -Roles group several subjects into one. Rules can be assigned to ORY Access Control Policy (OACP) by using the Role ID -as subject in the OACP. - - -##### Parameters - -|Parameter|In|Type|Required|Description| -|---|---|---|---|---| -|flavor|path|string|true|The ORY Access Control Policy flavor. Can be "regex", "glob", and "exact".| -|id|path|string|true|The ID of the ORY Access Control Policy Role.| - -#### Responses - - -##### Overview - -|Status|Meaning|Description|Schema| -|---|---|---|---| -|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|oryAccessControlPolicyRole|[oryAccessControlPolicyRole](#schemaoryaccesscontrolpolicyrole)| -|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|The standard error format|Inline| -|500|[Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1)|The standard error format|Inline| - - -##### Response Schema - -Status Code **404** - -|Name|Type|Required|Restrictions|Description| -|---|---|---|---|---| -|» code|integer(int64)|false|none|none| -|» details|[object]|false|none|none| -|» message|string|false|none|none| -|» reason|string|false|none|none| -|» request|string|false|none|none| -|» status|string|false|none|none| - -Status Code **500** - -|Name|Type|Required|Restrictions|Description| -|---|---|---|---|---| -|» code|integer(int64)|false|none|none| -|» details|[object]|false|none|none| -|» message|string|false|none|none| -|» reason|string|false|none|none| -|» request|string|false|none|none| -|» status|string|false|none|none| - -##### Examples - -###### 200 response - -```json -{ - "id": "string", - "members": [ - "string" - ] -} -``` - - - -#### Code samples - -
    - -
    -
    - -```shell -curl -X GET /engines/acp/ory/{flavor}/roles/{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", "/engines/acp/ory/{flavor}/roles/{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('/engines/acp/ory/{flavor}/roles/{id}', { - method: 'GET', - headers -}) -.then(r => r.json()) -.then((body) => { - console.log(body) -}) -``` - -
    -
    - -```java -// This sample needs improvement. -URL obj = new URL("/engines/acp/ory/{flavor}/roles/{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( - '/engines/acp/ory/{flavor}/roles/{id}', - params={}, - headers = headers) - -print r.json() -``` - -
    -
    - -```ruby -require 'rest-client' -require 'json' - -headers = { - 'Accept' => 'application/json' -} - -result = RestClient.get '/engines/acp/ory/{flavor}/roles/{id}', - params: {}, headers: headers - -p JSON.parse(result) -``` - -
    -
    -
    - - - -### Delete an ORY Access Control Policy Role - -``` -DELETE /engines/acp/ory/{flavor}/roles/{id} HTTP/1.1 -Accept: application/json - -``` - -Roles group several subjects into one. Rules can be assigned to ORY Access Control Policy (OACP) by using the Role ID -as subject in the OACP. - - -##### Parameters - -|Parameter|In|Type|Required|Description| -|---|---|---|---|---| -|flavor|path|string|true|The ORY Access Control Policy flavor. Can be "regex", "glob", and "exact".| -|id|path|string|true|The ID of the ORY Access Control Policy Role.| - -#### Responses - - -##### Overview - -|Status|Meaning|Description|Schema| -|---|---|---|---| -|204|[No Content](https://tools.ietf.org/html/rfc7231#section-6.3.5)|An empty response|None| -|500|[Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1)|The standard error format|Inline| - - -##### Response Schema - -Status Code **500** - -|Name|Type|Required|Restrictions|Description| -|---|---|---|---|---| -|» code|integer(int64)|false|none|none| -|» details|[object]|false|none|none| -|» message|string|false|none|none| -|» reason|string|false|none|none| -|» request|string|false|none|none| -|» status|string|false|none|none| - -##### Examples - -###### 500 response - -```json -{ - "code": 0, - "details": [ - {} - ], - "message": "string", - "reason": "string", - "request": "string", - "status": "string" -} -``` - - - -#### Code samples - -
    - -
    -
    - -```shell -curl -X DELETE /engines/acp/ory/{flavor}/roles/{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", "/engines/acp/ory/{flavor}/roles/{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('/engines/acp/ory/{flavor}/roles/{id}', { - method: 'DELETE', - headers -}) -.then(r => r.json()) -.then((body) => { - console.log(body) -}) -``` - -
    -
    - -```java -// This sample needs improvement. -URL obj = new URL("/engines/acp/ory/{flavor}/roles/{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( - '/engines/acp/ory/{flavor}/roles/{id}', - params={}, - headers = headers) - -print r.json() -``` - -
    -
    - -```ruby -require 'rest-client' -require 'json' - -headers = { - 'Accept' => 'application/json' -} - -result = RestClient.delete '/engines/acp/ory/{flavor}/roles/{id}', - params: {}, headers: headers - -p JSON.parse(result) -``` - -
    -
    -
    - - - -### Add a member to an ORY Access Control Policy Role - -``` -PUT /engines/acp/ory/{flavor}/roles/{id}/members HTTP/1.1 -Content-Type: application/json -Accept: application/json - -``` - -Roles group several subjects into one. Rules can be assigned to ORY Access Control Policy (OACP) by using the Role ID -as subject in the OACP. - -#### Request body - -```json -{ - "members": [ - "string" - ] -} -``` - - -##### Parameters - -|Parameter|In|Type|Required|Description| -|---|---|---|---|---| -|flavor|path|string|true|The ORY Access Control Policy flavor. Can be "regex", "glob", and "exact".| -|id|path|string|true|The ID of the ORY Access Control Policy Role.| -|body|body|[addOryAccessControlPolicyRoleMembersBody](#schemaaddoryaccesscontrolpolicyrolemembersbody)|false|none| - -#### Responses - - -##### Overview - -|Status|Meaning|Description|Schema| -|---|---|---|---| -|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|oryAccessControlPolicyRole|[oryAccessControlPolicyRole](#schemaoryaccesscontrolpolicyrole)| -|500|[Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1)|The standard error format|Inline| - - -##### Response Schema - -Status Code **500** - -|Name|Type|Required|Restrictions|Description| -|---|---|---|---|---| -|» code|integer(int64)|false|none|none| -|» details|[object]|false|none|none| -|» message|string|false|none|none| -|» reason|string|false|none|none| -|» request|string|false|none|none| -|» status|string|false|none|none| - -##### Examples - -###### 200 response - -```json -{ - "id": "string", - "members": [ - "string" - ] -} -``` - - - -#### Code samples - -
    - -
    -
    - -```shell -curl -X PUT /engines/acp/ory/{flavor}/roles/{id}/members \ - -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", "/engines/acp/ory/{flavor}/roles/{id}/members", bytes.NewBuffer(body)) - req.Header = headers - - client := &http.Client{} - resp, err := client.Do(req) - // ... -} -``` - -
    -
    - -```nodejs -const fetch = require('node-fetch'); -const input = '{ - "members": [ - "string" - ] -}'; -const headers = { - 'Content-Type': 'application/json', 'Accept': 'application/json' -} - -fetch('/engines/acp/ory/{flavor}/roles/{id}/members', { - method: 'PUT', - body: input, - headers -}) -.then(r => r.json()) -.then((body) => { - console.log(body) -}) -``` - -
    -
    - -```java -// This sample needs improvement. -URL obj = new URL("/engines/acp/ory/{flavor}/roles/{id}/members"); - -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( - '/engines/acp/ory/{flavor}/roles/{id}/members', - params={}, - headers = headers) - -print r.json() -``` - -
    -
    - -```ruby -require 'rest-client' -require 'json' - -headers = { - 'Content-Type' => 'application/json', - 'Accept' => 'application/json' -} - -result = RestClient.put '/engines/acp/ory/{flavor}/roles/{id}/members', - params: {}, headers: headers - -p JSON.parse(result) -``` - -
    -
    -
    - - - -### Remove a member from an ORY Access Control Policy Role - -``` -DELETE /engines/acp/ory/{flavor}/roles/{id}/members/{member} HTTP/1.1 -Accept: application/json - -``` - -Roles group several subjects into one. Rules can be assigned to ORY Access Control Policy (OACP) by using the Role ID -as subject in the OACP. - - -##### Parameters - -|Parameter|In|Type|Required|Description| -|---|---|---|---|---| -|flavor|path|string|true|The ORY Access Control Policy flavor. Can be "regex", "glob", and "exact".| -|id|path|string|true|The ID of the ORY Access Control Policy Role.| -|member|path|string|true|The member to be removed.| - -#### Responses - - -##### Overview - -|Status|Meaning|Description|Schema| -|---|---|---|---| -|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|An empty response|None| -|500|[Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1)|The standard error format|Inline| - - -##### Response Schema - -Status Code **500** - -|Name|Type|Required|Restrictions|Description| -|---|---|---|---|---| -|» code|integer(int64)|false|none|none| -|» details|[object]|false|none|none| -|» message|string|false|none|none| -|» reason|string|false|none|none| -|» request|string|false|none|none| -|» status|string|false|none|none| - -##### Examples - -###### 500 response - -```json -{ - "code": 0, - "details": [ - {} - ], - "message": "string", - "reason": "string", - "request": "string", - "status": "string" -} -``` - - - -#### Code samples - -
    - -
    -
    - -```shell -curl -X DELETE /engines/acp/ory/{flavor}/roles/{id}/members/{member} \ - -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", "/engines/acp/ory/{flavor}/roles/{id}/members/{member}", 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('/engines/acp/ory/{flavor}/roles/{id}/members/{member}', { - method: 'DELETE', - headers -}) -.then(r => r.json()) -.then((body) => { - console.log(body) -}) -``` - -
    -
    - -```java -// This sample needs improvement. -URL obj = new URL("/engines/acp/ory/{flavor}/roles/{id}/members/{member}"); - -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( - '/engines/acp/ory/{flavor}/roles/{id}/members/{member}', - params={}, - headers = headers) - -print r.json() -``` - -
    -
    - -```ruby -require 'rest-client' -require 'json' - -headers = { - 'Accept' => 'application/json' -} - -result = RestClient.delete '/engines/acp/ory/{flavor}/roles/{id}/members/{member}', - params: {}, headers: headers - -p JSON.parse(result) -``` - -
    -
    -
    - - -## 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)|The standard error format|Inline| - - -##### Response Schema - -Status Code **500** - -|Name|Type|Required|Restrictions|Description| -|---|---|---|---|---| -|» code|integer(int64)|false|none|none| -|» details|[object]|false|none|none| -|» message|string|false|none|none| -|» reason|string|false|none|none| -|» request|string|false|none|none| -|» status|string|false|none|none| - -##### 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) -``` - -
    -
    -
    - - -## 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 - -addOryAccessControlPolicyRoleMembersBody -#### addOryAccessControlPolicyRoleMembersBody - - - -```json -{ - "members": [ - "string" - ] -} - -``` - -#### Properties - -|Name|Type|Required|Restrictions|Description| -|---|---|---|---|---| -|members|[string]|false|none|The members to be added.| - -authorizationResult -#### authorizationResult - - - -```json -{ - "allowed": true -} - -``` - -*AuthorizationResult is the result of an access control decision. It contains the decision outcome.* - -#### Properties - -|Name|Type|Required|Restrictions|Description| -|---|---|---|---|---| -|allowed|boolean|true|none|Allowed is true if the request should be allowed and false otherwise.| - -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".| - -oryAccessControlPolicy -#### oryAccessControlPolicy - - - -```json -{ - "actions": [ - "string" - ], - "conditions": {}, - "description": "string", - "effect": "string", - "id": "string", - "resources": [ - "string" - ], - "subjects": [ - "string" - ] -} - -``` - -*oryAccessControlPolicy specifies an ORY Access Policy document.* - -#### Properties - -|Name|Type|Required|Restrictions|Description| -|---|---|---|---|---| -|actions|[string]|false|none|Actions is an array representing all the actions this ORY Access Policy applies to.| -|conditions|object|false|none|Conditions represents a keyed object of conditions under which this ORY Access Policy is active.| -|description|string|false|none|Description is an optional, human-readable description.| -|effect|string|false|none|Effect is the effect of this ORY Access Policy. It can be "allow" or "deny".| -|id|string|false|none|ID is the unique identifier of the ORY Access Policy. It is used to query, update, and remove the ORY Access Policy.| -|resources|[string]|false|none|Resources is an array representing all the resources this ORY Access Policy applies to.| -|subjects|[string]|false|none|Subjects is an array representing all the subjects this ORY Access Policy applies to.| - -oryAccessControlPolicyAllowedInput -#### oryAccessControlPolicyAllowedInput - - - -```json -{ - "action": "string", - "context": {}, - "resource": "string", - "subject": "string" -} - -``` - -*Input for checking if a request is allowed or not.* - -#### Properties - -|Name|Type|Required|Restrictions|Description| -|---|---|---|---|---| -|action|string|false|none|Action is the action that is requested on the resource.| -|context|object|false|none|Context is the request's environmental context.| -|resource|string|false|none|Resource is the resource that access is requested to.| -|subject|string|false|none|Subject is the subject that is requesting access.| - -oryAccessControlPolicyRole -#### oryAccessControlPolicyRole - - - -```json -{ - "id": "string", - "members": [ - "string" - ] -} - -``` - -*oryAccessControlPolicyRole represents a group of users that share the same role. A role could be an administrator, a moderator, a regular -user or some other sort of role.* - -#### Properties - -|Name|Type|Required|Restrictions|Description| -|---|---|---|---|---| -|id|string|false|none|ID is the role's unique id.| -|members|[string]|false|none|Members is who belongs to the role.| - -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/versioned_docs/version-v0.5/reference/configuration.md b/docs/versioned_docs/version-v0.5/reference/configuration.md deleted file mode 100644 index 8b1dc00ea..000000000 --- a/docs/versioned_docs/version-v0.5/reference/configuration.md +++ /dev/null @@ -1,431 +0,0 @@ ---- -id: configuration -title: Configuration ---- - - - -If file `$HOME/.keto.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: `keto --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 -# - - -## Data Source Name ## -# -# Sets the data source name. This configures the backend where ORY Keto persists data. If dsn is "memory", data will be written to memory and is lost when you restart this instance. ORY Hydra supports popular SQL databases. For more detailed configuration information go to: https://www.ory.sh/docs/hydra/dependencies-environment#sql -# -# Examples: -# - postgres://user:password@host:123/database -# - mysql://user:password@tcp(host:123)/database -# - memory -# -# Set this value using environment variables on -# - Linux/macOS: -# $ export DSN= -# - Windows Command Line (CMD): -# > set DSN= -# -dsn: memory - -## HTTP REST API ## -# -serve: - - ## Port ## - # - # The port to listen on. - # - # Default value: 4456 - # - # Examples: - # - 4456 - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_PORT= - # - Windows Command Line (CMD): - # > set SERVE_PORT= - # - port: 4456 - - ## Host ## - # - # The network interface to listen on. - # - # Examples: - # - localhost - # - 127.0.0.1 - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_HOST= - # - Windows Command Line (CMD): - # > set SERVE_HOST= - # - host: localhost - - ## Cross Origin Resource Sharing (CORS) ## - # - # Configure [Cross Origin Resource Sharing (CORS)](http://www.w3.org/TR/cors/) using the following options. - # - cors: - - ## Enable CORS ## - # - # If set to true, CORS will be enabled and preflight-requests (OPTION) will be answered. - # - # Default value: false - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_CORS_ENABLED= - # - Windows Command Line (CMD): - # > set SERVE_CORS_ENABLED= - # - enabled: true - - ## Allowed Origins ## - # - # A list of origins a cross-domain request can be executed from. If the special * value is present in the list, all origins will be allowed. An origin may contain a wildcard (*) to replace 0 or more characters (i.e.: http://*.domain.com). Usage of wildcards implies a small performance penality. Only one wildcard can be used per origin. - # - # Default value: * - # - # Examples: - # - - https://example.com - # - https://*.example.com - # - https://*.foo.example.com - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_CORS_ALLOWED_ORIGINS= - # - Windows Command Line (CMD): - # > set SERVE_CORS_ALLOWED_ORIGINS= - # - allowed_origins: - - https://example.com - - https://*.example.com - - https://*.foo.example.com - - ## Allowed HTTP Methods ## - # - # A list of methods the client is allowed to use with cross-domain requests. - # - # Default value: GET,POST,PUT,PATCH,DELETE - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_CORS_ALLOWED_METHODS= - # - Windows Command Line (CMD): - # > set SERVE_CORS_ALLOWED_METHODS= - # - allowed_methods: - - PATCH - - GET - - CONNECT - - POST - - DELETE - - ## Allowed Request HTTP Headers ## - # - # A list of non simple headers the client is allowed to use with cross-domain requests. - # - # Default value: Authorization,Content-Type - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_CORS_ALLOWED_HEADERS= - # - Windows Command Line (CMD): - # > set SERVE_CORS_ALLOWED_HEADERS= - # - allowed_headers: - - in - - in deserunt - - reprehenderit - - ## Allowed Response HTTP Headers ## - # - # Indicates which headers are safe to expose to the API of a CORS API specification - # - # Default value: Content-Type - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_CORS_EXPOSED_HEADERS= - # - Windows Command Line (CMD): - # > set SERVE_CORS_EXPOSED_HEADERS= - # - exposed_headers: - - est exercitation dolor fugiat laborum - - sed aliqua non - - Duis nulla - - ## Allow HTTP Credentials ## - # - # Indicates whether the request can include user credentials like cookies, HTTP authentication or client side SSL certificates. - # - # Default value: false - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_CORS_ALLOW_CREDENTIALS= - # - Windows Command Line (CMD): - # > set SERVE_CORS_ALLOW_CREDENTIALS= - # - allow_credentials: true - - ## Maximum Age ## - # - # Indicates how long (in seconds) the results of a preflight request can be cached. The default is 0 which stands for no max age. - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_CORS_MAX_AGE= - # - Windows Command Line (CMD): - # > set SERVE_CORS_MAX_AGE= - # - max_age: 60979592 - - ## Enable Debugging ## - # - # Set to true to debug server side CORS issues. - # - # Default value: false - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_CORS_DEBUG= - # - Windows Command Line (CMD): - # > set SERVE_CORS_DEBUG= - # - debug: true - - ## HTTPS ## - # - # Configure HTTP over TLS (HTTPS). All options can also be set using environment variables by replacing dots (`.`) with underscores (`_`) and uppercasing the key. For example, `some.prefix.tls.key.path` becomes `export SOME_PREFIX_TLS_KEY_PATH`. If all keys are left undefined, TLS will be disabled. - # - tls: - - ## Private Key (PEM) ## - # - key: - - ## path ## - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_TLS_KEY_PATH= - # - Windows Command Line (CMD): - # > set SERVE_TLS_KEY_PATH= - # - path: path/to/file.pem - - ## base64 ## - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_TLS_KEY_BASE64= - # - Windows Command Line (CMD): - # > set SERVE_TLS_KEY_BASE64= - # - base64: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tXG5NSUlEWlRDQ0FrMmdBd0lCQWdJRVY1eE90REFOQmdr... - - ## TLS Certificate (PEM) ## - # - cert: - - ## path ## - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_TLS_CERT_PATH= - # - Windows Command Line (CMD): - # > set SERVE_TLS_CERT_PATH= - # - path: path/to/file.pem - - ## base64 ## - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_TLS_CERT_BASE64= - # - Windows Command Line (CMD): - # > set SERVE_TLS_CERT_BASE64= - # - base64: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tXG5NSUlEWlRDQ0FrMmdBd0lCQWdJRVY1eE90REFOQmdr... - -## Profiling ## -# -# Enables CPU or memory profiling if set. For more details on profiling Go programs read [Profiling Go Programs](https://blog.golang.org/profiling-go-programs). -# -# Set this value using environment variables on -# - Linux/macOS: -# $ export PROFILING= -# - Windows Command Line (CMD): -# > set PROFILING= -# -profiling: "" - -## Log ## -# -# Configure logging using the following options. Logging will always be sent to stdout and stderr. -# -log: - - ## Level ## - # - # Debug enables stack traces on errors. Can also be set using environment variable LOG_LEVEL. - # - # Default value: info - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export LOG_LEVEL= - # - Windows Command Line (CMD): - # > set LOG_LEVEL= - # - level: info - - ## Format ## - # - # The log format can either be text or JSON. - # - # Default value: text - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export LOG_FORMAT= - # - Windows Command Line (CMD): - # > set LOG_FORMAT= - # - format: text - -## tracing ## -# -# ORY Hydra supports distributed tracing. -# -tracing: - - ## provider ## - # - # Set this to the tracing backend you wish to use. Currently supports jaeger. If omitted or empty, tracing will be disabled. - # - # Examples: - # - jaeger - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export TRACING_PROVIDER= - # - Windows Command Line (CMD): - # > set TRACING_PROVIDER= - # - provider: jaeger - - ## service_name ## - # - # Specifies the service name to use on the tracer. - # - # Examples: - # - ORY Hydra - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export TRACING_SERVICE_NAME= - # - Windows Command Line (CMD): - # > set TRACING_SERVICE_NAME= - # - service_name: ORY Hydra - - ## providers ## - # - providers: - - ## jaeger ## - # - # Configures the jaeger tracing backend. - # - jaeger: - - ## local_agent_address ## - # - # The address of the jaeger-agent where spans should be sent to. - # - # Examples: - # - 127.0.0.1:6831 - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export TRACING_PROVIDERS_JAEGER_LOCAL_AGENT_ADDRESS= - # - Windows Command Line (CMD): - # > set TRACING_PROVIDERS_JAEGER_LOCAL_AGENT_ADDRESS= - # - local_agent_address: 127.0.0.1:6831 - - ## propagation ## - # - # The tracing header format - # - # Examples: - # - jaeger - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export TRACING_PROVIDERS_JAEGER_PROPAGATION= - # - Windows Command Line (CMD): - # > set TRACING_PROVIDERS_JAEGER_PROPAGATION= - # - propagation: jaeger - - ## sampling ## - # - # Examples: - # - type: const - # value: 1 - # server_url: http://localhost:5778/sampling - # - sampling: - - ## type ## - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export TRACING_PROVIDERS_JAEGER_SAMPLING_TYPE= - # - Windows Command Line (CMD): - # > set TRACING_PROVIDERS_JAEGER_SAMPLING_TYPE= - # - type: const - - ## value ## - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export TRACING_PROVIDERS_JAEGER_SAMPLING_VALUE= - # - Windows Command Line (CMD): - # > set TRACING_PROVIDERS_JAEGER_SAMPLING_VALUE= - # - value: 1 - - ## server_url ## - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export TRACING_PROVIDERS_JAEGER_SAMPLING_SERVER_URL= - # - Windows Command Line (CMD): - # > set TRACING_PROVIDERS_JAEGER_SAMPLING_SERVER_URL= - # - server_url: http://localhost:5778/sampling - -``` \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.5/sdk/index.md b/docs/versioned_docs/version-v0.5/sdk/index.md deleted file mode 100644 index 05f3d2a72..000000000 --- a/docs/versioned_docs/version-v0.5/sdk/index.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -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](../reference/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-keto-client/) -- [PHP](https://packagist.org/packages/ory/keto-client) -- [Go](https://github.com/ory/keto-client-go) -- [NodeJS](https://www.npmjs.com/package/@oryd/keto-client) (with TypeScript) -- [Java](https://search.maven.org/artifact/sh.ory.keto/keto-client) -- [Ruby](https://rubygems.org/gems/ory-keto-client) - -Missing your programming language? -[Create an issue](https://github.com/ory/keto/issues) and help us build, test -and publish the SDK for your programming language! diff --git a/docs/versioned_docs/version-v0.5/secure.md b/docs/versioned_docs/version-v0.5/secure.md deleted file mode 100644 index 74b423a2b..000000000 --- a/docs/versioned_docs/version-v0.5/secure.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -id: secure -title: Secure ---- - -Similar to other services in our ecosystem, ORY Keto's APIs have no integrated -access control on their own. Any request made to any Keto API is considered -authenticated, authorized, and is thus being executed. However, these endpoints -are very sensitive as they define who is allowed to do what in your system. - -Please protect these endpoints using -[ORY Oathkeeper](https://github.com/ory/oathkeeper) or a comparable API Gateway. -How you protect them, is up to you. - -If you require support for this, consider [asking us](mailto:hi@ory.sh). diff --git a/docs/versioned_docs/version-v0.6/.gitkeep b/docs/versioned_docs/version-v0.6/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/docs/versioned_docs/version-v0.6/cli/keto-check.md b/docs/versioned_docs/version-v0.6/cli/keto-check.md deleted file mode 100644 index 01eaf616e..000000000 --- a/docs/versioned_docs/version-v0.6/cli/keto-check.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -id: keto-check -title: keto check -description: keto check Check whether a subject has a relation on an object ---- - - - -## keto check - -Check whether a subject has a relation on an object - -### Synopsis - -Check whether a subject has a relation on an object. This method resolves -subject sets and subject set rewrites. - -``` -keto check <subject> <relation> <namespace> <object> [flags] -``` - -### Options - -``` - -f, --format string Set the output format. One of table, json, and json-pretty. (default "default") - -h, --help help for check - -q, --quiet Be quiet with output printing. - --read-remote string Remote URL of the read API endpoint. (default "127.0.0.1:4466") - --write-remote string Remote URL of the write API endpoint. (default "127.0.0.1:4467") -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/circleci/keto.yml]) -``` - -### SEE ALSO - -- [keto](keto) - Global and consistent permission and authorization server diff --git a/docs/versioned_docs/version-v0.6/cli/keto-expand.md b/docs/versioned_docs/version-v0.6/cli/keto-expand.md deleted file mode 100644 index 52231ef3a..000000000 --- a/docs/versioned_docs/version-v0.6/cli/keto-expand.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -id: keto-expand -title: keto expand -description: keto expand Expand a subject set ---- - - - -## keto expand - -Expand a subject set - -### Synopsis - -Expand a subject set into a tree of subjects. - -``` -keto expand <relation> <namespace> <object> [flags] -``` - -### Options - -``` - -f, --format string Set the output format. One of default, json, and json-pretty. (default "default") - -h, --help help for expand - -d, --max-depth int32 maximum depth of the tree (default 100) - --read-remote string Remote URL of the read API endpoint. (default "127.0.0.1:4466") - --write-remote string Remote URL of the write API endpoint. (default "127.0.0.1:4467") -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/circleci/keto.yml]) -``` - -### SEE ALSO - -- [keto](keto) - Global and consistent permission and authorization server diff --git a/docs/versioned_docs/version-v0.6/cli/keto-migrate-down.md b/docs/versioned_docs/version-v0.6/cli/keto-migrate-down.md deleted file mode 100644 index 466ca27fd..000000000 --- a/docs/versioned_docs/version-v0.6/cli/keto-migrate-down.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -id: keto-migrate-down -title: keto migrate down -description: keto migrate down Migrate the database down ---- - - - -## keto migrate down - -Migrate the database down - -### Synopsis - -Migrate the database down a specific amount of steps. Pass 0 steps to fully -migrate down. This does not affect namespaces. Use `keto namespace migrate down` -for migrating namespaces. - -``` -keto migrate down <steps> [flags] -``` - -### Options - -``` - -f, --format string Set the output format. One of table, json, and json-pretty. (default "default") - -h, --help help for down - -q, --quiet Be quiet with output printing. - -y, --yes yes to all questions, no user input required -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/circleci/keto.yml]) -``` - -### SEE ALSO - -- [keto migrate](keto-migrate) - Commands to migrate the database diff --git a/docs/versioned_docs/version-v0.6/cli/keto-migrate-status.md b/docs/versioned_docs/version-v0.6/cli/keto-migrate-status.md deleted file mode 100644 index 154640dd1..000000000 --- a/docs/versioned_docs/version-v0.6/cli/keto-migrate-status.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -id: keto-migrate-status -title: keto migrate status -description: keto migrate status Get the current migration status ---- - - - -## keto migrate status - -Get the current migration status - -### Synopsis - -Get the current migration status. This does not affect namespaces. Use -`keto namespace migrate status` for migrating namespaces. - -``` -keto migrate status [flags] -``` - -### Options - -``` - -f, --format string Set the output format. One of table, json, and json-pretty. (default "default") - -h, --help help for status - -q, --quiet Be quiet with output printing. -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/circleci/keto.yml]) -``` - -### SEE ALSO - -- [keto migrate](keto-migrate) - Commands to migrate the database diff --git a/docs/versioned_docs/version-v0.6/cli/keto-migrate-up.md b/docs/versioned_docs/version-v0.6/cli/keto-migrate-up.md deleted file mode 100644 index 0e90f2c4c..000000000 --- a/docs/versioned_docs/version-v0.6/cli/keto-migrate-up.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -id: keto-migrate-up -title: keto migrate up -description: keto migrate up Migrate the database up ---- - - - -## keto migrate up - -Migrate the database up - -### Synopsis - -Migrate the database up. This does not affect namespaces. Use -`keto namespace migrate up` for migrating namespaces. - -``` -keto migrate up [flags] -``` - -### Options - -``` - --all-namespaces migrate all pending namespaces as well - -f, --format string Set the output format. One of table, json, and json-pretty. (default "default") - -h, --help help for up - -q, --quiet Be quiet with output printing. - -y, --yes yes to all questions, no user input required -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/circleci/keto.yml]) -``` - -### SEE ALSO - -- [keto migrate](keto-migrate) - Commands to migrate the database diff --git a/docs/versioned_docs/version-v0.6/cli/keto-migrate.md b/docs/versioned_docs/version-v0.6/cli/keto-migrate.md deleted file mode 100644 index a06fac2de..000000000 --- a/docs/versioned_docs/version-v0.6/cli/keto-migrate.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -id: keto-migrate -title: keto migrate -description: keto migrate Commands to migrate the database ---- - - - -## keto migrate - -Commands to migrate the database - -### Synopsis - -Commands to migrate the database. This does not affect namespaces. Use -`keto namespace migrate` for migrating namespaces. - -### Options - -``` - -h, --help help for migrate -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/circleci/keto.yml]) -``` - -### SEE ALSO - -- [keto](keto) - Global and consistent permission and authorization server -- [keto migrate down](keto-migrate-down) - Migrate the database down -- [keto migrate status](keto-migrate-status) - Get the current migration status -- [keto migrate up](keto-migrate-up) - Migrate the database up diff --git a/docs/versioned_docs/version-v0.6/cli/keto-namespace-migrate-down.md b/docs/versioned_docs/version-v0.6/cli/keto-namespace-migrate-down.md deleted file mode 100644 index b5cc437e4..000000000 --- a/docs/versioned_docs/version-v0.6/cli/keto-namespace-migrate-down.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -id: keto-namespace-migrate-down -title: keto namespace migrate down -description: keto namespace migrate down Migrate a namespace down ---- - - - -## keto namespace migrate down - -Migrate a namespace down - -### Synopsis - -Migrate a namespace down. Pass 0 steps to fully migrate down. - -``` -keto namespace migrate down <namespace-name> <steps> [flags] -``` - -### Options - -``` - -f, --format string Set the output format. One of table, json, and json-pretty. (default "default") - -h, --help help for down - -q, --quiet Be quiet with output printing. - --read-remote string Remote URL of the read API endpoint. (default "127.0.0.1:4466") - --write-remote string Remote URL of the write API endpoint. (default "127.0.0.1:4467") - -y, --yes yes to all questions, no user input required -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/circleci/keto.yml]) -``` - -### SEE ALSO - -- [keto namespace migrate](keto-namespace-migrate) - Migrate a namespace diff --git a/docs/versioned_docs/version-v0.6/cli/keto-namespace-migrate-status.md b/docs/versioned_docs/version-v0.6/cli/keto-namespace-migrate-status.md deleted file mode 100644 index 788607908..000000000 --- a/docs/versioned_docs/version-v0.6/cli/keto-namespace-migrate-status.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -id: keto-namespace-migrate-status -title: keto namespace migrate status -description: - keto namespace migrate status Get the current namespace migration status ---- - - - -## keto namespace migrate status - -Get the current namespace migration status - -### Synopsis - -Get the current migration status of one specific namespace. Does not apply any -changes. - -``` -keto namespace migrate status <namespace-name> [flags] -``` - -### Options - -``` - -f, --format string Set the output format. One of table, json, and json-pretty. (default "default") - -h, --help help for status - -q, --quiet Be quiet with output printing. -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/circleci/keto.yml]) -``` - -### SEE ALSO - -- [keto namespace migrate](keto-namespace-migrate) - Migrate a namespace diff --git a/docs/versioned_docs/version-v0.6/cli/keto-namespace-migrate-up.md b/docs/versioned_docs/version-v0.6/cli/keto-namespace-migrate-up.md deleted file mode 100644 index aa105cfdb..000000000 --- a/docs/versioned_docs/version-v0.6/cli/keto-namespace-migrate-up.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -id: keto-namespace-migrate-up -title: keto namespace migrate up -description: keto namespace migrate up Migrate a namespace up ---- - - - -## keto namespace migrate up - -Migrate a namespace up - -### Synopsis - -Migrate a namespace up to the most recent migration. - -``` -keto namespace migrate up <namespace-name> [flags] -``` - -### Options - -``` - -f, --format string Set the output format. One of table, json, and json-pretty. (default "default") - -h, --help help for up - -q, --quiet Be quiet with output printing. - --read-remote string Remote URL of the read API endpoint. (default "127.0.0.1:4466") - --write-remote string Remote URL of the write API endpoint. (default "127.0.0.1:4467") - -y, --yes yes to all questions, no user input required -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/circleci/keto.yml]) -``` - -### SEE ALSO - -- [keto namespace migrate](keto-namespace-migrate) - Migrate a namespace diff --git a/docs/versioned_docs/version-v0.6/cli/keto-namespace-migrate.md b/docs/versioned_docs/version-v0.6/cli/keto-namespace-migrate.md deleted file mode 100644 index 736164bcc..000000000 --- a/docs/versioned_docs/version-v0.6/cli/keto-namespace-migrate.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -id: keto-namespace-migrate -title: keto namespace migrate -description: keto namespace migrate Migrate a namespace ---- - - - -## keto namespace migrate - -Migrate a namespace - -### Options - -``` - -h, --help help for migrate -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/circleci/keto.yml]) -``` - -### SEE ALSO - -- [keto namespace](keto-namespace) - Read and manipulate namespaces -- [keto namespace migrate down](keto-namespace-migrate-down) - Migrate a - namespace down -- [keto namespace migrate status](keto-namespace-migrate-status) - Get the - current namespace migration status -- [keto namespace migrate up](keto-namespace-migrate-up) - Migrate a namespace - up diff --git a/docs/versioned_docs/version-v0.6/cli/keto-namespace-validate.md b/docs/versioned_docs/version-v0.6/cli/keto-namespace-validate.md deleted file mode 100644 index c4ba4f1d2..000000000 --- a/docs/versioned_docs/version-v0.6/cli/keto-namespace-validate.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -id: keto-namespace-validate -title: keto namespace validate -description: keto namespace validate Validate namespace files ---- - - - -## keto namespace validate - -Validate namespace files - -### Synopsis - -Validate one or more namespace yaml files and get human readable errors. Useful -for debugging. - -``` -keto namespace validate <namespace.yml> [<namespace2.yml> ...] [flags] -``` - -### Options - -``` - -h, --help help for validate -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/circleci/keto.yml]) -``` - -### SEE ALSO - -- [keto namespace](keto-namespace) - Read and manipulate namespaces diff --git a/docs/versioned_docs/version-v0.6/cli/keto-namespace.md b/docs/versioned_docs/version-v0.6/cli/keto-namespace.md deleted file mode 100644 index b1d73098b..000000000 --- a/docs/versioned_docs/version-v0.6/cli/keto-namespace.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -id: keto-namespace -title: keto namespace -description: keto namespace Read and manipulate namespaces ---- - - - -## keto namespace - -Read and manipulate namespaces - -### Options - -``` - -h, --help help for namespace -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/circleci/keto.yml]) -``` - -### SEE ALSO - -- [keto](keto) - Global and consistent permission and authorization server -- [keto namespace migrate](keto-namespace-migrate) - Migrate a namespace -- [keto namespace validate](keto-namespace-validate) - Validate namespace files diff --git a/docs/versioned_docs/version-v0.6/cli/keto-relation-tuple-create.md b/docs/versioned_docs/version-v0.6/cli/keto-relation-tuple-create.md deleted file mode 100644 index 4c67d1754..000000000 --- a/docs/versioned_docs/version-v0.6/cli/keto-relation-tuple-create.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -id: keto-relation-tuple-create -title: keto relation-tuple create -description: keto relation-tuple create Create relation tuples from JSON files ---- - - - -## keto relation-tuple create - -Create relation tuples from JSON files - -### Synopsis - -Create relation tuples from JSON files. A directory will be traversed and all -relation tuples will be created. Pass the special filename `-` to read from -STD_IN. - -``` -keto relation-tuple create <relation-tuple.json> [<relation-tuple-dir>] [flags] -``` - -### Options - -``` - -f, --format string Set the output format. One of table, json, and json-pretty. (default "default") - -h, --help help for create - -q, --quiet Be quiet with output printing. - --read-remote string Remote URL of the read API endpoint. (default "127.0.0.1:4466") - --write-remote string Remote URL of the write API endpoint. (default "127.0.0.1:4467") -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/circleci/keto.yml]) -``` - -### SEE ALSO - -- [keto relation-tuple](keto-relation-tuple) - Read and manipulate relation - tuples diff --git a/docs/versioned_docs/version-v0.6/cli/keto-relation-tuple-delete.md b/docs/versioned_docs/version-v0.6/cli/keto-relation-tuple-delete.md deleted file mode 100644 index ac9c88677..000000000 --- a/docs/versioned_docs/version-v0.6/cli/keto-relation-tuple-delete.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -id: keto-relation-tuple-delete -title: keto relation-tuple delete -description: - keto relation-tuple delete Delete relation tuples defined in JSON files ---- - - - -## keto relation-tuple delete - -Delete relation tuples defined in JSON files - -### Synopsis - -Delete relation tuples defined in the given JSON files. A directory will be -traversed and all relation tuples will be deleted. Pass the special filename `-` -to read from STD_IN. - -``` -keto relation-tuple delete <relation-tuple.json> [<relation-tuple-dir>] [flags] -``` - -### Options - -``` - -f, --format string Set the output format. One of table, json, and json-pretty. (default "default") - -h, --help help for delete - -q, --quiet Be quiet with output printing. - --read-remote string Remote URL of the read API endpoint. (default "127.0.0.1:4466") - --write-remote string Remote URL of the write API endpoint. (default "127.0.0.1:4467") -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/circleci/keto.yml]) -``` - -### SEE ALSO - -- [keto relation-tuple](keto-relation-tuple) - Read and manipulate relation - tuples diff --git a/docs/versioned_docs/version-v0.6/cli/keto-relation-tuple-get.md b/docs/versioned_docs/version-v0.6/cli/keto-relation-tuple-get.md deleted file mode 100644 index bd031bec3..000000000 --- a/docs/versioned_docs/version-v0.6/cli/keto-relation-tuple-get.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -id: keto-relation-tuple-get -title: keto relation-tuple get -description: keto relation-tuple get Get relation tuples ---- - - - -## keto relation-tuple get - -Get relation tuples - -### Synopsis - -Get relation tuples matching the given partial tuple. Returns paginated results. - -``` -keto relation-tuple get <namespace> [flags] -``` - -### Options - -``` - -f, --format string Set the output format. One of table, json, and json-pretty. (default "default") - -h, --help help for get - --object string Set the requested object - --page-size int32 maximum number of items to return (default 100) - --page-token string page token acquired from a previous response - -q, --quiet Be quiet with output printing. - --read-remote string Remote URL of the read API endpoint. (default "127.0.0.1:4466") - --relation string Set the requested relation - --subject string Set the requested subject - --write-remote string Remote URL of the write API endpoint. (default "127.0.0.1:4467") -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/circleci/keto.yml]) -``` - -### SEE ALSO - -- [keto relation-tuple](keto-relation-tuple) - Read and manipulate relation - tuples diff --git a/docs/versioned_docs/version-v0.6/cli/keto-relation-tuple-parse.md b/docs/versioned_docs/version-v0.6/cli/keto-relation-tuple-parse.md deleted file mode 100644 index 7503679fc..000000000 --- a/docs/versioned_docs/version-v0.6/cli/keto-relation-tuple-parse.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -id: keto-relation-tuple-parse -title: keto relation-tuple parse -description: keto relation-tuple parse Parse human readable relation tuples ---- - - - -## keto relation-tuple parse - -Parse human readable relation tuples - -### Synopsis - -Parse human readable relation tuples as used in the documentation. Supports -various output formats. Especially useful for piping into other commands by -using `--format json`. Ignores comments (starting with `//`) and blank lines. - -``` -keto relation-tuple parse [flags] -``` - -### Options - -``` - -f, --format string Set the output format. One of table, json, and json-pretty. (default "default") - -h, --help help for parse - -q, --quiet Be quiet with output printing. -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/circleci/keto.yml]) -``` - -### SEE ALSO - -- [keto relation-tuple](keto-relation-tuple) - Read and manipulate relation - tuples diff --git a/docs/versioned_docs/version-v0.6/cli/keto-relation-tuple.md b/docs/versioned_docs/version-v0.6/cli/keto-relation-tuple.md deleted file mode 100644 index dbd5e41a2..000000000 --- a/docs/versioned_docs/version-v0.6/cli/keto-relation-tuple.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -id: keto-relation-tuple -title: keto relation-tuple -description: keto relation-tuple Read and manipulate relation tuples ---- - - - -## keto relation-tuple - -Read and manipulate relation tuples - -### Options - -``` - -h, --help help for relation-tuple -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/circleci/keto.yml]) -``` - -### SEE ALSO - -- [keto](keto) - Global and consistent permission and authorization server -- [keto relation-tuple create](keto-relation-tuple-create) - Create relation - tuples from JSON files -- [keto relation-tuple delete](keto-relation-tuple-delete) - Delete relation - tuples defined in JSON files -- [keto relation-tuple get](keto-relation-tuple-get) - Get relation tuples -- [keto relation-tuple parse](keto-relation-tuple-parse) - Parse human readable - relation tuples diff --git a/docs/versioned_docs/version-v0.6/cli/keto-serve.md b/docs/versioned_docs/version-v0.6/cli/keto-serve.md deleted file mode 100644 index dd37544e9..000000000 --- a/docs/versioned_docs/version-v0.6/cli/keto-serve.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -id: keto-serve -title: keto serve -description: keto serve Starts the server and serves the HTTP REST and gRPC APIs ---- - - - -## keto serve - -Starts the server and serves the HTTP REST and gRPC APIs - -### Synopsis - -This command opens the network ports and listens to HTTP and gRPC API requests. - -## Configuration - -ORY Keto can be configured using environment variables as well as a -configuration file. For more information on configuration options, open the -configuration documentation: - ->> https://www.ory.sh/keto/docs/reference/configuration << - -``` -keto serve [flags] -``` - -### Options - -``` - --disable-telemetry Disable anonymized telemetry reports - for more information please visit https://www.ory.sh/docs/ecosystem/sqa (default true) - -h, --help help for serve - --sqa-opt-out Disable anonymized telemetry reports - for more information please visit https://www.ory.sh/docs/ecosystem/sqa (default true) -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/circleci/keto.yml]) -``` - -### SEE ALSO - -- [keto](keto) - Global and consistent permission and authorization server diff --git a/docs/versioned_docs/version-v0.6/cli/keto-status.md b/docs/versioned_docs/version-v0.6/cli/keto-status.md deleted file mode 100644 index f50281060..000000000 --- a/docs/versioned_docs/version-v0.6/cli/keto-status.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -id: keto-status -title: keto status -description: keto status Get the status of the upstream Keto instance ---- - - - -## keto status - -Get the status of the upstream Keto instance - -### Synopsis - -Get a status report about the upstream Keto instance. Can also block until the -service is healthy. - -``` -keto status [flags] -``` - -### Options - -``` - -b, --block block until the service is healthy - --endpoint string which endpoint to use; one of {read, write} (default "read") - -h, --help help for status - -q, --quiet Be quiet with output printing. - --read-remote string Remote URL of the read API endpoint. (default "127.0.0.1:4466") - --write-remote string Remote URL of the write API endpoint. (default "127.0.0.1:4467") -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/circleci/keto.yml]) -``` - -### SEE ALSO - -- [keto](keto) - Global and consistent permission and authorization server diff --git a/docs/versioned_docs/version-v0.6/cli/keto-version.md b/docs/versioned_docs/version-v0.6/cli/keto-version.md deleted file mode 100644 index 99b146c84..000000000 --- a/docs/versioned_docs/version-v0.6/cli/keto-version.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -id: keto-version -title: keto version -description: keto version Show the build version, build time, and git hash ---- - - - -## keto version - -Show the build version, build time, and git hash - -``` -keto version [flags] -``` - -### Options - -``` - -h, --help help for version -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/circleci/keto.yml]) -``` - -### SEE ALSO - -- [keto](keto) - Global and consistent permission and authorization server diff --git a/docs/versioned_docs/version-v0.6/cli/keto.md b/docs/versioned_docs/version-v0.6/cli/keto.md deleted file mode 100644 index 071746245..000000000 --- a/docs/versioned_docs/version-v0.6/cli/keto.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -id: keto -title: keto -description: keto Global and consistent permission and authorization server ---- - - - -## keto - -Global and consistent permission and authorization server - -### Options - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/circleci/keto.yml]) - -h, --help help for keto -``` - -### SEE ALSO - -- [keto check](keto-check) - Check whether a subject has a relation on an object -- [keto expand](keto-expand) - Expand a subject set -- [keto migrate](keto-migrate) - Commands to migrate the database -- [keto namespace](keto-namespace) - Read and manipulate namespaces -- [keto relation-tuple](keto-relation-tuple) - Read and manipulate relation - tuples -- [keto serve](keto-serve) - Starts the server and serves the HTTP REST and gRPC - APIs -- [keto status](keto-status) - Get the status of the upstream Keto instance -- [keto version](keto-version) - Show the build version, build time, and git - hash diff --git a/docs/versioned_docs/version-v0.6/concepts/api-overview.mdx b/docs/versioned_docs/version-v0.6/concepts/api-overview.mdx deleted file mode 100644 index 8b1267fb1..000000000 --- a/docs/versioned_docs/version-v0.6/concepts/api-overview.mdx +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: API Overview ---- - -This page gives an overview over all APIs Ory Keto offers, including common use -cases. - -The APIs are separated based on privileges into a `read` and `write` endpoint. -Each endpoint is exposed on a different port, so -[you can decide how to restrict access](../secure.md). gRPC and REST connections -are multiplexed on the same port. - -All APIs are available to gRPC and REST clients, although feature parity is not -always given. Because we follow gRPC and REST best practices and design -guidelines, the APIs offer slightly different interfaces and capabilities. - -## Read APIs - -The read-APIs are per default exposed on the TCP port `4466`. - -### List Relation Tuples - -This API allows you to query [relation tuples](./relation-tuples.mdx) by -providing a partial relation tuple. It can be used to: - -- [list objects a user has access to](../guides/list-api-display-objects.mdx#listing-objects) -- [list users who have a specific role](../guides/list-api-display-objects.mdx#listing-subjects) -- list users who are members of a specific group -- audit permissions in the system - -For more details, head over to the -[gRPC API reference](../reference/proto-api.mdx#readservice) or -[REST API reference](../reference/rest-api.mdx#query-relation-tuples). - -### Check Relation Tuple - -The check-API allows you to check whether a subject has a relation on an object. -This API resolves [subject sets](./subjects.mdx#subject-sets) and -[subject set rewrites](https://github.com/ory/keto/issues/263). - -This API is primarily used to -[check permissions to restrict actions](../guides/simple-access-check-guide.mdx). - -For more details, head over to the -[gRPC API reference](../reference/proto-api.mdx#checkservice) or -[REST API reference](../reference/rest-api.mdx#check-a-relation-tuple). - -### Expand Subject Sets - -The expand-API recursively expands a [subject set](./subjects.mdx#subject-sets) -into a tree of subjects. For each subject, the tree assembles the relation -tuples including the operands as defined in the -[namespace configuration](./namespaces.mdx). It can be used to: - -- [list who has access to an object](../guides/expand-api-display-who-has-access.mdx) -- determine why someone has access to an object -- audit permissions in the system - -An expand-request has to include the maximum depth of the tree to be returned. -This is required to ensure low latency and limit the resource usage per request. -To find out more about Ory Keto's performance, head over to the -[performance considerations](../performance.mdx). - -For more details, head over to the -[gRPC API reference](../reference/proto-api.mdx#expandservice) or -[REST API reference](../reference/rest-api.mdx#getexpand). - -## Write APIs - -The write-APIs are per default exposed on the TCP port `4467`. - -### Change Relation Tuples - -The write-APIs offer multiple ways to insert and delete relation tuples. Please -head over to the [gRPC API reference](../reference/proto-api.mdx#writeservice) -or [REST API reference](../reference/rest-api.mdx#write) to read more about the -available methods for each client type. - -In general, it is preferred to use the transaction based methods over repeatedly -calling simple methods for bulk updates. This is not only because they provide -stronger consistency guarantees, but also because the database usually handles a -single transaction with a lot of data faster than a lot of small transactions. - -The main use cases for the write-APIs are: - -- setting up permissions for a new object -- sharing an object with another user -- revoking access to an object -- transferring relations to an object to another user diff --git a/docs/versioned_docs/version-v0.6/concepts/graph-of-relations.mdx b/docs/versioned_docs/version-v0.6/concepts/graph-of-relations.mdx deleted file mode 100644 index e37a0fdfe..000000000 --- a/docs/versioned_docs/version-v0.6/concepts/graph-of-relations.mdx +++ /dev/null @@ -1,92 +0,0 @@ ---- -title: The Graph of Relations ---- - -import Mermaid from '@theme/Mermaid' - -The [relation tuples](./relation-tuples.mdx) of the ACL used by Ory Keto can be -represented as a graph of relations. This graph will help us to understand many -[implications on performance](../performance.mdx) and -[internal algorithms](./internal-algorithms.mdx). - -## Definition - -The graph consists of three types of nodes. [Object](./objects.mdx) nodes that -represent application objects, intermediary -[subject set](./subjects.mdx#subject-sets) nodes, and -[subject ID](./subjects.mdx#subject-ids) nodes representing individuals. Edges -are directed and represent the relation between an object and subject. - -## Example - -The following example translates a view relation tuples into the corresponding -graph of relations. - -:::note - -This example omits the [namespace](./namespaces.mdx) from all data to improve -readability. In practice, the namespace always has to be considered. - -::: - -```keto-relation-tuples -// user1 has access on dir1 -dir1#access@user1 -// Have a look on the subjects concept page if you don't know the empty relation. -dir1#parent@(file1#) -// Everyone with access to dir1 has access to file1. This would probably be defined -// through a subject set rewrite that defines this inherited relation globally. -// In this example, we define this tuple explicitly. -file1#access@(dir1#access) -// Direct access on file2 was granted. -file2#access@user1 -// user2 is owner of file2 -file2#owner@user2 -// Owners of file2 have access to it; possibly defined through subject set rewrites. -file2#access@(file2#owner) -``` - -This is represented by the following graph: - -|parent| A - G[file2] - end - subgraph subjID [Subject ID region] - F([user1]) - C([user2]) - end - A -->|access| B{{dir1#access}} - B -. file1#access .-> F - E -->|access| F - G -->|access| F - G -->|owner| C - G -->|access| H{{file2#owner}} - H -. file2#access .-> C -`} -/> - -Solid edges represent explicitly defined relations, while dotted edges represent -relations inherited through a subject set. - -## Observations about the Graph - -Ory Keto utilizes the following key properties of the graph of relations: - -1. **Directed edges from objects to subjects**: This implies a neat arrangement - with objects in one region, subject IDs in another one, and subject sets in - between. Edges will always go from the object region towards the subject - region. -2. **Searching for a possible path is local**: Trying to find a path from an - object to a subject will always happen locally. This means that it is only - necessary to traverse the nodes that are successors of the object. In typical - setups, this means that only a small fraction of the graph has to be - searched, regardless of the outcome. The intuition here is that the relations - of user1's files are irrelevant when checking access to user2's files. - -Both of these properties are important to ensure -[high performance](../performance.mdx). diff --git a/docs/versioned_docs/version-v0.6/concepts/internal-algorithms.mdx b/docs/versioned_docs/version-v0.6/concepts/internal-algorithms.mdx deleted file mode 100644 index b8203781d..000000000 --- a/docs/versioned_docs/version-v0.6/concepts/internal-algorithms.mdx +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Internal Algorithms ---- - -This page gives an overview over the internal algorithms used to traverse the -[graph of relations](./graph-of-relations.mdx). This page is still under -development and will be finalized once the code is stable. Please head over to -[the corresponding issue](https://github.com/ory/keto/issues/483) for the -current state. diff --git a/docs/versioned_docs/version-v0.6/concepts/namespaces.mdx b/docs/versioned_docs/version-v0.6/concepts/namespaces.mdx deleted file mode 100644 index 3f9635de5..000000000 --- a/docs/versioned_docs/version-v0.6/concepts/namespaces.mdx +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: Namespaces ---- - -Ory Keto knows the concept of namespaces to organize -[relation tuples](./relation-tuples.mdx). Namespaces have a configuration that -defines the relations, and some other important values -([see reference](./reference/configuration.md)). Unlike other applications, Ory -Keto does **not** isolate namespaces. Especially, [subject sets](./subjects.mdx) -can cross-reference from one namespace to another. The namespaces' purpose is to -split up the data into coherent partitions, each with its corresponding -configuration. Internally each namespace has its own table in the database to -allow setting individual -[storage specific options](https://github.com/ory/keto/issues/303). - -## Scoping of Objects - -The application can also use namespaces to scope [objects](./objects.mdx) -because Ory Keto only compares objects within a namespace. For example, if Ory -Keto knows the following relation tuples - -```keto-relation-tuples -// user1 has acces to the directory foo -directories:foo#access@user1 -// user2 has access to the file foo -files:foo#access@user2 -``` - -both of the following [check](./api-overview.mdx#check-relation-tuples) requests - -```keto-relation-tuples -// Does user2 have access to the directory foo? -directories:foo#access@user2 -// Does user1 have access to the file foo? -files:foo#access@user1 -``` - -will evaluate to false (a.k.a. rejected). - -Vice versa, all relation tuples containing an object have to be in the same -namespace to reference the same object. - -## Migrations - -Because namespaces each come with an individual configuration that can even -modify some storage specific options, it is required to manually review and run -migrations on namespace configuration updates. Please refer to the -[namespace migration CLI reference](../cli/keto-namespace-migrate.md) and -[running in production guide](../guides/production.md) to learn more about that -process. - -## Naming Conventions - -Namespaces should be named after the plural of the type of objects they describe -(e.g. `files`, `chats`, `organizations`). Relations within a namespace should be -a word that describes what relation a subject has towards an object. As a rule -of thumb, every relation tuple should translate to an english sentence like so: - -> **Subject** has **relation** on **object** which is one of the **namespace**. - -Examples: - -```keto-relation-tuples -// good examples - - -files:8f427c01-c295-44f3-b43d-49c3a1042f35#write@02a3c847-c903-446a-a34f-dae74b4fab86 -groups:43784684-103e-44c0-9d6c-db9fb265f617#member@b8d00059-b803-4123-9d3d-b3613bfe7c1b -directories:803a87e9-0da0-486e-bc08-ef559dd8e034#child@(files:11488ab9-4ede-479f-add4-f1379da4ae43#_) -files:11488ab9-4ede-479f-add4-f1379da4ae43#parent@(directories:803a87e9-0da0-486e-bc08-ef559dd8e034#_) - -// bad examples - - -// namespace is not describing homogenous type of objects -tenant-1-objects:62237c27-19c3-4bb1-9cbc-a5a67372569b#access@7a012165-7b21-495b-b84b-cf4e1a21b484 -// relation describes a relation of the object towards the subject -directories:803a87e9-0da0-486e-bc08-ef559dd8e034#parent@(files:11488ab9-4ede-479f-add4-f1379da4ae43#_) -``` diff --git a/docs/versioned_docs/version-v0.6/concepts/objects.mdx b/docs/versioned_docs/version-v0.6/concepts/objects.mdx deleted file mode 100644 index 541913751..000000000 --- a/docs/versioned_docs/version-v0.6/concepts/objects.mdx +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: Objects ---- - -Objects are identifiers for some kind of application objects. They can represent -e.g. a file, network port, physical item, ... . It is up to the application to -map its objects to an unambiguous identifier. The limit on object identifiers is -64 characters. We recommend the usage of UUIDs as they provide a high entropy -and thus unique identifiers. It is however possible to use e.g. URLs or opaque -tokens of any kind. Please check the -[limitations](#advanced-example-using-application-information-within-keto-objects). -Ory Keto will consider objects equal iff their string representation is equal. - -## Basic Example - -In the basic case an application uses the same object identifiers as it uses -internally, e.g. a UUIDv4 like `61e75133-efff-4281-8148-a1806919f568` or SHA-1 -hash like `5c6f593a4e12970d647843f97846fd5ed18179eb`. - -Head over to the -[basic full feature example](../examples/olymp-file-sharing.mdx) to see an -example with some context. - -## Advanced Example: Using Application Information within Keto Objects - -Because the Keto client can use arbitrary strings as objects, it is tempting to -encode application data within the object. **We strongly discourage this -practice.** Instead, you should use a UUID to map application data to Keto -objects. This is required to ensure: - -1. single source of truth and easy data update -2. free choice of encoding (Keto does not allow the characters `:#@`) -3. unlimited data size (Keto only allows up to 64 characters) - -For example, this could be used to implement checks on value ranges. The -application knows the following mapping of comparison conditions and UUIDs: - -```yml -f832e1e7-3c97-4cb8-8582-979e63ae2f1d: - greater_than: 5 - -c4540cf5-6ac4-4007-910b-c5a56aa3d4e6: - greater_than: 2 - smaller_equal: 5 -``` - -Keto has the following relation tuples: - -```keto-relation-tuples -// Members of the admins group are allowed to set a value v > 5 -values:f832e1e7-3c97-4cb8-8582-979e63ae2f1d#set_value@(groups:admins#member) - -// Members of the devs group are allowed to set a value v: 2 < v <= 5 -values:c4540cf5-6ac4-4007-910b-c5a56aa3d4e6#set_value@(groups:devs#member) - -// Anyone who can set a value v > 5 can also set 2 < v <= 5 -values:c4540cf5-6ac4-4007-910b-c5a56aa3d4e6#set_value@(values:f832e1e7-3c97-4cb8-8582-979e63ae2f1d#set_value) -``` - -The application will have to translate an incoming "set value" request to the -corresponding condition the value fulfills. It is important to understand that -Ory Keto does **not** know how to interpret any of the information. Rather, the -application has to preprocess and map the value to the corresponding UUID. diff --git a/docs/versioned_docs/version-v0.6/concepts/relation-tuples.mdx b/docs/versioned_docs/version-v0.6/concepts/relation-tuples.mdx deleted file mode 100644 index 96099c139..000000000 --- a/docs/versioned_docs/version-v0.6/concepts/relation-tuples.mdx +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: Relation Tuples ---- - -Relation tuples are the underlying datatype of Ory Keto's access control -language. They encode relations between [objects](./objects.mdx) and -[subjects](./subjects.mdx). A relation tuple is associated with a -[namespace](./namespaces.mdx) where its relation has to be defined and -configured. The following -[BNF grammar](https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_form) describes -the encoding used in the documentation and within Ory Keto. - -:::note - -The namespace is often omitted in examples for readability, but is technically -always required. - -::: - -``` - ::= '#'relation'@' - ::= namespace':'object_id - ::= subject_id | - ::= '#'relation -``` - -A relation tuple - -```keto-relation-tuples -object#relation@subject -``` - -can be translated into the english sentence "Subject has relation on object". - -## Effect of a Relation Tuple - -The effect of a relation tuple is the effect of its relation as defined in the -[namespace configuration](./namespaces.mdx). It can be one of union (boolean -or), intersection (boolean and), or exclusion (boolean not). - -## Basic Example - -Head over to the -[basic full feature example](../examples/olymp-file-sharing.mdx) to see an -example with some context. diff --git a/docs/versioned_docs/version-v0.6/concepts/snaptokens-evaluation-consistency.mdx b/docs/versioned_docs/version-v0.6/concepts/snaptokens-evaluation-consistency.mdx deleted file mode 100644 index ea915402b..000000000 --- a/docs/versioned_docs/version-v0.6/concepts/snaptokens-evaluation-consistency.mdx +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: Consistency Guarantees provided by Snaptokens ---- - -This feature is not yet implemented, see -[the issue](https://github.com/ory/keto/issues/517). diff --git a/docs/versioned_docs/version-v0.6/concepts/subjects.mdx b/docs/versioned_docs/version-v0.6/concepts/subjects.mdx deleted file mode 100644 index 5c09c30a5..000000000 --- a/docs/versioned_docs/version-v0.6/concepts/subjects.mdx +++ /dev/null @@ -1,83 +0,0 @@ ---- -title: Subjects ---- - -In Ory Keto subjects are a recursive polymorphic datatype. They either refer to -a specific subject (e.g. user) by some application defined identifier, or a set -of subjects. - -## Subject IDs - -A subject ID can be any string. It is up to the application to map its users, -devices, ... to a constant, unique identifier. We recommend the usage of UUIDs -as they provide a high entropy. It is however possible to use e.g. URLs or -opaque tokens of any kind. Please check the -[limitations](#advanced-example-using-application-information-within-keto-subjects). -Ory Keto will consider subject IDs equal iff their string representation is -equal. - -## Subject Sets - -A subject set is the set of all subjects that have a specific relation on an -[object](./objects.mdx). They empower Ory Keto to be as flexible as you need it -by defining indirections. They can be used to realize e.g. -[RBAC](../guides/rbac.mdx) or -[inheritance of relations](../guides/access-control-inheritance.mdx). Subject -sets themselves can again indirect to subject sets. For a performant evaluation -of requests it is however required to follow some -[best practices](../performance.mdx). As a special case, subject sets can also -refer to an object by using the empty relation. Effectively, this is interpreted -as "any relation, even a non-existent one". - -Subject sets also represent all intermediary nodes in -[the graph of relations](./graph-of-relations.mdx). - -## Basic Example - -In the basic case an application uses the same subject identifiers as it uses -internally, e.g. a constant, unique username like `zepatrik` or preferably -UUIDv4 like `480158d4-0031-4412-9453-1bb0cdf76104`. - -Head over to the -[basic full feature example](../examples/olymp-file-sharing.mdx) to see an -example with some context. - -## Advanced Example: Using Application Information within Keto Subjects - -Because the Keto client can use arbitrary strings as subjects, it is tempting to -encode application data within the subject. **We strongly discourage this -practice.** Instead, you should use a UUID to map application data to Keto -subjects. This is required to ensure: - -1. single source of truth and easy data update -2. free choice of encoding (Keto does not allow the characters `:#@`) -3. unlimited data size (Keto only allows up to 64 characters) - -For example, this can be used to implement a crude ABAC system by mapping -attributes to a subject ID. The application can then define relation tuples that -reflect permissions depending on the value of attributes. It will have to map -each request to the subject representing the attributes. - -Let's assume the application knows the following mapping between attributes and -UUIDs: - -```yml -c5b6454f-f79c-4a6d-9e1b-b44e04b56009: - subnet: 192.168.0.0/24 - office_hours: true -``` - -Keto could then know the following relation tuple: - -```keto-relation-tuples -// allow access to TCP port 22 when the request originates from a specific subnet during office hours -tcp/22#access@c5b6454f-f79c-4a6d-9e1b-b44e04b56009 -``` - -The application has to map each incoming request to a subject string -representing the attributes of the request. Ory Keto will reply with a positive -[check response](./api-overview.mdx#check-relation-tuple) depending on the -string equality of the requested subject representing the attributes with the -known relation tuples. Remember that Ory Keto does **not** know how to interpret -any information stored in the relation tuples. Rather, the application has to -preprocess and map the value to the corresponding UUID. diff --git a/docs/versioned_docs/version-v0.6/contributing.md b/docs/versioned_docs/version-v0.6/contributing.md deleted file mode 100644 index 790bdc317..000000000 --- a/docs/versioned_docs/version-v0.6/contributing.md +++ /dev/null @@ -1,260 +0,0 @@ ---- -id: contributing -title: Contribution Guidelines ---- - - - -# Contributing to ORY Keto - - - - -- [Introduction](#introduction) -- [FAQ](#faq) -- [How can I contribute?](#how-can-i-contribute) -- [Communication](#communication) -- [Contributing Code](#contributing-code) -- [Documentation](#documentation) -- [Disclosing vulnerabilities](#disclosing-vulnerabilities) -- [Code Style](#code-style) -- [Pull request procedure](#pull-request-procedure) - - [Working with Forks](#working-with-forks) -- [Conduct](#conduct) - - - -## Introduction - -There are many ways in which you can contribute, beyond writing code. The goal -of this document is to provide a high-level overview of how you can get -involved. - -_Please note_: We take ORY Keto's security and our users' trust very seriously. -If you believe you have found a security issue in ORY Keto, please responsibly -disclose by contacting us at security@ory.sh. - -First: As a potential contributor, your changes and ideas are welcome at any -hour of the day or night, weekdays, weekends, and holidays. Please do not ever -hesitate to ask a question or send a pull request. - -If you are unsure, just ask or submit the issue or pull request anyways. You -won't be yelled at for giving it your best effort. The worst that can happen is -that you'll be politely asked to change something. We appreciate any sort of -contributions, and don't want a wall of rules to get in the way of that. - -That said, if you want to ensure that a pull request is likely to be merged, -talk to us! You can find out our thoughts and ensure that your contribution -won't clash or be obviated by ORY Keto's normal direction. A great way to do -this is via [ORY Keto Discussions](https://github.com/ory/keto/discussions) or -the [ORY Chat](https://www.ory.sh/chat). - -## FAQ - -- I am new to the community. Where can I find the - [ORY Community Code of Conduct?](https://github.com/ory/keto/blob/master/CODE_OF_CONDUCT.md) - -- I have a question. Where can I get - [answers to questions regarding ORY Keto?](#communication) - -- I would like to contribute but I am not sure how. Are there - [easy ways to contribute?](#how-can-i-contribute) - [Or good first issues?](https://github.com/search?l=&o=desc&q=label%3A%22help+wanted%22+label%3A%22good+first+issue%22+is%3Aopen+user%3Aory+user%3Aory-corp&s=updated&type=Issues) - -- I want to talk to other ORY Keto users. - [How can I become a part of the community?](#communication) - -- I would like to know what I am agreeing to when I contribute to ORY Keto. Does - ORY have - [a Contributors License Agreement?](https://cla-assistant.io/ory/keto) - -- I would like updates about new versions of ORY Keto. - [How are new releases announced?](https://ory.us10.list-manage.com/subscribe?u=ffb1a878e4ec6c0ed312a3480&id=f605a41b53) - -## How can I contribute? - -If you want to start contributing code right away, we have a -[list of good first issues](https://github.com/ory/keto/labels/good%20first%20issue). - -There are many other ways you can contribute without writing any code. Here are -a few things you can do to help out: - -- **Give us a star.** It may not seem like much, but it really makes a - difference. This is something that everyone can do to help out ORY Keto. - Github stars help the project gain visibility and stand out. - -- **Join the community.** Sometimes helping people can be as easy as listening - to their problems and offering a different perspective. Join our Slack, have a - look at discussions in the forum and take part in our weekly hangout. More - info on this in [Communication](#communication). - -- **Helping with open issues.** We have a lot of open issues for ORY Keto and - some of them may lack necessary information, some are duplicates of older - issues. You can help out by guiding people through the process of filling out - the issue template, asking for clarifying information, or pointing them to - existing issues that match their description of the problem. - -- **Reviewing documentation changes.** Most documentation just needs a review - for proper spelling and grammar. If you think a document can be improved in - any way, feel free to hit the `edit` button at the top of the page. More info - on contributing to documentation here. - -- **Help with tests.** Some pull requests may lack proper tests or test plans. - These are needed for the change to be implemented safely. - -## Communication - -We use [Slack](https://www.ory.sh/chat). You are welcome to drop in and ask -questions, discuss bugs and feature requests, talk to other users of ORY, etc. - -Check out [ORY Keto Discussions](https://github.com/ory/keto/discussions). This -is a great place for in-depth discussions and lots of code examples, logs and -similar data. - -You can also join our community hangout, if you want to speak to the ORY team -directly or ask some questions. You can find more info on the hangouts in -[Slack](https://www.ory.sh/chat). - -If you want to receive regular notifications about updates to ORY Keto, consider -joining the mailing list. We will _only_ send you vital information on the -projects that you are interested in. - -Also [follow us on twitter](https://twitter.com/orycorp). - -## Contributing Code - -Unless you are fixing a known bug, we **strongly** recommend discussing it with -the core team via a GitHub issue or [in our chat](https://www.ory.sh/chat) -before getting started to ensure your work is consistent with ORY Keto's roadmap -and architecture. - -All contributions are made via pull request. Note that **all patches from all -contributors get reviewed**. After a pull request is made other contributors -will offer feedback, and if the patch passes review a maintainer will accept it -with a comment. When pull requests fail testing, authors are expected to update -their pull requests to address the failures until the tests pass and the pull -request merges successfully. Look here for more info on the -[Pull request procedure](#pull-request-procedure). - -At least one review from a maintainer is required for all patches (even patches -from maintainers). - -Before your contributions can be merged you need to sign our -[Contributor License Agreement](https://cla-assistant.io/ory/keto). - -This agreement defines the terms under which your code is contributed to ORY. -More specifically it declares that you have the right to, and actually do, grant -us the rights to use your contribution. You can see the Apache 2.0 license under -which our projects are published -[here](https://github.com/ory/meta/blob/master/LICENSE). - -Reviewers should leave a "LGTM" comment once they are satisfied with the patch. -If the patch was submitted by a maintainer with write access, the pull request -should be merged by the submitter after review. - -## Documentation - -Please provide documentation when changing, removing, or adding features. -Documentation resides in the project's -[docs](https://github.com/ory/keto/tree/master/docs) folder. Generate API and -configuration reference documentation using `cd docs; npm run gen`. - -For further instructions please head over to -[docs/README.md](https://github.com/ory/keto/blob/master/README.md). - -## Disclosing vulnerabilities - -Please disclose vulnerabilities exclusively to -[security@ory.sh](mailto:security@ory.sh). Do not use GitHub issues. - -## Code Style - -Please follow these guidelines when formatting source code: - -- Go code should match the output of `gofmt -s` and pass `golangci-lint run`. -- NodeJS and JavaScript code should be prettified using `npm run format` where - appropriate. - -## Pull request procedure - -To make a pull request, you will need a GitHub account; if you are unclear on -this process, see GitHub's documentation on -[forking](https://help.github.com/articles/fork-a-repo) and -[pull requests](https://help.github.com/articles/using-pull-requests). Pull -requests should be targeted at the `master` branch. Before creating a pull -request, go through this checklist: - -1. Create a feature branch off of `master` so that changes do not get mixed up. -1. [Rebase](http://git-scm.com/book/en/Git-Branching-Rebasing) your local - changes against the `master` branch. -1. Run the full project test suite with the `go test ./...` (or equivalent) - command and confirm that it passes. -1. Run `gofmt -s` (if the project is written in Go). -1. Ensure that each commit has a subsystem prefix (ex: `controller:`). - -Pull requests will be treated as "review requests," and maintainers will give -feedback on the style and substance of the patch. - -Normally, all pull requests must include tests that test your change. -Occasionally, a change will be very difficult to test for. In those cases, -please include a note in your commit message explaining why. - -### Working with Forks - -``` -# First you clone the original repository -git clone git@github.com:ory/ory/keto.git - -# Next you add a git remote that is your fork: -git remote add fork git@github.com:/ory/keto.git - -# Next you fetch the latest changes from origin for master: -git fetch origin -git checkout master -git pull --rebase - -# Next you create a new feature branch off of master: -git checkout my-feature-branch - -# Now you do your work and commit your changes: -git add -A -git commit -a -m "fix: this is the subject line" -m "This is the body line. Closes #123" - -# And the last step is pushing this to your fork -git push -u fork my-feature-branch -``` - -Now go to the project's GitHub Pull Request page and click "New pull request" - -## Conduct - -Whether you are a regular contributor or a newcomer, we care about making this -community a safe place for you and we've got your back. - -- We are committed to providing a friendly, safe and welcoming environment for - all, regardless of gender, sexual orientation, disability, ethnicity, - religion, or similar personal characteristic. -- Please avoid using nicknames that might detract from a friendly, safe and - welcoming environment for all. -- Be kind and courteous. There is no need to be mean or rude. -- We will exclude you from interaction if you insult, demean or harass anyone. - In particular, we do not tolerate behavior that excludes people in socially - marginalized groups. -- Private harassment is also unacceptable. No matter who you are, if you feel - you have been or are being harassed or made uncomfortable by a community - member, please contact one of the channel ops or a member of the ORY Keto core - team immediately. -- Likewise any spamming, trolling, flaming, baiting or other attention-stealing - behaviour is not welcome. - -We welcome discussion about creating a welcoming, safe, and productive -environment for the community. If you have any questions, feedback, or concerns -[please let us know](https://www.ory.sh/chat). diff --git a/docs/versioned_docs/version-v0.6/examples/olymp-file-sharing.mdx b/docs/versioned_docs/version-v0.6/examples/olymp-file-sharing.mdx deleted file mode 100644 index 5525eea68..000000000 --- a/docs/versioned_docs/version-v0.6/examples/olymp-file-sharing.mdx +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: 'Basic: Olymp Library' ---- - -#### A basic, down-to-earth full feature example - -Consider a file sharing application called "Olymp Library". Each file is stored -in a key-value store, where the key is a UUIDv4 (pseudorandom unique -identifier), while the value is the metadata and content. The application uses -Ory Keto to keep track of ownership and granted access on a per file level. - -:::note - -This example assumes there is a [namespace](../concepts/namespaces.mdx) `files` -with the relations `owner` and `access` defined, where each `owner` of an object -also has `access` to that object. All relation tuples are stored in that -namespace. - -::: - -Now, the user identified by its unique username `demeter` wants to upload a file -containing the most fertile grounds. The file gets assigned the UUID -`ec788a82-a12e-45a4-b906-3e69f78c94e4`. The application adds the following -[relation tuple](../concepts/relation-tuples.mdx) to Ory Keto through the -[write-API](../concepts/api-overview.mdx#write-apis): - -```keto-relation-tuples -ec788a82-a12e-45a4-b906-3e69f78c94e4#owner@demeter -``` - -To prepare for an important meeting with the user `athena`, `demeter` wants to -share the file with fertile grounds with `athena` so that they can both read it. -Therefore, he opens the "Olymp Library" and is presented with a list of all -files he owns. The application will internally request all -[objects](../concepts/objects.mdx) (file IDs) with the owner `demeter` by using -the [list-API](../concepts/api-overview.mdx#list-relation-tuples). The response -will contain the object `ec788a82-a12e-45a4-b906-3e69f78c94e4`, which the -application maps to the file in question. - -The user `demeter` will then ask the application to share the file with -`athena`. The application will translate that request into a -[write-API request](../concepts/api-overview.mdx#write-apis) adding the -following relation tuple to Ory Keto: - -```keto-relation-tuples -ec788a82-a12e-45a4-b906-3e69f78c94e4#access@athena -``` - -To confirm the successful operation, the application uses Ory Keto's -[expand-API](../concepts/api-overview.mdx#expand-subject-sets) to compile a list -of everyone who can access the file: - -```keto-relation-tuples -// The following subject set is expanded by Keto -ec788a82-a12e-45a4-b906-3e69f78c94e4#access -``` - -which returns the expansion tree - -``` -∪ ec788a82-a12e-45a4-b906-3e69f78c94e4#access -├─ ∪ ec788a82-a12e-45a4-b906-3e69f78c94e4#owner -│ ├─ ☘ demeter -├─ ☘ athena -``` - -The "Olymp Library" can then display this information to `demeter`. - -When `athena` wants to get the file containing fertile grounds, the application -uses the [check-API](../concepts/api-overview.mdx#check-relation-tuple) to -verify that `athena` has access to the file before it returns the file. This -will allow `demeter` to revoke `athena`'s access at any point by deleting the -corresponding relation tuple. diff --git a/docs/versioned_docs/version-v0.6/guides/access-control-inheritance.mdx b/docs/versioned_docs/version-v0.6/guides/access-control-inheritance.mdx deleted file mode 100644 index 36040c0b4..000000000 --- a/docs/versioned_docs/version-v0.6/guides/access-control-inheritance.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Inheriting Access Control Rules ---- - -This guide will explain how to implement inheritance of ACL rules using Ory -Keto. It is still work in progress. If you happened to figure this out yourself, -please open a PR to add your findings on this page. diff --git a/docs/versioned_docs/version-v0.6/guides/access-control-list-design-best-practices.mdx b/docs/versioned_docs/version-v0.6/guides/access-control-list-design-best-practices.mdx deleted file mode 100644 index 34441063a..000000000 --- a/docs/versioned_docs/version-v0.6/guides/access-control-list-design-best-practices.mdx +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Best Practices for Designing your Access Control List ---- - -This guide is still a work in progress. Just a general word of warning: - -:::warning - -Avoid too deeply nested subject set indirections (more than ~5). - -::: diff --git a/docs/versioned_docs/version-v0.6/guides/expand-api-display-who-has-access.mdx b/docs/versioned_docs/version-v0.6/guides/expand-api-display-who-has-access.mdx deleted file mode 100644 index 19fe438a7..000000000 --- a/docs/versioned_docs/version-v0.6/guides/expand-api-display-who-has-access.mdx +++ /dev/null @@ -1,100 +0,0 @@ ---- -title: 'Expand API: Display who has Access to an Object' ---- - -import CodeTabs from '@theme/CodeTabs' - -This guide will explain how to use Ory Keto's expand-API to display who has -access to an object, and why. Please refer to the -[gRPC](../reference/proto-api.mdx) and [REST](../reference/rest-api.mdx) API -reference documentation for all details. In general, the expand-API allows to -expand a given subject set into all its effective subjects. - -## Example - -As an example, we want to look at a file sharing application. Files are -hierarchically organized in a directory structure. Every user owns files and -directories, and can grant any other user access to them on a per-file or -per-directory basis. Users can only see and access files they own or were -granted access by the owner. - -Directories and files are stored in Ory Keto within the `directories` and -`files` namespaces respectively. They are identified by a UUID that the -application maps to the actual object metadata. Users are also identified by and -mapped to a UUID. - -:::info - -For the sake of readability, the code samples use the object path and user name -instead. Please refer to the [objects](../concepts/objects.mdx) and -[subjects](../concepts/subjects.mdx) pages for why the mapping is necessary. - -::: - -### Displaying who has Access - -To assist users with managing permissions for their files, the application has -to display exactly who has access to a file and why. In this example, we assume -that the application knows the following files and directories: - -``` -├─ photos (owner: maureen; shared with laura) - ├─ beach.jpg (owner: maureen) - ├─ mountains.jpg (owner: laura) -``` - -This is represented in Ory Keto by the following -[relation tuples](../concepts/relation-tuples.mdx): - -```keto-relation-tuples -// ownership -directories:/photos#owner@maureen -files:/photos/beach.jpg#owner@maureen -files:/photos/mountains.jpg#owner@laura - -// maureen granted access to /photos to laura -directories:/photos#access@laura - -// the following tuples are defined implicitly through subject set rewrites (not supported yet) -directories:/photos#access@(directories:/photos#owner) -files:/photos/beach.jpg#access@(files:/photos/beach.jpg#owner) -files:/photos/beach.jpg#access@(directories:/photos#access) -files:/photos/mountains.jpg#access@(files:/photos/mountains.jpg#owner) -files:/photos/mountains.jpg#access@(directories:/photos#access) - -// the follwoing tuples are required to allow the subject set rewrites (not supported yet) -directories:/photos#parent@(files:/photos/beach.jpg#_) -directories:/photos#parent@(files:/photos/mountains.jpg#_) -``` - -The user `maureen` now wants to manage `access` for the file -`/photos/beach.jpg`. Therefore, the application uses the expand-API to get a -tree of everyone who has access to that file: - - - -### Maximum Tree Depth - -The `max-depth` parameter is important to keep the request latency within an -acceptable bound, but also abstract away the most basic subject sets. In many -cases the application does not want to resolve all subject sets, but rather -wants to display that e.g. `Everyone in the company` or `Admins` have a specific -relation. - -In this example the application knows the rough structure of the relation tuples -it uses and can therefore determine that `max-depth=3` is sufficient to display -all relevant relations: - -1. directly granted access (depth 1) -2. indirectly granted access through ownership (depth 2) -3. indirectly granted access through ownership of the parent (depth 3) - -### Analyzing the Tree - -The tree does not only include the subject IDs (in this case usernames), but -also for what reason they were included. This can be useful for users to audits -permissions. Also, in many cases the application would not want to list all -subject IDs but rather abstract away some subject sets. diff --git a/docs/versioned_docs/version-v0.6/guides/list-api-display-objects.mdx b/docs/versioned_docs/version-v0.6/guides/list-api-display-objects.mdx deleted file mode 100644 index 258802803..000000000 --- a/docs/versioned_docs/version-v0.6/guides/list-api-display-objects.mdx +++ /dev/null @@ -1,129 +0,0 @@ ---- -title: 'List API: Display all Objects a User has Access to' ---- - -import CodeTabs from '@theme/CodeTabs' - -In this guide you will learn how to use Ory Keto's list API to display a list of -all objects (e.g. files, ...) a user has access to. Please refer to the -[gRPC](../reference/proto-api.mdx) and [REST](../reference/rest-api.mdx) API -reference documentation for all details. In general, the list API allows you to -query relation tuples based on partial relation tuples. - -## Example - -As an example, we want to look at a chat application. Every user is part of one -or more chats, and each chat has one or more members. - -Chats are stored in Ory Keto within the `chats` namespace. They are identified -by a UUID that the application maps to the actual object metadata. Users are -also identified by and mapped to a UUID. - -:::info - -For the sake of readability, the code samples use the name of the chat and -username instead of the UUIDs. Please refer to the -[objects](../concepts/objects.mdx) and [subjects](../concepts/subjects.mdx) -pages for why the mapping is necessary. - -::: - -### Listing Objects - -Our example application allows users to browse the chats they belong to. To -achieve that, it uses Ory Keto's list API. - -We assume that the application currently has the following chats: - -```yml -memes: - members: - - PM - - Vincent - - Julia -cars: - members: - - PM - - Julia -coffee-break: - members: - - PM - - Vincent - - Julia - - Patrik -``` - -This is represented in Ory Keto by the following -[relation tuples](../concepts/relation-tuples.mdx): - -```keto-relation-tuples -chats:memes#member@PM -chats:memes#member@Vincent -chats:memes#member@Julia - -chats:cars#member@PM -chats:cars#member@Julia - -chats:coffee-break#member@PM -chats:coffee-break#member@Vincent -chats:coffee-break#member@Julia -chats:coffee-break#member@Patrik -``` - -The user `PM` now opens the chat application. To display a list of all of `PM`'s -chats, the application uses Keto's list API: - - - -As a response, the application gets the list of all chats the user `PM` is a -member of. It can then use the information to build the UI. - -### Listing Subjects - -Another view of the chat application has to display all members of a specific -group to the user. This can also be achieved using the list API. In cases where -such a membership would be modeled through -[subject sets](../concepts/subjects.mdx#subject-sets), you have to use the -[expand-API](./expand-api-display-who-has-access.mdx). - -:::caution - -In this case the application should probably first use the -[check-API](./simple-access-check-guide.mdx) to check whether the user is -allowed to list the members of a group. This step is not part of this example. - -::: - -In our example, a user wants to see who is a member of the `coffee-break` group: - - - -## Application Context - -It is important to note that the list API does **not** expand -[subject sets](../concepts/subjects.mdx#subject-sets). Usually the application -has some context to determine what tuples to query anyway. That could be e.g. -knowledge of the structure of subject sets like depth or hierarchy, or the UI -context, like a "My Items" view which should probably contain other objects than -a "My Organizations" or "Shared with Me" views. If there really is no way to -narrow down a query, you will have to use the -[expand-API](./expand-api-display-who-has-access) instead, or repeatedly call -the list API. Try to avoid such cases because they require a lot of resources -and can quickly degrade the service quality for all users. Please refer to the -[performance considerations](../performance.mdx). - -## Pagination - -The list API only returns paginated results. Currently, it is not possible to -customize the order of results. The response returns an opaque token that has to -be used to retrieve the following page. The first page can be retrieved by -passing no, or an empty token. - -The page size can be adjusted at any point, not only when requesting the first -page. It defaults to 100 items. diff --git a/docs/versioned_docs/version-v0.6/guides/production.md b/docs/versioned_docs/version-v0.6/guides/production.md deleted file mode 100644 index 97962b3a6..000000000 --- a/docs/versioned_docs/version-v0.6/guides/production.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -id: production -title: Going to Production ---- - -:::warning - -This document is still in development. - -::: - -## Database - -ORY Keto requires a production-grade database such as PostgreSQL, MySQL, -CockroachDB. Do not use SQLite in production! - -### Write API - -Never expose the ORY Keto Write API to the internet unsecured. Always require -authorization. A good practice is to not expose the Write API at all to the -public internet and use a Zero Trust Networking Architecture within your -intranet. - -## Scaling - -There are no additional requirements for scaling ORY Keto, just spin up another -container! diff --git a/docs/versioned_docs/version-v0.6/guides/rbac.mdx b/docs/versioned_docs/version-v0.6/guides/rbac.mdx deleted file mode 100644 index 52083459e..000000000 --- a/docs/versioned_docs/version-v0.6/guides/rbac.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Role Based Access Control (RBAC) ---- - -This guide will explain how to implement RBAC using Ory Keto. It is still work -in progress. If you happened to figure this out yourself, please open a PR to -add your findings on this page. diff --git a/docs/versioned_docs/version-v0.6/guides/simple-access-check-guide.mdx b/docs/versioned_docs/version-v0.6/guides/simple-access-check-guide.mdx deleted file mode 100644 index 87740cdbd..000000000 --- a/docs/versioned_docs/version-v0.6/guides/simple-access-check-guide.mdx +++ /dev/null @@ -1,144 +0,0 @@ ---- -title: Check whether a User has Access to Something ---- - -import Mermaid from '@theme/Mermaid' -import CodeTabs from '@theme/CodeTabs' - -This guide will explain how you can use Ory Keto's -[check-API](../concepts/api-overview.mdx#check-relation-tuple) to determine -whether a [subject](../concepts/subjects.mdx) has a specific -[relation](../concepts/relation-tuples.mdx) on an -[object](../concepts/objects.mdx). The result can be used for controlling access -to specific resources. - -## Synchronous Authorization Flow - -We recommend offloading the whole burden of access control to Ory Keto. -Typically, this means that the application forwards every incoming request as a -check request to Ory Keto. The following chart demonstrates how such a flow can -look like: - ->A: decypher(02y_15_4w350m3) - A->>K: check(messages:02y_15_4w350m3#35;decypher@john) -%% - alt is allowed - K-->>A: true - A-->>U: ory_is_awesome - else is not allowed - K-->>A: false - A-->>U: Error 403 - end -`} -/> - -Note that the channel of communication between user <-> application, and -application <-> Ory Keto can vastly differ. The application could offer a JSON -API towards the user, while communicating with Keto through gRPC. - -As a first step, the application has to authenticate the user reliably to -provide the subject to Keto. This can be achieved e.g. by using -[Ory Kratos](https://www.ory.sh/kratos/docs/) or any other authentication -system. - -The request (here `decypher` of the message `02y_15_4w350m3`) is then translated -into a request to Ory Keto's -[check-API](../concepts/api-overview.mdx#check-relation-tuple). Basically, the -application is asking Keto "Is john allowed to decypher the text -02y_15_4w350m3?" - -This question is encoded as the following -[relation tuple](../concepts/relation-tuples.mdx): - -```keto-relation-tuples -messages:02y_15_4w350m3#decypher@john -``` - -:::caution Important - -It is up to the application and its defined relation tuples how the check -requests have to be encoded. In this example we assume that the known cypher -messages are stored in Ory Keto and access to the cleartext is encoded by the -`decypher` relation. - -::: - -### Directly Defined Access - -Ory Keto can know the exact relation tuple that the application is checking. -Intuitively, this means that `john` was allowed to `decypher` the message -`02y_15_4w350m3` directly (imagine a "Share with `john`" input in a UI). - -Try this yourself by first adding the relation tuple using the -[write API](../concepts/api-overview.mdx#write-apis): - - - -Now, we can use the check-API to verify that `john` is allowed to `decypher` the -message: - - - -### Indirectly Defined Access - -On the other hand, it is possible to indirectly grant `john` access to the -resource. This could e.g. be done by adding a group, lets call it `hackers`. Now -we can grant access to the resource to everyone in that group by adding the -following relation tuple to Ory Keto: - -```keto-relation-tuples -messages:02y_15_4w350m3#decypher@(groups:hackers#member) -``` - -We also have to make `john` a `member` of `hackers` by adding the relation -tuple: - -```keto-relation-tuples -groups:hackers#member@john -``` - -Now, when Keto receives above check request, it will resolve the -[subject set](../concepts/subjects.mdx#subject-sets) - -```keto-relation-tuples -groups:hackers#member -``` - -and determine that `john` is a subject in the resulting set. Therefore, it -approves the check request. - -There is no limit on the number of indirections through subject sets. It is -however important to follow our -[best practices](./access-control-list-design-best-practices.mdx) to ensure a -good [performance](../performance.mdx). - -## Caching Keto's responses - -We do not recommend that you cache the responses from Ory Keto. It is designed -to respond quickly and still provide -[some consistency guarantees](../concepts/snaptokens-evaluation-consistency.mdx). -Especially, for the revocation of access it is important to not use a local -cache. Be ensured that Ory Keto heavily utilizes caching wherever possible. If -you still happen to find unacceptably slow check requests, check that you follow -our [best practices](./access-control-list-design-best-practices.mdx) for good -[performance](../performance.mdx), or open an issue if the problem still -persists. - -## Conclusion - -We learned how to integrate check requests and access control into an -application using Ory Keto's -[check-API](../concepts/api-overview.mdx#check-relation-tuple). diff --git a/docs/versioned_docs/version-v0.6/implemented-planned-features.mdx b/docs/versioned_docs/version-v0.6/implemented-planned-features.mdx deleted file mode 100644 index eb7917d64..000000000 --- a/docs/versioned_docs/version-v0.6/implemented-planned-features.mdx +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Implemented and Planned Features ---- - -In October 2020 we decided to rewrite Ory Keto from scratch, implementing -state-of-the-art access control and permissions. We decided to make Ory Keto the -first Open Source implementation of -[Google's Zanzibar paper](https://research.google/pubs/pub48190/). - -This document gives an overview of all implemented and planned features. -Unfortunately we cannot give delivery time estimates for Open Source products, -but you can help us to accelerate development by -[supporting Ory](https://opencollective.com/ory). - -## Implemented Features - -- [Read-API](https://github.com/ory/keto/pull/269) -- [Write-API](https://github.com/ory/keto/pull/275) -- [Check-API](https://github.com/ory/keto/pull/277) -- [Expand-API](https://github.com/ory/keto/pull/285) -- [Namespaces](https://github.com/ory/keto/pull/324) - -## Next Upcoming Features - -- [Subject Set rewrites](https://github.com/ory/keto/issues/263) -- [Native ABAC & RBAC Support](https://github.com/ory/keto/issues/319) -- [Integration with other policy servers](https://github.com/ory/keto/issues/318) - -## Planned Features - -- [Database sharding](https://github.com/ory/keto/issues/306) -- [Namespace-specific database settings](https://github.com/ory/keto/issues/303) -- [Cockroach optimized persistence layer](https://github.com/ory/keto/issues/504) -- [Latency reduction through aggressive caching](https://github.com/ory/keto/issues/312) - -... and many more, tracked as [issues](https://github.com/ory/keto/issues) diff --git a/docs/versioned_docs/version-v0.6/index.md b/docs/versioned_docs/version-v0.6/index.md deleted file mode 100644 index 141340a3c..000000000 --- a/docs/versioned_docs/version-v0.6/index.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -id: index -slug: / -title: Introduction ---- - -Ory Keto is the first and only open source implementation of "Zanzibar: Google's -Consistent, Global Authorization System": - -> Determining whether online users are authorized to access digital objects is -> central to preserving privacy. This paper presents the design, implementation, -> and deployment of Zanzibar, a global system for storing and evaluating access -> control lists. Zanzibar provides a uniform data model and configuration -> language for expressing a wide range of access control policies from hundreds -> of client services at Google, including Calendar, Cloud, Drive, Maps, Photos, -> and YouTube. Its authorization decisions respect causal ordering of user -> actions and thus provide external consistency amid changes to access control -> lists and object contents. Zanzibar scales to trillions of access control -> lists and millions of authorization requests per second to support services -> used by billions of people. It has maintained 95th-percentile latency of less -> than 10 milliseconds and availability of greater than 99.999% over 3 years of -> production use. -> -> [Source](https://research.google/pubs/pub48190/) - -If you need to know if a user (or robot, car, service) is allowed to do -something - Ory Keto is the right fit for you. - -Currently, Ory Keto implements the basic API contracts for managing and checking -relations ("permissions") with HTTP and gRPC APIs. Future versions will include -features such as userset rewrites (e.g. RBAC-style role-permission models), -Zookies, and more. An overview of what is implemented and upcoming can be found -at [Implemented and Planned Features](implemented-planned-features.mdx). diff --git a/docs/versioned_docs/version-v0.6/install.md b/docs/versioned_docs/version-v0.6/install.md deleted file mode 100644 index 8a65e5645..000000000 --- a/docs/versioned_docs/version-v0.6/install.md +++ /dev/null @@ -1,84 +0,0 @@ ---- -id: install -title: Installation ---- - -Installing Ory Keto on any system is straightforward. We provide pre-built -binaries, Docker images, and support a number of package managers. - -## Docker - -We recommend using Docker to run Ory Keto: - -```shell -$ docker pull oryd/keto:v0.6.0-alpha.3 -$ docker run --rm -it oryd/keto:v0.6.0-alpha.3 help -``` - -## macOS - -You can install Ory Keto using [homebrew](https://brew.sh/) on macOS: - -```shell -$ brew tap ory/keto -$ brew install ory/keto/keto -$ keto help -``` - -## Linux - -On linux, you can use `bash <(curl ...)` to fetch the latest stable binary -using: - -```shell -$ bash <(curl https://raw.githubusercontent.com/ory/keto/master/install.sh) -b . v0.6.0-alpha.3 -$ ./keto help -``` - -You may want to move Ory Keto into your `$PATH`: - -```shell -$ sudo mv ./keto /usr/local/bin/ -$ keto help -``` - -## Windows - -You can install Ory Keto using [scoop](https://scoop.sh) on Windows: - -```shell -> scoop bucket add ory-keto https://github.com/ory/scoop-keto.git -> scoop install keto -> keto help -``` - -## Download Binaries - -The client and server **binaries are downloadable via -[GitHub releases](https://github.com/ory/keto/releases)**. There is currently no -installer available. You have to add the Keto binary to the PATH environment -variable yourself or put the binary in a location that is already in your -`$PATH`, for example `/usr/local/bin`. - -Once installed, you should be able to run: - -```shell -$ keto help -``` - -## Building from Source - -If you wish to compile Ory Keto yourself, you need to install and set up -[Go 1.16+](https://golang.org/) and add `$GOPATH/bin` to your `$PATH`. - -The following commands check out the latest release tag of Ory Keto, compile it, -and set up flags so that `keto version` works as expected. Please note that this -will only work with a Linux shell like bash or sh. - -```shell -$ git clone https://github.com/ory/keto.git -$ cd keto -$ git checkout v0.6.0-alpha.3 -$ make install -$ keto help -``` diff --git a/docs/versioned_docs/version-v0.6/milestones.md b/docs/versioned_docs/version-v0.6/milestones.md deleted file mode 100644 index b705b5fde..000000000 --- a/docs/versioned_docs/version-v0.6/milestones.md +++ /dev/null @@ -1,401 +0,0 @@ ---- -id: milestones -title: Milestones and Roadmap ---- - -## [Next Gen Keto - first working version](https://github.com/ory/keto/milestone/4) - -Goals: - -- check/expand/read/write APIs -- SQL persistence (only local database) -- operation using one node in one data center -- namespace configuration including subject set rewrites - -Non-goals: - -- watch API -- caching -- fan-out -- Leopard indexing system -- fancy query features - -### [Bug](https://github.com/ory/keto/labels/bug) - -Something is not working. - -#### Issues - -- [x] CLI remote flag should be required - ([keto#287](https://github.com/ory/keto/issues/287)) - - [@Patrik](https://github.com/zepatrik) -- [x] REST Relations API returns null instead of `[]` - ([keto#289](https://github.com/ory/keto/issues/289)) - - [@Patrik](https://github.com/zepatrik) -- [x] REST API create relation should mirror payload in 201 OK response - ([keto#290](https://github.com/ory/keto/issues/290)) - - [@Patrik](https://github.com/zepatrik) -- [x] REST API create and subsequent get relation does not properly persist - fields ([keto#291](https://github.com/ory/keto/issues/291)) - - [@Patrik](https://github.com/zepatrik) -- [x] Unable to create relations using REST API and string notation - ([keto#293](https://github.com/ory/keto/issues/293)) - - [@Patrik](https://github.com/zepatrik) -- [x] Replace in-memory persister with SQLite schema - ([keto#294](https://github.com/ory/keto/issues/294)) - - [@Patrik](https://github.com/zepatrik) -- [x] Write GRPC handler and tests for check engine - ([keto#296](https://github.com/ory/keto/issues/296)) - - [@Patrik](https://github.com/zepatrik), - [@Robin Brämer](https://github.com/robinbraemer) -- [x] Remove `config.Provider` interface - ([keto#403](https://github.com/ory/keto/issues/403)) - - [@Patrik](https://github.com/zepatrik) -- [x] Abort early in subjectIsAllowed - ([keto#405](https://github.com/ory/keto/issues/405)) - - [@Patrik](https://github.com/zepatrik) -- [x] Check REST API should return JSON Object - ([keto#406](https://github.com/ory/keto/issues/406)) - - [@Patrik](https://github.com/zepatrik) -- [x] Clarify where handlers are tested - ([keto#407](https://github.com/ory/keto/issues/407)) - - [@Patrik](https://github.com/zepatrik) -- [x] Write relationtuple tests - ([keto#408](https://github.com/ory/keto/issues/408)) - - [@Patrik](https://github.com/zepatrik) -- [x] Write dedicated persistence tests - ([keto#409](https://github.com/ory/keto/issues/409)) - - [@Patrik](https://github.com/zepatrik) -- [x] Persistence errors are not properly handled and wrapped - ([keto#432](https://github.com/ory/keto/issues/432)) - - [@Patrik](https://github.com/zepatrik) -- [x] Non-nil return values despite errors - ([keto#433](https://github.com/ory/keto/issues/433)) - - [@Patrik](https://github.com/zepatrik) -- [x] Don't use fmt.Sprintf to construct queries - ([keto#434](https://github.com/ory/keto/issues/434)) - - [@Patrik](https://github.com/zepatrik) -- [x] Make errors debuggable and understandable - ([keto#438](https://github.com/ory/keto/issues/438)) - - [@Patrik](https://github.com/zepatrik) -- [x] Command status --block is not blocking until healthy - ([keto#456](https://github.com/ory/keto/issues/456)) - - [@Patrik](https://github.com/zepatrik) - -### [Feat](https://github.com/ory/keto/labels/feat) - -New feature or request. - -#### Issues - -- [x] Write relationtuple tests for http and grpc handlers - ([keto#297](https://github.com/ory/keto/issues/297)) - - [@Patrik](https://github.com/zepatrik), - [@Robin Brämer](https://github.com/robinbraemer) -- [x] Define and architect SQL schema and queries for querying relations - ([keto#300](https://github.com/ory/keto/issues/300)) - - [@Patrik](https://github.com/zepatrik) -- [x] Move buf configs to project root - ([keto#399](https://github.com/ory/keto/issues/399)) - - [@Patrik](https://github.com/zepatrik) -- [x] Follow buf style guide - ([keto#400](https://github.com/ory/keto/issues/400)) - - [@Patrik](https://github.com/zepatrik) -- [x] Remove stale protobuf definitions - ([keto#401](https://github.com/ory/keto/issues/401)) - - [@Patrik](https://github.com/zepatrik) -- [x] Relation Tuple Migrations should not be hardcoded but use prefixed tables - ([keto#404](https://github.com/ory/keto/issues/404)) - - [@Patrik](https://github.com/zepatrik) -- [x] Use `errors.WithStack` where ever non-keto code returns errors. - ([keto#437](https://github.com/ory/keto/issues/437)) - - [@Patrik](https://github.com/zepatrik) -- [x] Allow deletion of relation tuples - ([keto#452](https://github.com/ory/keto/issues/452)) - - [@Patrik](https://github.com/zepatrik) -- [x] Add tracing and metrics (prometheus/jaeger/...) capabilities - ([keto#463](https://github.com/ory/keto/issues/463)) - - [@Andreas Bucksteeg](https://github.com/tricky42), - [@Piotr Mścichowski](https://github.com/piotrmsc) -- [x] Namespace migrate status command - ([keto#502](https://github.com/ory/keto/issues/502)) - - [@Patrik](https://github.com/zepatrik) - -### [Docs](https://github.com/ory/keto/labels/docs) - -Affects documentation. - -#### Issues - -- [x] Improve documentation of Expand API's max_depth parameter - ([keto#419](https://github.com/ory/keto/issues/419)) - - [@Patrik](https://github.com/zepatrik) -- [x] Next Gen Documentation - ([keto#420](https://github.com/ory/keto/issues/420)) - - [@Patrik](https://github.com/zepatrik) -- [x] Do not use latest tags in docker-compose examples - ([keto#481](https://github.com/ory/keto/issues/481)) - - [@Patrik](https://github.com/zepatrik) - -### [Ci](https://github.com/ory/keto/labels/ci) - -Affects Continuous Integration (CI). - -#### Issues - -- [x] Add golangci-lint with gosec linter - ([keto#435](https://github.com/ory/keto/issues/435)) - - [@Patrik](https://github.com/zepatrik) - -### [Blocking](https://github.com/ory/keto/labels/blocking) - -Blocks milestones or other issues or pulls. - -#### Issues - -- [x] Define and architect SQL schema and queries for querying relations - ([keto#300](https://github.com/ory/keto/issues/300)) - - [@Patrik](https://github.com/zepatrik) -- [x] Ensure goreleaser config is still working - ([keto#410](https://github.com/ory/keto/issues/410)) - - [@hackerman](https://github.com/aeneasr) -- [x] Next Gen Documentation - ([keto#420](https://github.com/ory/keto/issues/420)) - - [@Patrik](https://github.com/zepatrik) -- [x] Add health check and version endpoints to read/write REST (and gRPC?) API - ([keto#422](https://github.com/ory/keto/issues/422)) - - [@Patrik](https://github.com/zepatrik) -- [x] SQL: make strings variable length - ([keto#430](https://github.com/ory/keto/issues/430)) -- [x] Persistence errors are not properly handled and wrapped - ([keto#432](https://github.com/ory/keto/issues/432)) - - [@Patrik](https://github.com/zepatrik) -- [x] Non-nil return values despite errors - ([keto#433](https://github.com/ory/keto/issues/433)) - - [@Patrik](https://github.com/zepatrik) -- [x] Don't use fmt.Sprintf to construct queries - ([keto#434](https://github.com/ory/keto/issues/434)) - - [@Patrik](https://github.com/zepatrik) -- [x] Add golangci-lint with gosec linter - ([keto#435](https://github.com/ory/keto/issues/435)) - - [@Patrik](https://github.com/zepatrik) -- [x] Use `errors.WithStack` where ever non-keto code returns errors. - ([keto#437](https://github.com/ory/keto/issues/437)) - - [@Patrik](https://github.com/zepatrik) -- [x] Make errors debuggable and understandable - ([keto#438](https://github.com/ory/keto/issues/438)) - - [@Patrik](https://github.com/zepatrik) -- [x] Allow deletion of relation tuples - ([keto#452](https://github.com/ory/keto/issues/452)) - - [@Patrik](https://github.com/zepatrik) -- [x] Command status --block is not blocking until healthy - ([keto#456](https://github.com/ory/keto/issues/456)) - - [@Patrik](https://github.com/zepatrik) -- [x] Namespace migrate status command - ([keto#502](https://github.com/ory/keto/issues/502)) - - [@Patrik](https://github.com/zepatrik) - -#### Pull Requests - -- [x] feat: first API draft and generation - ([keto#315](https://github.com/ory/keto/pull/315)) - - [@Patrik](https://github.com/zepatrik), - [@Robin Brämer](https://github.com/robinbraemer) - -### [Rfc](https://github.com/ory/keto/labels/rfc) - -A request for comments to discuss and share ideas. - -#### Issues - -- [x] Consider rename WriteRelationTuples in WriteService - ([keto#351](https://github.com/ory/keto/issues/351)) - - [@Patrik](https://github.com/zepatrik), - [@Robin Brämer](https://github.com/robinbraemer) -- [x] Allow deletion of relation tuples - ([keto#452](https://github.com/ory/keto/issues/452)) - - [@Patrik](https://github.com/zepatrik) - -#### Pull Requests - -- [x] feat: first API draft and generation - ([keto#315](https://github.com/ory/keto/pull/315)) - - [@Patrik](https://github.com/zepatrik), - [@Robin Brämer](https://github.com/robinbraemer) - -## [Next Gen Keto - next milestone](https://github.com/ory/keto/milestone/3) - -Tracks all the issues contributing to next gen Keto. - -### [Bug](https://github.com/ory/keto/labels/bug) - -Something is not working. - -#### Issues - -- [ ] Relations are not unique - ([keto#292](https://github.com/ory/keto/issues/292)) - - [@Patrik](https://github.com/zepatrik) -- [ ] Handle circular relation tuples - ([keto#411](https://github.com/ory/keto/issues/411)) - - [@Patrik](https://github.com/zepatrik) -- [x] Move models package to relations - ([keto#295](https://github.com/ory/keto/issues/295)) - - [@Patrik](https://github.com/zepatrik) -- [x] Listing relation tuples where none match cause SQL error - ([keto#439](https://github.com/ory/keto/issues/439)) - - [@Patrik](https://github.com/zepatrik) - -### [Feat](https://github.com/ory/keto/labels/feat) - -New feature or request. - -#### Issues - -- [ ] Define naming conventions for objects, relations, namespaces - ([keto#288](https://github.com/ory/keto/issues/288)) - - [@Patrik](https://github.com/zepatrik) -- [ ] Database sharding ([keto#306](https://github.com/ory/keto/issues/306)) - - [@Patrik](https://github.com/zepatrik) -- [ ] Integrate Next Gen Keto with wider policy ecosystems / Open Policy Agent - ([keto#318](https://github.com/ory/keto/issues/318)) - - [@hackerman](https://github.com/aeneasr) -- [ ] Allow defining ABAC relation tuples - ([keto#319](https://github.com/ory/keto/issues/319)) -- [ ] Allow narrowed ACL evaluation in check requests - ([keto#323](https://github.com/ory/keto/issues/323)) -- [ ] Allow modifying relation tuples with consistency guarantees - ([keto#328](https://github.com/ory/keto/issues/328)) - - [@Robin Brämer](https://github.com/robinbraemer) -- [ ] Add TTL support to relation tuple - ([keto#346](https://github.com/ory/keto/issues/346)) -- [ ] [next-gen] Allow defining userset rewrites - ([keto#263](https://github.com/ory/keto/issues/263)) - - [@Patrik](https://github.com/zepatrik) -- [ ] Namespace configuration - ([keto#303](https://github.com/ory/keto/issues/303)) - - [@Patrik](https://github.com/zepatrik) -- [ ] Ensure telemetry is running for GRPC - ([keto#298](https://github.com/ory/keto/issues/298)) - - [@hackerman](https://github.com/aeneasr), - [@Patrik](https://github.com/zepatrik), - [@Robin Brämer](https://github.com/robinbraemer) -- [x] Remove support for AND/OR/XOR in GetRelationTuples - ([keto#299](https://github.com/ory/keto/issues/299)) - - [@Patrik](https://github.com/zepatrik) -- [x] Write benchmark tests for relationtuple package - ([keto#301](https://github.com/ory/keto/issues/301)) - - [@Patrik](https://github.com/zepatrik) -- [x] Rewrite check engine to search the graph in the other direction - ([keto#302](https://github.com/ory/keto/issues/302)) - - [@Patrik](https://github.com/zepatrik) - -### [Docs](https://github.com/ory/keto/labels/docs) - -Affects documentation. - -#### Issues - -- [ ] Integrate Next Gen Keto with wider policy ecosystems / Open Policy Agent - ([keto#318](https://github.com/ory/keto/issues/318)) - - [@hackerman](https://github.com/aeneasr) - -### [Blocking](https://github.com/ory/keto/labels/blocking) - -Blocks milestones or other issues or pulls. - -#### Issues - -- [ ] Namespace configuration - ([keto#303](https://github.com/ory/keto/issues/303)) - - [@Patrik](https://github.com/zepatrik) -- [ ] Use fizz migrations to generate SQL migrations - ([keto#448](https://github.com/ory/keto/issues/448)) - - [@Patrik](https://github.com/zepatrik) -- [ ] Require relations to be defined in the namespace config - ([keto#509](https://github.com/ory/keto/issues/509)) - - [@Patrik](https://github.com/zepatrik) -- [ ] Ensure telemetry is running for GRPC - ([keto#298](https://github.com/ory/keto/issues/298)) - - [@hackerman](https://github.com/aeneasr), - [@Patrik](https://github.com/zepatrik), - [@Robin Brämer](https://github.com/robinbraemer) -- [x] Write benchmark tests for relationtuple package - ([keto#301](https://github.com/ory/keto/issues/301)) - - [@Patrik](https://github.com/zepatrik) -- [x] Protobuf APIs & tooling - ([keto#311](https://github.com/ory/keto/issues/311)) - - [@Patrik](https://github.com/zepatrik), - [@Robin Brämer](https://github.com/robinbraemer) -- [x] Listing relation tuples where none match cause SQL error - ([keto#439](https://github.com/ory/keto/issues/439)) - - [@Patrik](https://github.com/zepatrik) - -#### Pull Requests - -- [x] chore: make all go packages internal - ([keto#313](https://github.com/ory/keto/pull/313)) - -### [Rfc](https://github.com/ory/keto/labels/rfc) - -A request for comments to discuss and share ideas. - -#### Issues - -- [ ] Distributed cache: loading and coordination - ([keto#312](https://github.com/ory/keto/issues/312)) -- [ ] Integrate Next Gen Keto with wider policy ecosystems / Open Policy Agent - ([keto#318](https://github.com/ory/keto/issues/318)) - - [@hackerman](https://github.com/aeneasr) -- [ ] Allow defining ABAC relation tuples - ([keto#319](https://github.com/ory/keto/issues/319)) -- [ ] Allow narrowed ACL evaluation in check requests - ([keto#323](https://github.com/ory/keto/issues/323)) -- [ ] Allow modifying relation tuples with consistency guarantees - ([keto#328](https://github.com/ory/keto/issues/328)) - - [@Robin Brämer](https://github.com/robinbraemer) -- [ ] Handle circular relation tuples - ([keto#411](https://github.com/ory/keto/issues/411)) - - [@Patrik](https://github.com/zepatrik) -- [x] Design decisions, Clarifications and Proposals - ([keto#307](https://github.com/ory/keto/issues/307)) - - [@hackerman](https://github.com/aeneasr), - [@Patrik](https://github.com/zepatrik) - -## [next](https://github.com/ory/keto/milestone/2) - -_This milestone does not have a description._ - -### [Bug](https://github.com/ory/keto/labels/bug) - -Something is not working. - -#### Issues - -- [x] Slash (/) in role or policy id causes 404 error for GET and DELETE - ([keto#140](https://github.com/ory/keto/issues/140)) -- [x] Keto is posting plain text passwords when there is an issue with DSN - ([keto#237](https://github.com/ory/keto/issues/237)) - -### [Feat](https://github.com/ory/keto/labels/feat) - -New feature or request. - -#### Issues - -- [x] Roles and Policies Filter by using flavor strategy - ([keto#186](https://github.com/ory/keto/issues/186)) -- [x] Evaluate queries needs to get the entire database in cache to works - ([keto#187](https://github.com/ory/keto/issues/187)) -- [x] Add a description attribute to access control policy role - ([keto#213](https://github.com/ory/keto/issues/213)) - -### [Rfc](https://github.com/ory/keto/labels/rfc) - -A request for comments to discuss and share ideas. - -#### Issues - -- [x] IDs being limited to varchar(64) reduces the usefulness of URNs when you - are using them globally - ([keto#197](https://github.com/ory/keto/issues/197)) diff --git a/docs/versioned_docs/version-v0.6/performance.mdx b/docs/versioned_docs/version-v0.6/performance.mdx deleted file mode 100644 index ef2dcce4f..000000000 --- a/docs/versioned_docs/version-v0.6/performance.mdx +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: Performance ---- - -import Mermaid from '@theme/Mermaid' - -This document explains the time complexity of Ory Keto. Main memory complexity -will be analyzed and added at a later point. We only examine the evaluation -engines (check- and expand-API) as all other parts are mainly determined by -dependencies like your database of choice, or the de-/encoding of messages. -Examples given omit the namespace for clarity. - -## Check Engine - -In essence, the check-engine assumes that the relation tuples and their -indirections assemble an acyclic directed graph, known as -[the graph of relations](concepts/graph-of-relations). - -Consider the following example: - -```keto-relation-tuples -file#access@(file#owner) // probably defined via subjectset rewrites -file#access@user1 // access was granted directly -file#owner@user2 // file owner record; indirectly gets access -``` - -This is interpreted as the following graph: - -|access| B{{file#owner}} - A -->|owner| C([user2]) - A -->|access| D([user1]) - B -. file#access .-> C -`} -/> - -A check request of the form `object#relation@user` will be evaluated by -searching the graph starting at `object` going through `relation` trying to -reach `user`. The request is allowed iff there is such a path. - -The algorithm used in Ory Keto for this graph traversal is breadth-first search. -In the worst case it has a time complexity of `O(n+e)` where `n` is the number -of nodes reachable from the node `object#relation` through `e` edges. Space -complexity is `O(n)`. Rearranged, both space and time complexity are `O(b^d)` -where `b` is the maximum breadth and `d` the maximum depth in the graph, seen -from the search root. [[1]](#references) - -This means that the complexity heavily depends on the structure of the graph. If -it contains deeply nested indirections, it will require many recursive calls to -resolve those indirections. Analogously, if there are widely nested -indirections, Ory Keto has to possibly resolve all of them. The goal is to -design the ACL tuples in a way such that there are only view indirections to -resolve. Learn more in our -[best practices around ACL design](./guides/access-control-list-design-best-practices.mdx). - -Because of this we decided that generic benchmarks will not yield any meaningful -result. We will therefore add a comparison with other similar projects later on. - -## Expand Engine - -Similar to how the check-engine traverses the graph of relationtuples, the -expand-engine builds the tree of all set operations it encounters. It resolves -all indirections starting at the requested subjectset up to the specified depth. -Because it also uses breadth-first search, time and space complexity linearly -depend on the nodes reachable from the requested subjectset. The same -performance considerations apply here, while it is important to note that -requesting a low depth will further limit the complexity of the operation. The -returned tree can also exceed reasonable size limits quickly if the -relationtuples are deeply and/or widely nested. - -## References - -[[1] Breadth-first search](https://en.wikipedia.org/wiki/Breadth-first_search) -on Wikipedia diff --git a/docs/versioned_docs/version-v0.6/quickstart.mdx b/docs/versioned_docs/version-v0.6/quickstart.mdx deleted file mode 100644 index 1fd4af73b..000000000 --- a/docs/versioned_docs/version-v0.6/quickstart.mdx +++ /dev/null @@ -1,151 +0,0 @@ ---- -title: 'Quickstart: Cat Videos Example' ---- - -This example describes a video sharing service. The individual videos are -organized in directories. Every directory has an owner and every video has the -same owner as it's parent directory. The owner has elevated privileges about the -video files that are not modeled individually in Ory Keto. The only other -privilege modeled in this example is "view access." Every owner has view access -to their objects, and this privilege can be granted to other users as well. The -video sharing application interprets the special `*` user ID as any user, -including anonymous users. Note that Ory Keto does not interpret this subject -any differently from other subjects. It also does not know anything about -directory structures or induced ownership. - -:::info Terminology - -The "Keto client" is the application interacting with Keto. In this case we -refer to the video sharing service backend as the Keto client. - -::: - -## Starting the Example - -First, [install Keto](./install.md). - -Now you can start the example using either `docker-compose` or a bash script. -The bash script requires you to have the `keto` binary in your `$PATH`. - -Alternatively, use Docker to automatically get the required images. - -```shell -# clone the repository if you don't have it yet -git clone git@github.com:ory/keto.git && cd keto - -docker-compose -f contrib/cat-videos-example/docker-compose.yml up -# or -./contrib/cat-videos-example/up.sh - -# output: all initially created relation tuples - -# NAMESPACE OBJECT RELATION NAME SUBJECT -# videos /cats/1.mp4 owner videos:/cats#owner -# videos /cats/1.mp4 view videos:/cats/1.mp4#owner -# videos /cats/1.mp4 view * -# videos /cats/2.mp4 owner videos:/cats#owner -# videos /cats/2.mp4 view videos:/cats/2.mp4#owner -# videos /cats owner cat lady -# videos /cats view videos:/cats#owner -``` - -## State of the System - -At the current state only one user with the username `cat lady` has added -videos. Both videos are in the `/cats` directory owned by `cat lady`. The file -`/cats/1.mp4` can be viewed by anyone (`*`), while `/cats/2.mp4` has no extra -sharing options, and can therefore only be viewed by its owner, `cat lady`. The -relation tuple definitions are located in the -`contrib/cat-videos-example/relation-tuples` directory. - -## Simulating the Video Sharing Application - -Now you can open a second terminal to run the queries against, just like the -video service client would do. In this example we will use the Keto CLI client. - -If you want to run the Keto CLI within **Docker**, set the alias - -```shell -alias keto="docker run -it --network cat-videos-example_default -e KETO_READ_REMOTE=\"keto:4466\" oryd/keto:v0.6.0-alpha.3" -``` - -in your terminal session. Alternatively, you need to set the remote endpoint so -that the Keto CLI knows where to connect to (not necessary if using Docker): - -```shell -export KETO_READ_REMOTE="127.0.0.1:4466" -``` - -### Check Incoming Requests - -First off, we get a request by an anonymous user that would like to view -`/cats/2.mp4`. The client now has to ask Keto if that operation should be -allowed or denied. - -```shell -# Is "*" allowed to "view" the object "videos":"/cats/2.mp4"? -keto check "*" view videos /cats/2.mp4 -# output: - -# Denied -``` - -We already discussed that this request should be denied, but it is always good -to see this in action. - -Now `cat lady` wants to change some view permissions of `/cats/1.mp4`. For this, -the video service application has to show all users that are currently allowed -to view the video. It uses Keto's -[expand-API](./concepts/api-overview.mdx#expand-subject-set) to get these data: - -```shell -# Who is allowed to "view" the object "videos":"/cats/2.mp4"? -keto expand view videos /cats/1.mp4 -# output: - -# ∪ videos:/cats/1.mp4#view -# ├─ ∪ videos:/cats/1.mp4#owner -# │ ├─ ∪ videos:/cats#owner -# │ │ ├─ ☘ cat lady️ -# ├─ ☘ *️ -``` - -Here we can see the full subject set expansion. The first branch - -```keto-relation-tuples -videos:/cats/1.mp4#view -``` - -indicates that every owner of the object is allowed to view - -```keto-relation-tuples -videos:/cats/1.mp4#owner -``` - -In the next step we see that the object's owners are the owners of `/cats` - -```keto-relation-tuples -videos:/cats#owner -``` - -Finally, we see that `cat lady` is the owner of `/cats`. - -Note that there is no direct relation tuple that would grant `cat lady` view -access on `/cats/1.mp4` as this is indirectly defined via the ownership -relation. - -The special user `*` on the other hand was directly granted view access on the -object, as it is a first-level leaf of the expansion tree. The following CLI -command proves that this is the case: - -```shell -# Is "*" allowed to "view" the object "videos":"/cats/1.mp4"? -keto check "*" view videos /cats/1.mp4 -# output: - -# Allowed -``` - - - -Updating the view permissions will be added here at a later stage. diff --git a/docs/versioned_docs/version-v0.6/reference/api.mdx b/docs/versioned_docs/version-v0.6/reference/api.mdx deleted file mode 100644 index c1ec289df..000000000 --- a/docs/versioned_docs/version-v0.6/reference/api.mdx +++ /dev/null @@ -1,2105 +0,0 @@ ---- -title: REST API -id: api ---- - -Ory Keto is a cloud native access control server providing best-practice -patterns (RBAC, ABAC, ACL, AWS IAM Policies, Kubernetes Roles, ...) via REST -APIs. - -import Tabs from '@theme/Tabs' -import TabItem from '@theme/TabItem' - -:::info - -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. - -::: - - - -## read - - - -### Check a relation tuple - -``` -POST /check HTTP/1.1 -Content-Type: application/json -Accept: application/json - -``` - -To learn how relation tuples and the check works, head over to -[the documentation](../concepts/relation-tuples.mdx). - -#### Request body - -```json -{ - "namespace": "string", - "object": "string", - "relation": "string", - "subject": "string" -} -``` - - - -#### Parameters - -| Parameter | In | Type | Required | Description | -| --------- | ---- | ----------------------------------------------------- | -------- | ----------- | -| body | body | [InternalRelationTuple](#schemainternalrelationtuple) | false | none | - -#### Responses - - - -##### Overview - -| Status | Meaning | Description | Schema | -| ------ | -------------------------------------------------------------------------- | ------------------------- | ------------------------------------------- | -| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | getCheckResponse | [getCheckResponse](#schemagetcheckresponse) | -| 400 | [Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1) | The standard error format | Inline | -| 403 | [Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3) | getCheckResponse | [getCheckResponse](#schemagetcheckresponse) | -| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | The standard error format | Inline | - - - -##### Response Schema - -Status Code **400** - -| Name | Type | Required | Restrictions | Description | -| --------- | -------------- | -------- | ------------ | ----------- | -| » code | integer(int64) | false | none | none | -| » details | [object] | false | none | none | -| » message | string | false | none | none | -| » reason | string | false | none | none | -| » request | string | false | none | none | -| » status | string | false | none | none | - -Status Code **500** - -| Name | Type | Required | Restrictions | Description | -| --------- | -------------- | -------- | ------------ | ----------- | -| » code | integer(int64) | false | none | none | -| » details | [object] | false | none | none | -| » message | string | false | none | none | -| » reason | string | false | none | none | -| » request | string | false | none | none | -| » status | string | false | none | none | - -##### Examples - -###### 200 response - -```json -{ - "allowed": true -} -``` - - - -#### Code samples - - - - -```shell -curl -X POST /check \ - -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", "/check", bytes.NewBuffer(body)) - req.Header = headers - - client := &http.Client{} - resp, err := client.Do(req) - // ... -} -``` - - - - -```javascript -const fetch = require('node-fetch'); -const input = '{ - "namespace": "string", - "object": "string", - "relation": "string", - "subject": "string" -}'; -const headers = { - 'Content-Type': 'application/json', 'Accept': 'application/json' -} - -fetch('/check', { - method: 'POST', - body: input, - headers -}) -.then(r => r.json()) -.then((body) => { - console.log(body) -}) -``` - - - - -```java -// This sample needs improvement. -URL obj = new URL("/check"); - -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( - '/check', - params={}, - headers = headers) - -print r.json() -``` - - - - -```ruby -require 'rest-client' -require 'json' - -headers = { - 'Content-Type' => 'application/json', - 'Accept' => 'application/json' -} - -result = RestClient.post '/check', - params: {}, headers: headers - -p JSON.parse(result) -``` - - - - - - -### Expand a Relation Tuple - -``` -GET /expand?namespace=string&object=string&relation=string HTTP/1.1 -Accept: application/json - -``` - -Use this endpoint to expand a relation tuple. - - - -#### Parameters - -| Parameter | In | Type | Required | Description | -| --------- | ----- | -------------- | -------- | ------------------------------- | -| namespace | query | string | true | Namespace of the Relation Tuple | -| object | query | string | true | Object of the Relation Tuple | -| relation | query | string | true | Relation of the Relation Tuple | -| max-depth | query | integer(int64) | false | none | - -#### Responses - - - -##### Overview - -| Status | Meaning | Description | Schema | -| ------ | -------------------------------------------------------------------------- | ------------------------- | ------------------------------- | -| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | expandTree | [expandTree](#schemaexpandtree) | -| 400 | [Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1) | The standard error format | Inline | -| 404 | [Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4) | The standard error format | Inline | -| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | The standard error format | Inline | - - - -##### Response Schema - -Status Code **400** - -| Name | Type | Required | Restrictions | Description | -| --------- | -------------- | -------- | ------------ | ----------- | -| » code | integer(int64) | false | none | none | -| » details | [object] | false | none | none | -| » message | string | false | none | none | -| » reason | string | false | none | none | -| » request | string | false | none | none | -| » status | string | false | none | none | - -Status Code **404** - -| Name | Type | Required | Restrictions | Description | -| --------- | -------------- | -------- | ------------ | ----------- | -| » code | integer(int64) | false | none | none | -| » details | [object] | false | none | none | -| » message | string | false | none | none | -| » reason | string | false | none | none | -| » request | string | false | none | none | -| » status | string | false | none | none | - -Status Code **500** - -| Name | Type | Required | Restrictions | Description | -| --------- | -------------- | -------- | ------------ | ----------- | -| » code | integer(int64) | false | none | none | -| » details | [object] | false | none | none | -| » message | string | false | none | none | -| » reason | string | false | none | none | -| » request | string | false | none | none | -| » status | string | false | none | none | - -##### Examples - -###### 200 response - -```json -{ - "children": [ - { - "children": [], - "subject": "string", - "type": "union" - } - ], - "subject": "string", - "type": "union" -} -``` - - - -#### Code samples - - - - -```shell -curl -X GET /expand?namespace=string&object=string&relation=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", "/expand", bytes.NewBuffer(body)) - req.Header = headers - - client := &http.Client{} - resp, err := client.Do(req) - // ... -} -``` - - - - -```javascript -const fetch = require('node-fetch') - -const headers = { - Accept: 'application/json' -} - -fetch('/expand?namespace=string&object=string&relation=string', { - method: 'GET', - headers -}) - .then((r) => r.json()) - .then((body) => { - console.log(body) - }) -``` - - - - -```java -// This sample needs improvement. -URL obj = new URL("/expand?namespace=string&object=string&relation=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( - '/expand', - params={ - 'namespace': 'string', - 'object': 'string', - 'relation': 'string'}, - headers = headers) - -print r.json() -``` - - - - -```ruby -require 'rest-client' -require 'json' - -headers = { - 'Accept' => 'application/json' -} - -result = RestClient.get '/expand', - params: { - 'namespace' => 'string', - 'object' => 'string', - 'relation' => 'string'}, headers: headers - -p JSON.parse(result) -``` - - - - - - -### Query relation tuples - -``` -GET /relation-tuples?namespace=string HTTP/1.1 -Accept: application/json - -``` - -Get all relation tuples that match the query. Only the namespace field is -required. - - - -#### Parameters - -| Parameter | In | Type | Required | Description | -| ---------- | ----- | -------------- | -------- | ----------- | -| namespace | query | string | true | none | -| object | query | string | false | none | -| relation | query | string | false | none | -| subject | query | string | false | none | -| page_token | query | string | false | none | -| page_size | query | integer(int64) | false | none | - -#### Responses - - - -##### Overview - -| Status | Meaning | Description | Schema | -| ------ | -------------------------------------------------------------------------- | ------------------------- | ------------------------------------------------------------- | -| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | getRelationTuplesResponse | [getRelationTuplesResponse](#schemagetrelationtuplesresponse) | -| 404 | [Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4) | The standard error format | Inline | -| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | The standard error format | Inline | - - - -##### Response Schema - -Status Code **404** - -| Name | Type | Required | Restrictions | Description | -| --------- | -------------- | -------- | ------------ | ----------- | -| » code | integer(int64) | false | none | none | -| » details | [object] | false | none | none | -| » message | string | false | none | none | -| » reason | string | false | none | none | -| » request | string | false | none | none | -| » status | string | false | none | none | - -Status Code **500** - -| Name | Type | Required | Restrictions | Description | -| --------- | -------------- | -------- | ------------ | ----------- | -| » code | integer(int64) | false | none | none | -| » details | [object] | false | none | none | -| » message | string | false | none | none | -| » reason | string | false | none | none | -| » request | string | false | none | none | -| » status | string | false | none | none | - -##### Examples - -###### 200 response - -```json -{ - "next_page_token": "string", - "relation_tuples": [ - { - "namespace": "string", - "object": "string", - "relation": "string", - "subject": "string" - } - ] -} -``` - - - -#### Code samples - - - - -```shell -curl -X GET /relation-tuples?namespace=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", "/relation-tuples", bytes.NewBuffer(body)) - req.Header = headers - - client := &http.Client{} - resp, err := client.Do(req) - // ... -} -``` - - - - -```javascript -const fetch = require('node-fetch') - -const headers = { - Accept: 'application/json' -} - -fetch('/relation-tuples?namespace=string', { - method: 'GET', - headers -}) - .then((r) => r.json()) - .then((body) => { - console.log(body) - }) -``` - - - - -```java -// This sample needs improvement. -URL obj = new URL("/relation-tuples?namespace=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( - '/relation-tuples', - params={ - 'namespace': 'string'}, - headers = headers) - -print r.json() -``` - - - - -```ruby -require 'rest-client' -require 'json' - -headers = { - 'Accept' => 'application/json' -} - -result = RestClient.get '/relation-tuples', - params: { - 'namespace' => 'string'}, headers: headers - -p JSON.parse(result) -``` - - - - - - -## 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) | The standard error format | Inline | - - - -##### Response Schema - -Status Code **500** - -| Name | Type | Required | Restrictions | Description | -| --------- | -------------- | -------- | ------------ | ----------- | -| » code | integer(int64) | false | none | none | -| » details | [object] | false | none | none | -| » message | string | false | none | none | -| » reason | string | false | none | none | -| » request | string | false | none | none | -| » status | string | false | none | none | - -##### 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) - // ... -} -``` - - - - -```javascript -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) - // ... -} -``` - - - - -```javascript -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) -``` - - - - - - -## write - - - -### Create a Relation Tuple - -``` -PUT /relation-tuples HTTP/1.1 -Content-Type: application/json -Accept: application/json - -``` - -Use this endpoint to create a relation tuple. - -#### Request body - -```json -{ - "namespace": "string", - "object": "string", - "relation": "string", - "subject": "string" -} -``` - - - -#### Parameters - -| Parameter | In | Type | Required | Description | -| --------- | ---- | ----------------------------------------------------- | -------- | ----------- | -| body | body | [InternalRelationTuple](#schemainternalrelationtuple) | false | none | - -#### Responses - - - -##### Overview - -| Status | Meaning | Description | Schema | -| ------ | -------------------------------------------------------------------------- | ------------------------- | ----------------------------------------------------- | -| 201 | [Created](https://tools.ietf.org/html/rfc7231#section-6.3.2) | InternalRelationTuple | [InternalRelationTuple](#schemainternalrelationtuple) | -| 400 | [Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1) | The standard error format | Inline | -| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | The standard error format | Inline | - - - -##### Response Schema - -Status Code **400** - -| Name | Type | Required | Restrictions | Description | -| --------- | -------------- | -------- | ------------ | ----------- | -| » code | integer(int64) | false | none | none | -| » details | [object] | false | none | none | -| » message | string | false | none | none | -| » reason | string | false | none | none | -| » request | string | false | none | none | -| » status | string | false | none | none | - -Status Code **500** - -| Name | Type | Required | Restrictions | Description | -| --------- | -------------- | -------- | ------------ | ----------- | -| » code | integer(int64) | false | none | none | -| » details | [object] | false | none | none | -| » message | string | false | none | none | -| » reason | string | false | none | none | -| » request | string | false | none | none | -| » status | string | false | none | none | - -##### Examples - -###### 201 response - -```json -{ - "namespace": "string", - "object": "string", - "relation": "string", - "subject": "string" -} -``` - - - -#### Code samples - - - - -```shell -curl -X PUT /relation-tuples \ - -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", "/relation-tuples", bytes.NewBuffer(body)) - req.Header = headers - - client := &http.Client{} - resp, err := client.Do(req) - // ... -} -``` - - - - -```javascript -const fetch = require('node-fetch'); -const input = '{ - "namespace": "string", - "object": "string", - "relation": "string", - "subject": "string" -}'; -const headers = { - 'Content-Type': 'application/json', 'Accept': 'application/json' -} - -fetch('/relation-tuples', { - method: 'PUT', - body: input, - headers -}) -.then(r => r.json()) -.then((body) => { - console.log(body) -}) -``` - - - - -```java -// This sample needs improvement. -URL obj = new URL("/relation-tuples"); - -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( - '/relation-tuples', - params={}, - headers = headers) - -print r.json() -``` - - - - -```ruby -require 'rest-client' -require 'json' - -headers = { - 'Content-Type' => 'application/json', - 'Accept' => 'application/json' -} - -result = RestClient.put '/relation-tuples', - params: {}, headers: headers - -p JSON.parse(result) -``` - - - - - - -### Delete a Relation Tuple - -``` -DELETE /relation-tuples?namespace=string&object=string&relation=string HTTP/1.1 -Accept: application/json - -``` - -Use this endpoint to delete a relation tuple. - - - -#### Parameters - -| Parameter | In | Type | Required | Description | -| --------- | ----- | ------ | -------- | ------------------------------- | -| namespace | query | string | true | Namespace of the Relation Tuple | -| object | query | string | true | Object of the Relation Tuple | -| relation | query | string | true | Relation of the Relation Tuple | -| subject | query | string | false | Subject of the Relation Tuple | - -##### Detailed descriptions - -**subject**: Subject of the Relation Tuple - -The subject follows the subject string encoding format. - -#### 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 | -| 400 | [Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1) | The standard error format | Inline | -| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | The standard error format | Inline | - - - -##### Response Schema - -Status Code **400** - -| Name | Type | Required | Restrictions | Description | -| --------- | -------------- | -------- | ------------ | ----------- | -| » code | integer(int64) | false | none | none | -| » details | [object] | false | none | none | -| » message | string | false | none | none | -| » reason | string | false | none | none | -| » request | string | false | none | none | -| » status | string | false | none | none | - -Status Code **500** - -| Name | Type | Required | Restrictions | Description | -| --------- | -------------- | -------- | ------------ | ----------- | -| » code | integer(int64) | false | none | none | -| » details | [object] | false | none | none | -| » message | string | false | none | none | -| » reason | string | false | none | none | -| » request | string | false | none | none | -| » status | string | false | none | none | - -##### Examples - -###### 400 response - -```json -{ - "code": 0, - "details": [{}], - "message": "string", - "reason": "string", - "request": "string", - "status": "string" -} -``` - - - -#### Code samples - - - - -```shell -curl -X DELETE /relation-tuples?namespace=string&object=string&relation=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("DELETE", "/relation-tuples", bytes.NewBuffer(body)) - req.Header = headers - - client := &http.Client{} - resp, err := client.Do(req) - // ... -} -``` - - - - -```javascript -const fetch = require('node-fetch') - -const headers = { - Accept: 'application/json' -} - -fetch('/relation-tuples?namespace=string&object=string&relation=string', { - method: 'DELETE', - headers -}) - .then((r) => r.json()) - .then((body) => { - console.log(body) - }) -``` - - - - -```java -// This sample needs improvement. -URL obj = new URL("/relation-tuples?namespace=string&object=string&relation=string"); - -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( - '/relation-tuples', - params={ - 'namespace': 'string', - 'object': 'string', - 'relation': 'string'}, - headers = headers) - -print r.json() -``` - - - - -```ruby -require 'rest-client' -require 'json' - -headers = { - 'Accept' => 'application/json' -} - -result = RestClient.delete '/relation-tuples', - params: { - 'namespace' => 'string', - 'object' => 'string', - 'relation' => 'string'}, headers: headers - -p JSON.parse(result) -``` - - - - - - -### Patch Multiple Relation Tuples - -``` -PATCH /relation-tuples HTTP/1.1 -Content-Type: application/json -Accept: application/json - -``` - -Use this endpoint to patch one or more relation tuples. - -#### Request body - -```json -[ - { - "action": "string", - "relation_tuple": { - "namespace": "string", - "object": "string", - "relation": "string", - "subject": "string" - } - } -] -``` - - - -#### Parameters - -| Parameter | In | Type | Required | Description | -| --------- | ---- | ------------------------------- | -------- | ----------- | -| body | body | [PatchDelta](#schemapatchdelta) | false | none | - -#### 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 | -| 400 | [Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1) | The standard error format | Inline | -| 404 | [Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4) | The standard error format | Inline | -| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | The standard error format | Inline | - - - -##### Response Schema - -Status Code **400** - -| Name | Type | Required | Restrictions | Description | -| --------- | -------------- | -------- | ------------ | ----------- | -| » code | integer(int64) | false | none | none | -| » details | [object] | false | none | none | -| » message | string | false | none | none | -| » reason | string | false | none | none | -| » request | string | false | none | none | -| » status | string | false | none | none | - -Status Code **404** - -| Name | Type | Required | Restrictions | Description | -| --------- | -------------- | -------- | ------------ | ----------- | -| » code | integer(int64) | false | none | none | -| » details | [object] | false | none | none | -| » message | string | false | none | none | -| » reason | string | false | none | none | -| » request | string | false | none | none | -| » status | string | false | none | none | - -Status Code **500** - -| Name | Type | Required | Restrictions | Description | -| --------- | -------------- | -------- | ------------ | ----------- | -| » code | integer(int64) | false | none | none | -| » details | [object] | false | none | none | -| » message | string | false | none | none | -| » reason | string | false | none | none | -| » request | string | false | none | none | -| » status | string | false | none | none | - -##### Examples - -###### 400 response - -```json -{ - "code": 0, - "details": [{}], - "message": "string", - "reason": "string", - "request": "string", - "status": "string" -} -``` - - - -#### Code samples - - - - -```shell -curl -X PATCH /relation-tuples \ - -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("PATCH", "/relation-tuples", bytes.NewBuffer(body)) - req.Header = headers - - client := &http.Client{} - resp, err := client.Do(req) - // ... -} -``` - - - - -```javascript -const fetch = require('node-fetch'); -const input = '[ - { - "action": "string", - "relation_tuple": { - "namespace": "string", - "object": "string", - "relation": "string", - "subject": "string" - } - } -]'; -const headers = { - 'Content-Type': 'application/json', 'Accept': 'application/json' -} - -fetch('/relation-tuples', { - method: 'PATCH', - body: input, - headers -}) -.then(r => r.json()) -.then((body) => { - console.log(body) -}) -``` - - - - -```java -// This sample needs improvement. -URL obj = new URL("/relation-tuples"); - -HttpURLConnection con = (HttpURLConnection) obj.openConnection(); -con.setRequestMethod("PATCH"); - -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.patch( - '/relation-tuples', - params={}, - headers = headers) - -print r.json() -``` - - - - -```ruby -require 'rest-client' -require 'json' - -headers = { - 'Content-Type' => 'application/json', - 'Accept' => 'application/json' -} - -result = RestClient.patch '/relation-tuples', - 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) - // ... -} -``` - - - - -```javascript -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 - - - -#### InternalRelationTuple - - - -```json -{ - "namespace": "string", - "object": "string", - "relation": "string", - "subject": "string" -} -``` - -#### Properties - -| Name | Type | Required | Restrictions | Description | -| --------- | ------------------------- | -------- | ------------ | -------------------------------------------------- | -| namespace | string | true | none | Namespace of the Relation Tuple

    in: query | -| object | string | true | none | Object of the Relation Tuple

    in: query | -| relation | string | true | none | Relation of the Relation Tuple

    in: query | -| subject | [subject](#schemasubject) | true | none | none | - - - -#### PatchDelta - - - -```json -{ - "action": "string", - "relation_tuple": { - "namespace": "string", - "object": "string", - "relation": "string", - "subject": "string" - } -} -``` - -#### Properties - -| Name | Type | Required | Restrictions | Description | -| -------------- | ----------------------------------------------------- | -------- | ------------ | ----------- | -| action | [patchAction](#schemapatchaction) | false | none | none | -| relation_tuple | [InternalRelationTuple](#schemainternalrelationtuple) | false | none | none | - - - -#### expandTree - - - -```json -{ - "children": [ - { - "children": [], - "subject": "string", - "type": "union" - } - ], - "subject": "string", - "type": "union" -} -``` - -#### Properties - -| Name | Type | Required | Restrictions | Description | -| -------- | --------------------------------- | -------- | ------------ | ----------- | -| children | [[expandTree](#schemaexpandtree)] | false | none | none | -| subject | [subject](#schemasubject) | true | none | none | -| type | string | true | none | none | - -##### Enumerated Values - -| Property | Value | -| -------- | ------------ | -| type | union | -| type | exclusion | -| type | intersection | -| type | leaf | - - - -#### getCheckResponse - - - -```json -{ - "allowed": true -} -``` - -_Represents the response for a check request._ - -#### Properties - -| Name | Type | Required | Restrictions | Description | -| ------- | ------- | -------- | ------------ | ------------------------------------- | -| allowed | boolean | true | none | whether the relation tuple is allowed | - - - -#### getRelationTuplesResponse - - - -```json -{ - "next_page_token": "string", - "relation_tuples": [ - { - "namespace": "string", - "object": "string", - "relation": "string", - "subject": "string" - } - ] -} -``` - -#### Properties - -| Name | Type | Required | Restrictions | Description | -| --------------- | ------------------------------------------------------- | -------- | ------------ | ----------------------------------------------------------------------------------------------------------------------------------- | -| next_page_token | string | false | none | The opaque token to provide in a subsequent request
    to get the next page. It is the empty string iff this is
    the last page. | -| relation_tuples | [[InternalRelationTuple](#schemainternalrelationtuple)] | false | none | none | - - - -#### 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 - - - -```json -{ - "status": "string" -} -``` - -#### Properties - -| Name | Type | Required | Restrictions | Description | -| ------ | ------ | -------- | ------------ | ---------------------------- | -| status | string | false | none | Status always contains "ok". | - - - -#### patchAction - - - -```json -"string" -``` - -#### Properties - -| Name | Type | Required | Restrictions | Description | -| ----------- | ------ | -------- | ------------ | ----------- | -| _anonymous_ | string | false | none | none | - - - -#### subject - - - -```json -"string" -``` - -#### Properties - -| Name | Type | Required | Restrictions | Description | -| ----------- | ------ | -------- | ------------ | ----------- | -| _anonymous_ | string | false | none | none | - - - -#### version - - - -```json -{ - "version": "string" -} -``` - -#### Properties - -| Name | Type | Required | Restrictions | Description | -| ------- | ------ | -------- | ------------ | --------------------------------- | -| version | string | false | none | Version is the service's version. | diff --git a/docs/versioned_docs/version-v0.6/reference/configuration.md b/docs/versioned_docs/version-v0.6/reference/configuration.md deleted file mode 100644 index 7966523b9..000000000 --- a/docs/versioned_docs/version-v0.6/reference/configuration.md +++ /dev/null @@ -1,698 +0,0 @@ ---- -id: configuration -title: Configuration ---- - - - -If file `$HOME/.keto.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: -`keto --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. - -This reference configuration documents all keys, also deprecated ones! It is a -reference for all possible configuration values. - -If you are looking for an example configuration, it is better to try out the -quickstart. - -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 Keto Configuration -# - -## serve ## -# -serve: - ## Write API (http and gRPC) ## - # - write: - ## Host ## - # - # The network interface to listen on. - # - # Examples: - # - localhost - # - 127.0.0.1 - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_WRITE_HOST= - # - Windows Command Line (CMD): - # > set SERVE_WRITE_HOST= - # - host: localhost - - ## Cross Origin Resource Sharing (CORS) ## - # - # Configure [Cross Origin Resource Sharing (CORS)](http://www.w3.org/TR/cors/) using the following options. - # - cors: - ## Allowed Origins ## - # - # A list of origins a cross-domain request can be executed from. If the special * value is present in the list, all origins will be allowed. An origin may contain a wildcard (*) to replace 0 or more characters (i.e.: http://*.domain.com). Usage of wildcards implies a small performance penality. Only one wildcard can be used per origin. - # - # Default value: * - # - # Examples: - # - - https://example.com - # - https://*.example.com - # - https://*.foo.example.com - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_WRITE_CORS_ALLOWED_ORIGINS= - # - Windows Command Line (CMD): - # > set SERVE_WRITE_CORS_ALLOWED_ORIGINS= - # - allowed_origins: - - https://example.com - - https://*.example.com - - https://*.foo.example.com - - ## Allowed HTTP Methods ## - # - # A list of methods the client is allowed to use with cross-domain requests. - # - # Default value: GET,POST,PUT,PATCH,DELETE - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_WRITE_CORS_ALLOWED_METHODS= - # - Windows Command Line (CMD): - # > set SERVE_WRITE_CORS_ALLOWED_METHODS= - # - allowed_methods: - - GET - - ## Allowed Request HTTP Headers ## - # - # A list of non simple headers the client is allowed to use with cross-domain requests. - # - # Default value: Authorization,Content-Type - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_WRITE_CORS_ALLOWED_HEADERS= - # - Windows Command Line (CMD): - # > set SERVE_WRITE_CORS_ALLOWED_HEADERS= - # - allowed_headers: - - '' - - ## Allowed Response HTTP Headers ## - # - # Indicates which headers are safe to expose to the API of a CORS API specification - # - # Default value: Content-Type - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_WRITE_CORS_EXPOSED_HEADERS= - # - Windows Command Line (CMD): - # > set SERVE_WRITE_CORS_EXPOSED_HEADERS= - # - exposed_headers: - - '' - - ## Allow HTTP Credentials ## - # - # Indicates whether the request can include user credentials like cookies, HTTP authentication or client side SSL certificates. - # - # Default value: false - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_WRITE_CORS_ALLOW_CREDENTIALS= - # - Windows Command Line (CMD): - # > set SERVE_WRITE_CORS_ALLOW_CREDENTIALS= - # - allow_credentials: false - - ## Maximum Age ## - # - # Indicates how long (in seconds) the results of a preflight request can be cached. The default is 0 which stands for no max age. - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_WRITE_CORS_MAX_AGE= - # - Windows Command Line (CMD): - # > set SERVE_WRITE_CORS_MAX_AGE= - # - max_age: -100000000 - - ## Enable Debugging ## - # - # Set to true to debug server side CORS issues. - # - # Default value: false - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_WRITE_CORS_DEBUG= - # - Windows Command Line (CMD): - # > set SERVE_WRITE_CORS_DEBUG= - # - debug: false - - ## Enable CORS ## - # - # If set to true, CORS will be enabled and preflight-requests (OPTION) will be answered. - # - # Default value: false - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_WRITE_CORS_ENABLED= - # - Windows Command Line (CMD): - # > set SERVE_WRITE_CORS_ENABLED= - # - enabled: false - - ## HTTPS ## - # - # Configure HTTP over TLS (HTTPS). All options can also be set using environment variables by replacing dots (`.`) with underscores (`_`) and uppercasing the key. For example, `some.prefix.tls.key.path` becomes `export SOME_PREFIX_TLS_KEY_PATH`. If all keys are left undefined, TLS will be disabled. - # - tls: - ## TLS Certificate (PEM) ## - # - cert: - ## base64 ## - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_WRITE_TLS_CERT_BASE64= - # - Windows Command Line (CMD): - # > set SERVE_WRITE_TLS_CERT_BASE64= - # - base64: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tXG5NSUlEWlRDQ0FrMmdBd0lCQWdJRVY1eE90REFOQmdr... - - ## path ## - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_WRITE_TLS_CERT_PATH= - # - Windows Command Line (CMD): - # > set SERVE_WRITE_TLS_CERT_PATH= - # - path: path/to/file.pem - - ## Private Key (PEM) ## - # - key: - ## base64 ## - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_WRITE_TLS_KEY_BASE64= - # - Windows Command Line (CMD): - # > set SERVE_WRITE_TLS_KEY_BASE64= - # - base64: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tXG5NSUlEWlRDQ0FrMmdBd0lCQWdJRVY1eE90REFOQmdr... - - ## path ## - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_WRITE_TLS_KEY_PATH= - # - Windows Command Line (CMD): - # > set SERVE_WRITE_TLS_KEY_PATH= - # - path: path/to/file.pem - - ## Port ## - # - # The port to listen on. - # - # Default value: 4467 - # - # Minimum value: 1 - # - # Maximum value: 65535 - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_WRITE_PORT= - # - Windows Command Line (CMD): - # > set SERVE_WRITE_PORT= - # - port: 1 - - ## Read API (http and gRPC) ## - # - read: - ## Host ## - # - # The network interface to listen on. - # - # Examples: - # - localhost - # - 127.0.0.1 - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_READ_HOST= - # - Windows Command Line (CMD): - # > set SERVE_READ_HOST= - # - host: localhost - - ## Cross Origin Resource Sharing (CORS) ## - # - # Configure [Cross Origin Resource Sharing (CORS)](http://www.w3.org/TR/cors/) using the following options. - # - cors: - ## Allowed Origins ## - # - # A list of origins a cross-domain request can be executed from. If the special * value is present in the list, all origins will be allowed. An origin may contain a wildcard (*) to replace 0 or more characters (i.e.: http://*.domain.com). Usage of wildcards implies a small performance penality. Only one wildcard can be used per origin. - # - # Default value: * - # - # Examples: - # - - https://example.com - # - https://*.example.com - # - https://*.foo.example.com - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_READ_CORS_ALLOWED_ORIGINS= - # - Windows Command Line (CMD): - # > set SERVE_READ_CORS_ALLOWED_ORIGINS= - # - allowed_origins: - - https://example.com - - https://*.example.com - - https://*.foo.example.com - - ## Allowed HTTP Methods ## - # - # A list of methods the client is allowed to use with cross-domain requests. - # - # Default value: GET,POST,PUT,PATCH,DELETE - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_READ_CORS_ALLOWED_METHODS= - # - Windows Command Line (CMD): - # > set SERVE_READ_CORS_ALLOWED_METHODS= - # - allowed_methods: - - GET - - ## Allowed Request HTTP Headers ## - # - # A list of non simple headers the client is allowed to use with cross-domain requests. - # - # Default value: Authorization,Content-Type - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_READ_CORS_ALLOWED_HEADERS= - # - Windows Command Line (CMD): - # > set SERVE_READ_CORS_ALLOWED_HEADERS= - # - allowed_headers: - - '' - - ## Allowed Response HTTP Headers ## - # - # Indicates which headers are safe to expose to the API of a CORS API specification - # - # Default value: Content-Type - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_READ_CORS_EXPOSED_HEADERS= - # - Windows Command Line (CMD): - # > set SERVE_READ_CORS_EXPOSED_HEADERS= - # - exposed_headers: - - '' - - ## Allow HTTP Credentials ## - # - # Indicates whether the request can include user credentials like cookies, HTTP authentication or client side SSL certificates. - # - # Default value: false - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_READ_CORS_ALLOW_CREDENTIALS= - # - Windows Command Line (CMD): - # > set SERVE_READ_CORS_ALLOW_CREDENTIALS= - # - allow_credentials: false - - ## Maximum Age ## - # - # Indicates how long (in seconds) the results of a preflight request can be cached. The default is 0 which stands for no max age. - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_READ_CORS_MAX_AGE= - # - Windows Command Line (CMD): - # > set SERVE_READ_CORS_MAX_AGE= - # - max_age: -100000000 - - ## Enable Debugging ## - # - # Set to true to debug server side CORS issues. - # - # Default value: false - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_READ_CORS_DEBUG= - # - Windows Command Line (CMD): - # > set SERVE_READ_CORS_DEBUG= - # - debug: false - - ## Enable CORS ## - # - # If set to true, CORS will be enabled and preflight-requests (OPTION) will be answered. - # - # Default value: false - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_READ_CORS_ENABLED= - # - Windows Command Line (CMD): - # > set SERVE_READ_CORS_ENABLED= - # - enabled: false - - ## HTTPS ## - # - # Configure HTTP over TLS (HTTPS). All options can also be set using environment variables by replacing dots (`.`) with underscores (`_`) and uppercasing the key. For example, `some.prefix.tls.key.path` becomes `export SOME_PREFIX_TLS_KEY_PATH`. If all keys are left undefined, TLS will be disabled. - # - tls: - ## TLS Certificate (PEM) ## - # - cert: - ## base64 ## - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_READ_TLS_CERT_BASE64= - # - Windows Command Line (CMD): - # > set SERVE_READ_TLS_CERT_BASE64= - # - base64: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tXG5NSUlEWlRDQ0FrMmdBd0lCQWdJRVY1eE90REFOQmdr... - - ## path ## - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_READ_TLS_CERT_PATH= - # - Windows Command Line (CMD): - # > set SERVE_READ_TLS_CERT_PATH= - # - path: path/to/file.pem - - ## Private Key (PEM) ## - # - key: - ## base64 ## - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_READ_TLS_KEY_BASE64= - # - Windows Command Line (CMD): - # > set SERVE_READ_TLS_KEY_BASE64= - # - base64: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tXG5NSUlEWlRDQ0FrMmdBd0lCQWdJRVY1eE90REFOQmdr... - - ## path ## - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_READ_TLS_KEY_PATH= - # - Windows Command Line (CMD): - # > set SERVE_READ_TLS_KEY_PATH= - # - path: path/to/file.pem - - ## Port ## - # - # The port to listen on. - # - # Default value: 4466 - # - # Minimum value: 1 - # - # Maximum value: 65535 - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_READ_PORT= - # - Windows Command Line (CMD): - # > set SERVE_READ_PORT= - # - port: 1 - -## Profiling ## -# -# Enables CPU or memory profiling if set. For more details on profiling Go programs read [Profiling Go Programs](https://blog.golang.org/profiling-go-programs). -# -# One of: -# - cpu -# - mem -# - "" -# -# Set this value using environment variables on -# - Linux/macOS: -# $ export PROFILING= -# - Windows Command Line (CMD): -# > set PROFILING= -# -profiling: cpu - -## Log ## -# -# Configure logging using the following options. Logging will always be sent to stdout and stderr. -# -log: - ## Format ## - # - # The log format can either be text or JSON. - # - # Default value: text - # - # One of: - # - text - # - json - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export LOG_FORMAT= - # - Windows Command Line (CMD): - # > set LOG_FORMAT= - # - format: text - - ## Leak Sensitive Log Values ## - # - # If set will leak sensitive values (e.g. emails) in the logs. - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export LOG_LEAK_SENSITIVE_VALUES= - # - Windows Command Line (CMD): - # > set LOG_LEAK_SENSITIVE_VALUES= - # - leak_sensitive_values: false - - ## Level ## - # - # Debug enables stack traces on errors. Can also be set using environment variable LOG_LEVEL. - # - # Default value: info - # - # One of: - # - panic - # - fatal - # - error - # - warn - # - info - # - debug - # - trace - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export LOG_LEVEL= - # - Windows Command Line (CMD): - # > set LOG_LEVEL= - # - level: panic - -## tracing ## -# -# ORY Hydra supports distributed tracing. -# -tracing: - ## service_name ## - # - # Specifies the service name to use on the tracer. - # - # Examples: - # - ORY Hydra - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export TRACING_SERVICE_NAME= - # - Windows Command Line (CMD): - # > set TRACING_SERVICE_NAME= - # - service_name: ORY Hydra - - ## providers ## - # - providers: - ## jaeger ## - # - # Configures the jaeger tracing backend. - # - jaeger: - ## propagation ## - # - # The tracing header format - # - # Examples: - # - jaeger - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export TRACING_PROVIDERS_JAEGER_PROPAGATION= - # - Windows Command Line (CMD): - # > set TRACING_PROVIDERS_JAEGER_PROPAGATION= - # - propagation: jaeger - - ## sampling ## - # - # Examples: - # - type: const - # value: 1 - # server_url: http://localhost:5778/sampling - # - sampling: - ## type ## - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export TRACING_PROVIDERS_JAEGER_SAMPLING_TYPE= - # - Windows Command Line (CMD): - # > set TRACING_PROVIDERS_JAEGER_SAMPLING_TYPE= - # - type: const - - ## value ## - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export TRACING_PROVIDERS_JAEGER_SAMPLING_VALUE= - # - Windows Command Line (CMD): - # > set TRACING_PROVIDERS_JAEGER_SAMPLING_VALUE= - # - value: 1 - - ## server_url ## - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export TRACING_PROVIDERS_JAEGER_SAMPLING_SERVER_URL= - # - Windows Command Line (CMD): - # > set TRACING_PROVIDERS_JAEGER_SAMPLING_SERVER_URL= - # - server_url: http://localhost:5778/sampling - - ## local_agent_address ## - # - # The address of the jaeger-agent where spans should be sent to. - # - # Examples: - # - 127.0.0.1:6831 - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export TRACING_PROVIDERS_JAEGER_LOCAL_AGENT_ADDRESS= - # - Windows Command Line (CMD): - # > set TRACING_PROVIDERS_JAEGER_LOCAL_AGENT_ADDRESS= - # - local_agent_address: 127.0.0.1:6831 - - ## provider ## - # - # Set this to the tracing backend you wish to use. Currently supports jaeger. If omitted or empty, tracing will be disabled. - # - # One of: - # - jaeger - # - # Examples: - # - jaeger - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export TRACING_PROVIDER= - # - Windows Command Line (CMD): - # > set TRACING_PROVIDER= - # - provider: jaeger - -## namespaces ## -# -# Namespace configuration or it's location. -# -# Default value: file://./keto_namespaces -# -# Set this value using environment variables on -# - Linux/macOS: -# $ export NAMESPACES= -# - Windows Command Line (CMD): -# > set NAMESPACES= -# -namespaces: http://a.aaa - -## The Keto version this config is written for. ## -# -# SemVer according to https://semver.org/ prefixed with `v` as in our releases. -# -# Set this value using environment variables on -# - Linux/macOS: -# $ export VERSION= -# - Windows Command Line (CMD): -# > set VERSION= -# -version: v0.6.0-alpha.3 - -## Data Source Name ## -# -# Sets the data source name. This configures the backend where ORY Keto persists data. If dsn is "memory", data will be written to memory and is lost when you restart this instance. ORY Hydra supports popular SQL databases. For more detailed configuration information go to: https://www.ory.sh/docs/hydra/dependencies-environment#sql -# -# Examples: -# - postgres://user:password@host:123/database -# - mysql://user:password@tcp(host:123)/database -# - memory -# -# Set this value using environment variables on -# - Linux/macOS: -# $ export DSN= -# - Windows Command Line (CMD): -# > set DSN= -# -dsn: postgres://user:password@host:123/database -``` diff --git a/docs/versioned_docs/version-v0.6/reference/proto-api.mdx b/docs/versioned_docs/version-v0.6/reference/proto-api.mdx deleted file mode 100644 index 756295f7a..000000000 --- a/docs/versioned_docs/version-v0.6/reference/proto-api.mdx +++ /dev/null @@ -1,275 +0,0 @@ ---- -title: Protocol Buffers API ---- - - - -The API is divided into the [read APIs](../concepts/api-overview.mdx#read-apis) -and [write APIs](../concepts/api-overview.mdx#write-apis). Each service is -annotated with the API it belongs to. - -## ory/keto/acl/v1alpha1/acl.proto - -### RelationTuple - -RelationTuple defines a relation between an Object and a Subject. - -| Field | Type | Label | Description | -| --------- | ----------------------------------------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------- | -| namespace | [string](#string) | | The namespace this relation tuple lives in. | -| object | [string](#string) | | The object related by this tuple. It is an object in the namespace of the tuple. | -| relation | [string](#string) | | The relation between an Object and a Subject. | -| subject | [Subject](#ory.keto.acl.v1alpha1.Subject) | | The subject related by this tuple. A Subject either represents a concrete subject id or a `SubjectSet` that expands to more Subjects. | - -### Subject - -Subject is either a concrete subject id or a `SubjectSet` expanding to more -Subjects. - -| Field | Type | Label | Description | -| ----- | ----------------------------------------------- | ----- | ----------------------------------------------------------------------------------------------------------------------- | -| id | [string](#string) | | A concrete id of the subject. | -| set | [SubjectSet](#ory.keto.acl.v1alpha1.SubjectSet) | | A subject set that expands to more Subjects. More information are available under [concepts](../concepts/subjects.mdx). | - -### SubjectSet - -SubjectSet refers to all subjects who have the same `relation` on an `object`. - -| Field | Type | Label | Description | -| --------- | ----------------- | ----- | ------------------------------------------------------------------------ | -| namespace | [string](#string) | | The namespace of the object and relation referenced in this subject set. | -| object | [string](#string) | | The object related by this subject set. | -| relation | [string](#string) | | The relation between the object and the subjects. | - -## ory/keto/acl/v1alpha1/check_service.proto - -### CheckService - -The service that performs authorization checks based on the stored Access -Control Lists. - -This service is part of the [read-APIs](../concepts/api-overview.mdx#read-apis). - -| Method Name | Request Type | Response Type | Description | -| ----------- | --------------------------------------------------- | ----------------------------------------------------- | -------------------------------- | -| Check | [CheckRequest](#ory.keto.acl.v1alpha1.CheckRequest) | [CheckResponse](#ory.keto.acl.v1alpha1.CheckResponse) | Performs an authorization check. | - -### CheckRequest - -The request for a CheckService.Check RPC. Checks whether a specific subject is -related to an object. - -| Field | Type | Label | Description | -| --------- | ----------------------------------------- | ----- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| namespace | [string](#string) | | The namespace to evaluate the check.
    Note: If you use the expand-API and the check evaluates a RelationTuple specifying a SubjectSet as subject or due to a rewrite rule in a namespace config this check request may involve other namespaces automatically. | -| object | [string](#string) | | The related object in this check. | -| relation | [string](#string) | | The relation between the Object and the Subject. | -| subject | [Subject](#ory.keto.acl.v1alpha1.Subject) | | The related subject in this check. | -| latest | [bool](#bool) | | This field is not implemented yet and has no effect. | -| snaptoken | [string](#string) | | This field is not implemented yet and has no effect. | - -### CheckResponse - -The response for a CheckService.Check rpc. - -| Field | Type | Label | Description | -| --------- | ----------------- | ----- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| allowed | [bool](#bool) | | Whether the specified subject (id) is related to the requested object.
    It is false by default if no ACL matches. | -| snaptoken | [string](#string) | | This field is not implemented yet and has no effect. | - -## ory/keto/acl/v1alpha1/expand_service.proto - -### ExpandService - -The service that performs subject set expansion based on the stored Access -Control Lists. - -This service is part of the [read-APIs](../concepts/api-overview.mdx#read-apis). - -| Method Name | Request Type | Response Type | Description | -| ----------- | ----------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------ | -| Expand | [ExpandRequest](#ory.keto.acl.v1alpha1.ExpandRequest) | [ExpandResponse](#ory.keto.acl.v1alpha1.ExpandResponse) | Expands the subject set into a tree of subjects. | - -### ExpandRequest - -The request for an ExpandService.Expand RPC. Expands the given subject set. - -| Field | Type | Label | Description | -| --------- | ----------------------------------------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| subject | [Subject](#ory.keto.acl.v1alpha1.Subject) | | The subject to expand. | -| max_depth | [int32](#int32) | | The maximum depth of tree to build. It is important to set this parameter to a meaningful value. Ponder how deep you really want to display this. | -| snaptoken | [string](#string) | | This field is not implemented yet and has no effect. | - -### ExpandResponse - -The response for a ExpandService.Expand RPC. - -| Field | Type | Label | Description | -| ----- | ------------------------------------------------- | ----- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | -| tree | [SubjectTree](#ory.keto.acl.v1alpha1.SubjectTree) | | The tree the requested subject set expands to. The requested subject set is the subject of the root.
    This field can be nil in some circumstances. | - -### SubjectTree - -| Field | Type | Label | Description | -| --------- | ------------------------------------------------- | -------- | ------------------------------------------------------------------------------------ | -| node_type | [NodeType](#ory.keto.acl.v1alpha1.NodeType) | | The type of the node. | -| subject | [Subject](#ory.keto.acl.v1alpha1.Subject) | | The subject this node represents. | -| children | [SubjectTree](#ory.keto.acl.v1alpha1.SubjectTree) | repeated | The children of this node.
    This is never set if `node_type` == `NODE_TYPE_LEAF`. | - -### NodeType - -| Name | Number | Description | -| ---------------------- | ------ | ---------------------------------------------------------------------------------------------------------- | -| NODE_TYPE_UNSPECIFIED | 0 | | -| NODE_TYPE_UNION | 1 | This node expands to a union of all children. | -| NODE_TYPE_EXCLUSION | 2 | Not implemented yet. | -| NODE_TYPE_INTERSECTION | 3 | Not implemented yet. | -| NODE_TYPE_LEAF | 4 | This node is a leaf and contains no children. Its subject is a `SubjectID` unless `max_depth` was reached. | - -## ory/keto/acl/v1alpha1/read_service.proto - -### ReadService - -The service to query relation tuples. - -This service is part of the [read-APIs](../concepts/api-overview.mdx#read-apis). - -| Method Name | Request Type | Response Type | Description | -| ------------------ | ----------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | -------------------------- | -| ListRelationTuples | [ListRelationTuplesRequest](#ory.keto.acl.v1alpha1.ListRelationTuplesRequest) | [ListRelationTuplesResponse](#ory.keto.acl.v1alpha1.ListRelationTuplesResponse) | Lists ACL relation tuples. | - -### ListRelationTuplesRequest - -Request for ReadService.ListRelationTuples RPC. See -`ListRelationTuplesRequest_Query` for how to filter the query. - -| Field | Type | Label | Description | -| ----------- | ----------------------------------------------------------------------------------------- | ----- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| query | [ListRelationTuplesRequest.Query](#ory.keto.acl.v1alpha1.ListRelationTuplesRequest.Query) | | All query constraints are concatenated with a logical AND operator.
    The RelationTuple list from ListRelationTuplesResponse is ordered from the newest RelationTuple to the oldest. | -| expand_mask | [google.protobuf.FieldMask](#google.protobuf.FieldMask) | | This field is not implemented yet and has no effect. | -| snaptoken | [string](#string) | | This field is not implemented yet and has no effect. | -| page_size | [int32](#int32) | | Optional. The maximum number of RelationTuples to return in the response.
    Default: 100 | -| page_token | [string](#string) | | Optional. An opaque pagination token returned from a previous call to `ListRelationTuples` that indicates where the page should start at.
    An empty token denotes the first page. All successive pages require the token from the previous page. | - -### ListRelationTuplesRequest.Query - -The query for listing relation tuples. Clients can specify any optional field to -partially filter for specific relation tuples. - -Example use cases (namespace is always required): - -- object only: display a list of all permissions referring to a specific object -- relation only: get all groups that have members; get all directories that have - content -- object & relation: display all subjects that have a specific permission - relation -- subject & relation: display all groups a subject belongs to; display all - objects a subject has access to -- object & relation & subject: check whether the relation tuple already exists - -| Field | Type | Label | Description | -| --------- | ----------------------------------------- | ----- | ------------------------------------ | -| namespace | [string](#string) | | Required. The namespace to query. | -| object | [string](#string) | | Optional. The object to query for. | -| relation | [string](#string) | | Optional. The relation to query for. | -| subject | [Subject](#ory.keto.acl.v1alpha1.Subject) | | Optional. The subject to query for. | - -### ListRelationTuplesResponse - -The response of a ReadService.ListRelationTuples RPC. - -| Field | Type | Label | Description | -| --------------- | ----------------------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------ | -| relation_tuples | [RelationTuple](#ory.keto.acl.v1alpha1.RelationTuple) | repeated | The relation tuples matching the list request. | -| next_page_token | [string](#string) | | The token required to get the next page. If this is the last page, the token will be the empty string. | - -## ory/keto/acl/v1alpha1/version.proto - -### VersionService - -The service returning the specific Ory Keto instance version. - -This service is part of the [read-APIs](../concepts/api-overview.mdx#read-apis) -and [write-APIs](../concepts/api-overview.mdx#write-apis). - -| Method Name | Request Type | Response Type | Description | -| ----------- | ------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------- | -| GetVersion | [GetVersionRequest](#ory.keto.acl.v1alpha1.GetVersionRequest) | [GetVersionResponse](#ory.keto.acl.v1alpha1.GetVersionResponse) | Returns the version of the Ory Keto instance. | - -### GetVersionRequest - -Request for the VersionService.GetVersion RPC. - -### GetVersionResponse - -Response of the VersionService.GetVersion RPC. - -| Field | Type | Label | Description | -| ------- | ----------------- | ----- | -------------------------------------------- | -| version | [string](#string) | | The version string of the Ory Keto instance. | - -## ory/keto/acl/v1alpha1/write_service.proto - -### WriteService - -The write service to create and delete Access Control Lists. - -This service is part of the -[write-APIs](../concepts/api-overview.mdx#write-apis). - -| Method Name | Request Type | Response Type | Description | -| ---------------------- | ------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | ----------------------------------------------------------- | -| TransactRelationTuples | [TransactRelationTuplesRequest](#ory.keto.acl.v1alpha1.TransactRelationTuplesRequest) | [TransactRelationTuplesResponse](#ory.keto.acl.v1alpha1.TransactRelationTuplesResponse) | Writes one or more relation tuples in a single transaction. | - -### RelationTupleDelta - -Write-delta for a TransactRelationTuplesRequest. - -| Field | Type | Label | Description | -| -------------- | ----------------------------------------------------------------------------- | ----- | -------------------------------------- | -| action | [RelationTupleDelta.Action](#ory.keto.acl.v1alpha1.RelationTupleDelta.Action) | | The action to do on the RelationTuple. | -| relation_tuple | [RelationTuple](#ory.keto.acl.v1alpha1.RelationTuple) | | The target RelationTuple. | - -### TransactRelationTuplesRequest - -The request of a WriteService.TransactRelationTuples RPC. - -| Field | Type | Label | Description | -| --------------------- | --------------------------------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------ | -| relation_tuple_deltas | [RelationTupleDelta](#ory.keto.acl.v1alpha1.RelationTupleDelta) | repeated | The write delta for the relation tuples operated in one single transaction. Either all actions succeed or no change takes effect on error. | - -### TransactRelationTuplesResponse - -The response of a WriteService.TransactRelationTuples rpc. - -| Field | Type | Label | Description | -| ---------- | ----------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| snaptokens | [string](#string) | repeated | This field is not implemented yet and has no effect. | - -### RelationTupleDelta.Action - -| Name | Number | Description | -| ------------------ | ------ | ----------------------------------------------------------------------------------------------------------- | -| ACTION_UNSPECIFIED | 0 | Unspecified. The `TransactRelationTuples` RPC ignores this RelationTupleDelta if an action was unspecified. | -| INSERT | 1 | Insertion of a new RelationTuple. It is ignored if already existing. | -| DELETE | 2 | Deletion of the RelationTuple. It is ignored if it does not exist. | - -## Scalar Value Types - -| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby | -| ------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | ------ | ---------- | ----------- | ------- | ---------- | -------------- | ------------------------------ | -| double | | double | double | float | float64 | double | float | Float | -| float | | float | float | float | float32 | float | float | Float | -| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | -| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum | -| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) | -| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) | -| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | -| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum | -| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) | -| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum | -| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | -| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum | -| bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | -| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | -| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) | diff --git a/docs/versioned_docs/version-v0.6/reference/rest-api.mdx b/docs/versioned_docs/version-v0.6/reference/rest-api.mdx deleted file mode 100644 index ed07697f2..000000000 --- a/docs/versioned_docs/version-v0.6/reference/rest-api.mdx +++ /dev/null @@ -1,2105 +0,0 @@ ---- -title: REST API -id: rest-api ---- - -Ory Keto is a cloud native access control server providing best-practice -patterns (RBAC, ABAC, ACL, AWS IAM Policies, Kubernetes Roles, ...) via REST -APIs. - -import Tabs from '@theme/Tabs' -import TabItem from '@theme/TabItem' - -:::info - -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. - -::: - - - -## read - - - -### Check a relation tuple - -``` -POST /check HTTP/1.1 -Content-Type: application/json -Accept: application/json - -``` - -To learn how relation tuples and the check works, head over to -[the documentation](../concepts/relation-tuples.mdx). - -#### Request body - -```json -{ - "namespace": "string", - "object": "string", - "relation": "string", - "subject": "string" -} -``` - - - -#### Parameters - -| Parameter | In | Type | Required | Description | -| --------- | ---- | ----------------------------------------------------- | -------- | ----------- | -| body | body | [InternalRelationTuple](#schemainternalrelationtuple) | false | none | - -#### Responses - - - -##### Overview - -| Status | Meaning | Description | Schema | -| ------ | -------------------------------------------------------------------------- | ------------------------- | ------------------------------------------- | -| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | getCheckResponse | [getCheckResponse](#schemagetcheckresponse) | -| 400 | [Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1) | The standard error format | Inline | -| 403 | [Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3) | getCheckResponse | [getCheckResponse](#schemagetcheckresponse) | -| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | The standard error format | Inline | - - - -##### Response Schema - -Status Code **400** - -| Name | Type | Required | Restrictions | Description | -| --------- | -------------- | -------- | ------------ | ----------- | -| » code | integer(int64) | false | none | none | -| » details | [object] | false | none | none | -| » message | string | false | none | none | -| » reason | string | false | none | none | -| » request | string | false | none | none | -| » status | string | false | none | none | - -Status Code **500** - -| Name | Type | Required | Restrictions | Description | -| --------- | -------------- | -------- | ------------ | ----------- | -| » code | integer(int64) | false | none | none | -| » details | [object] | false | none | none | -| » message | string | false | none | none | -| » reason | string | false | none | none | -| » request | string | false | none | none | -| » status | string | false | none | none | - -##### Examples - -###### 200 response - -```json -{ - "allowed": true -} -``` - - - -#### Code samples - - - - -```shell -curl -X POST /check \ - -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", "/check", bytes.NewBuffer(body)) - req.Header = headers - - client := &http.Client{} - resp, err := client.Do(req) - // ... -} -``` - - - - -```javascript -const fetch = require('node-fetch'); -const input = '{ - "namespace": "string", - "object": "string", - "relation": "string", - "subject": "string" -}'; -const headers = { - 'Content-Type': 'application/json', 'Accept': 'application/json' -} - -fetch('/check', { - method: 'POST', - body: input, - headers -}) -.then(r => r.json()) -.then((body) => { - console.log(body) -}) -``` - - - - -```java -// This sample needs improvement. -URL obj = new URL("/check"); - -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( - '/check', - params={}, - headers = headers) - -print r.json() -``` - - - - -```ruby -require 'rest-client' -require 'json' - -headers = { - 'Content-Type' => 'application/json', - 'Accept' => 'application/json' -} - -result = RestClient.post '/check', - params: {}, headers: headers - -p JSON.parse(result) -``` - - - - - - -### Expand a Relation Tuple - -``` -GET /expand?namespace=string&object=string&relation=string HTTP/1.1 -Accept: application/json - -``` - -Use this endpoint to expand a relation tuple. - - - -#### Parameters - -| Parameter | In | Type | Required | Description | -| --------- | ----- | -------------- | -------- | ------------------------------- | -| namespace | query | string | true | Namespace of the Relation Tuple | -| object | query | string | true | Object of the Relation Tuple | -| relation | query | string | true | Relation of the Relation Tuple | -| max-depth | query | integer(int64) | false | none | - -#### Responses - - - -##### Overview - -| Status | Meaning | Description | Schema | -| ------ | -------------------------------------------------------------------------- | ------------------------- | ------------------------------- | -| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | expandTree | [expandTree](#schemaexpandtree) | -| 400 | [Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1) | The standard error format | Inline | -| 404 | [Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4) | The standard error format | Inline | -| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | The standard error format | Inline | - - - -##### Response Schema - -Status Code **400** - -| Name | Type | Required | Restrictions | Description | -| --------- | -------------- | -------- | ------------ | ----------- | -| » code | integer(int64) | false | none | none | -| » details | [object] | false | none | none | -| » message | string | false | none | none | -| » reason | string | false | none | none | -| » request | string | false | none | none | -| » status | string | false | none | none | - -Status Code **404** - -| Name | Type | Required | Restrictions | Description | -| --------- | -------------- | -------- | ------------ | ----------- | -| » code | integer(int64) | false | none | none | -| » details | [object] | false | none | none | -| » message | string | false | none | none | -| » reason | string | false | none | none | -| » request | string | false | none | none | -| » status | string | false | none | none | - -Status Code **500** - -| Name | Type | Required | Restrictions | Description | -| --------- | -------------- | -------- | ------------ | ----------- | -| » code | integer(int64) | false | none | none | -| » details | [object] | false | none | none | -| » message | string | false | none | none | -| » reason | string | false | none | none | -| » request | string | false | none | none | -| » status | string | false | none | none | - -##### Examples - -###### 200 response - -```json -{ - "children": [ - { - "children": [], - "subject": "string", - "type": "union" - } - ], - "subject": "string", - "type": "union" -} -``` - - - -#### Code samples - - - - -```shell -curl -X GET /expand?namespace=string&object=string&relation=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", "/expand", bytes.NewBuffer(body)) - req.Header = headers - - client := &http.Client{} - resp, err := client.Do(req) - // ... -} -``` - - - - -```javascript -const fetch = require('node-fetch') - -const headers = { - Accept: 'application/json' -} - -fetch('/expand?namespace=string&object=string&relation=string', { - method: 'GET', - headers -}) - .then((r) => r.json()) - .then((body) => { - console.log(body) - }) -``` - - - - -```java -// This sample needs improvement. -URL obj = new URL("/expand?namespace=string&object=string&relation=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( - '/expand', - params={ - 'namespace': 'string', - 'object': 'string', - 'relation': 'string'}, - headers = headers) - -print r.json() -``` - - - - -```ruby -require 'rest-client' -require 'json' - -headers = { - 'Accept' => 'application/json' -} - -result = RestClient.get '/expand', - params: { - 'namespace' => 'string', - 'object' => 'string', - 'relation' => 'string'}, headers: headers - -p JSON.parse(result) -``` - - - - - - -### Query relation tuples - -``` -GET /relation-tuples?namespace=string HTTP/1.1 -Accept: application/json - -``` - -Get all relation tuples that match the query. Only the namespace field is -required. - - - -#### Parameters - -| Parameter | In | Type | Required | Description | -| ---------- | ----- | -------------- | -------- | ----------- | -| namespace | query | string | true | none | -| object | query | string | false | none | -| relation | query | string | false | none | -| subject | query | string | false | none | -| page_token | query | string | false | none | -| page_size | query | integer(int64) | false | none | - -#### Responses - - - -##### Overview - -| Status | Meaning | Description | Schema | -| ------ | -------------------------------------------------------------------------- | ------------------------- | ------------------------------------------------------------- | -| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | getRelationTuplesResponse | [getRelationTuplesResponse](#schemagetrelationtuplesresponse) | -| 404 | [Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4) | The standard error format | Inline | -| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | The standard error format | Inline | - - - -##### Response Schema - -Status Code **404** - -| Name | Type | Required | Restrictions | Description | -| --------- | -------------- | -------- | ------------ | ----------- | -| » code | integer(int64) | false | none | none | -| » details | [object] | false | none | none | -| » message | string | false | none | none | -| » reason | string | false | none | none | -| » request | string | false | none | none | -| » status | string | false | none | none | - -Status Code **500** - -| Name | Type | Required | Restrictions | Description | -| --------- | -------------- | -------- | ------------ | ----------- | -| » code | integer(int64) | false | none | none | -| » details | [object] | false | none | none | -| » message | string | false | none | none | -| » reason | string | false | none | none | -| » request | string | false | none | none | -| » status | string | false | none | none | - -##### Examples - -###### 200 response - -```json -{ - "next_page_token": "string", - "relation_tuples": [ - { - "namespace": "string", - "object": "string", - "relation": "string", - "subject": "string" - } - ] -} -``` - - - -#### Code samples - - - - -```shell -curl -X GET /relation-tuples?namespace=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", "/relation-tuples", bytes.NewBuffer(body)) - req.Header = headers - - client := &http.Client{} - resp, err := client.Do(req) - // ... -} -``` - - - - -```javascript -const fetch = require('node-fetch') - -const headers = { - Accept: 'application/json' -} - -fetch('/relation-tuples?namespace=string', { - method: 'GET', - headers -}) - .then((r) => r.json()) - .then((body) => { - console.log(body) - }) -``` - - - - -```java -// This sample needs improvement. -URL obj = new URL("/relation-tuples?namespace=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( - '/relation-tuples', - params={ - 'namespace': 'string'}, - headers = headers) - -print r.json() -``` - - - - -```ruby -require 'rest-client' -require 'json' - -headers = { - 'Accept' => 'application/json' -} - -result = RestClient.get '/relation-tuples', - params: { - 'namespace' => 'string'}, headers: headers - -p JSON.parse(result) -``` - - - - - - -## 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) | The standard error format | Inline | - - - -##### Response Schema - -Status Code **500** - -| Name | Type | Required | Restrictions | Description | -| --------- | -------------- | -------- | ------------ | ----------- | -| » code | integer(int64) | false | none | none | -| » details | [object] | false | none | none | -| » message | string | false | none | none | -| » reason | string | false | none | none | -| » request | string | false | none | none | -| » status | string | false | none | none | - -##### 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) - // ... -} -``` - - - - -```javascript -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) - // ... -} -``` - - - - -```javascript -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) -``` - - - - - - -## write - - - -### Create a Relation Tuple - -``` -PUT /relation-tuples HTTP/1.1 -Content-Type: application/json -Accept: application/json - -``` - -Use this endpoint to create a relation tuple. - -#### Request body - -```json -{ - "namespace": "string", - "object": "string", - "relation": "string", - "subject": "string" -} -``` - - - -#### Parameters - -| Parameter | In | Type | Required | Description | -| --------- | ---- | ----------------------------------------------------- | -------- | ----------- | -| body | body | [InternalRelationTuple](#schemainternalrelationtuple) | false | none | - -#### Responses - - - -##### Overview - -| Status | Meaning | Description | Schema | -| ------ | -------------------------------------------------------------------------- | ------------------------- | ----------------------------------------------------- | -| 201 | [Created](https://tools.ietf.org/html/rfc7231#section-6.3.2) | InternalRelationTuple | [InternalRelationTuple](#schemainternalrelationtuple) | -| 400 | [Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1) | The standard error format | Inline | -| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | The standard error format | Inline | - - - -##### Response Schema - -Status Code **400** - -| Name | Type | Required | Restrictions | Description | -| --------- | -------------- | -------- | ------------ | ----------- | -| » code | integer(int64) | false | none | none | -| » details | [object] | false | none | none | -| » message | string | false | none | none | -| » reason | string | false | none | none | -| » request | string | false | none | none | -| » status | string | false | none | none | - -Status Code **500** - -| Name | Type | Required | Restrictions | Description | -| --------- | -------------- | -------- | ------------ | ----------- | -| » code | integer(int64) | false | none | none | -| » details | [object] | false | none | none | -| » message | string | false | none | none | -| » reason | string | false | none | none | -| » request | string | false | none | none | -| » status | string | false | none | none | - -##### Examples - -###### 201 response - -```json -{ - "namespace": "string", - "object": "string", - "relation": "string", - "subject": "string" -} -``` - - - -#### Code samples - - - - -```shell -curl -X PUT /relation-tuples \ - -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", "/relation-tuples", bytes.NewBuffer(body)) - req.Header = headers - - client := &http.Client{} - resp, err := client.Do(req) - // ... -} -``` - - - - -```javascript -const fetch = require('node-fetch'); -const input = '{ - "namespace": "string", - "object": "string", - "relation": "string", - "subject": "string" -}'; -const headers = { - 'Content-Type': 'application/json', 'Accept': 'application/json' -} - -fetch('/relation-tuples', { - method: 'PUT', - body: input, - headers -}) -.then(r => r.json()) -.then((body) => { - console.log(body) -}) -``` - - - - -```java -// This sample needs improvement. -URL obj = new URL("/relation-tuples"); - -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( - '/relation-tuples', - params={}, - headers = headers) - -print r.json() -``` - - - - -```ruby -require 'rest-client' -require 'json' - -headers = { - 'Content-Type' => 'application/json', - 'Accept' => 'application/json' -} - -result = RestClient.put '/relation-tuples', - params: {}, headers: headers - -p JSON.parse(result) -``` - - - - - - -### Delete a Relation Tuple - -``` -DELETE /relation-tuples?namespace=string&object=string&relation=string HTTP/1.1 -Accept: application/json - -``` - -Use this endpoint to delete a relation tuple. - - - -#### Parameters - -| Parameter | In | Type | Required | Description | -| --------- | ----- | ------ | -------- | ------------------------------- | -| namespace | query | string | true | Namespace of the Relation Tuple | -| object | query | string | true | Object of the Relation Tuple | -| relation | query | string | true | Relation of the Relation Tuple | -| subject | query | string | false | Subject of the Relation Tuple | - -##### Detailed descriptions - -**subject**: Subject of the Relation Tuple - -The subject follows the subject string encoding format. - -#### 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 | -| 400 | [Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1) | The standard error format | Inline | -| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | The standard error format | Inline | - - - -##### Response Schema - -Status Code **400** - -| Name | Type | Required | Restrictions | Description | -| --------- | -------------- | -------- | ------------ | ----------- | -| » code | integer(int64) | false | none | none | -| » details | [object] | false | none | none | -| » message | string | false | none | none | -| » reason | string | false | none | none | -| » request | string | false | none | none | -| » status | string | false | none | none | - -Status Code **500** - -| Name | Type | Required | Restrictions | Description | -| --------- | -------------- | -------- | ------------ | ----------- | -| » code | integer(int64) | false | none | none | -| » details | [object] | false | none | none | -| » message | string | false | none | none | -| » reason | string | false | none | none | -| » request | string | false | none | none | -| » status | string | false | none | none | - -##### Examples - -###### 400 response - -```json -{ - "code": 0, - "details": [{}], - "message": "string", - "reason": "string", - "request": "string", - "status": "string" -} -``` - - - -#### Code samples - - - - -```shell -curl -X DELETE /relation-tuples?namespace=string&object=string&relation=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("DELETE", "/relation-tuples", bytes.NewBuffer(body)) - req.Header = headers - - client := &http.Client{} - resp, err := client.Do(req) - // ... -} -``` - - - - -```javascript -const fetch = require('node-fetch') - -const headers = { - Accept: 'application/json' -} - -fetch('/relation-tuples?namespace=string&object=string&relation=string', { - method: 'DELETE', - headers -}) - .then((r) => r.json()) - .then((body) => { - console.log(body) - }) -``` - - - - -```java -// This sample needs improvement. -URL obj = new URL("/relation-tuples?namespace=string&object=string&relation=string"); - -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( - '/relation-tuples', - params={ - 'namespace': 'string', - 'object': 'string', - 'relation': 'string'}, - headers = headers) - -print r.json() -``` - - - - -```ruby -require 'rest-client' -require 'json' - -headers = { - 'Accept' => 'application/json' -} - -result = RestClient.delete '/relation-tuples', - params: { - 'namespace' => 'string', - 'object' => 'string', - 'relation' => 'string'}, headers: headers - -p JSON.parse(result) -``` - - - - - - -### Patch Multiple Relation Tuples - -``` -PATCH /relation-tuples HTTP/1.1 -Content-Type: application/json -Accept: application/json - -``` - -Use this endpoint to patch one or more relation tuples. - -#### Request body - -```json -[ - { - "action": "string", - "relation_tuple": { - "namespace": "string", - "object": "string", - "relation": "string", - "subject": "string" - } - } -] -``` - - - -#### Parameters - -| Parameter | In | Type | Required | Description | -| --------- | ---- | ------------------------------- | -------- | ----------- | -| body | body | [PatchDelta](#schemapatchdelta) | false | none | - -#### 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 | -| 400 | [Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1) | The standard error format | Inline | -| 404 | [Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4) | The standard error format | Inline | -| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | The standard error format | Inline | - - - -##### Response Schema - -Status Code **400** - -| Name | Type | Required | Restrictions | Description | -| --------- | -------------- | -------- | ------------ | ----------- | -| » code | integer(int64) | false | none | none | -| » details | [object] | false | none | none | -| » message | string | false | none | none | -| » reason | string | false | none | none | -| » request | string | false | none | none | -| » status | string | false | none | none | - -Status Code **404** - -| Name | Type | Required | Restrictions | Description | -| --------- | -------------- | -------- | ------------ | ----------- | -| » code | integer(int64) | false | none | none | -| » details | [object] | false | none | none | -| » message | string | false | none | none | -| » reason | string | false | none | none | -| » request | string | false | none | none | -| » status | string | false | none | none | - -Status Code **500** - -| Name | Type | Required | Restrictions | Description | -| --------- | -------------- | -------- | ------------ | ----------- | -| » code | integer(int64) | false | none | none | -| » details | [object] | false | none | none | -| » message | string | false | none | none | -| » reason | string | false | none | none | -| » request | string | false | none | none | -| » status | string | false | none | none | - -##### Examples - -###### 400 response - -```json -{ - "code": 0, - "details": [{}], - "message": "string", - "reason": "string", - "request": "string", - "status": "string" -} -``` - - - -#### Code samples - - - - -```shell -curl -X PATCH /relation-tuples \ - -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("PATCH", "/relation-tuples", bytes.NewBuffer(body)) - req.Header = headers - - client := &http.Client{} - resp, err := client.Do(req) - // ... -} -``` - - - - -```javascript -const fetch = require('node-fetch'); -const input = '[ - { - "action": "string", - "relation_tuple": { - "namespace": "string", - "object": "string", - "relation": "string", - "subject": "string" - } - } -]'; -const headers = { - 'Content-Type': 'application/json', 'Accept': 'application/json' -} - -fetch('/relation-tuples', { - method: 'PATCH', - body: input, - headers -}) -.then(r => r.json()) -.then((body) => { - console.log(body) -}) -``` - - - - -```java -// This sample needs improvement. -URL obj = new URL("/relation-tuples"); - -HttpURLConnection con = (HttpURLConnection) obj.openConnection(); -con.setRequestMethod("PATCH"); - -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.patch( - '/relation-tuples', - params={}, - headers = headers) - -print r.json() -``` - - - - -```ruby -require 'rest-client' -require 'json' - -headers = { - 'Content-Type' => 'application/json', - 'Accept' => 'application/json' -} - -result = RestClient.patch '/relation-tuples', - 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) - // ... -} -``` - - - - -```javascript -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 - - - -#### InternalRelationTuple - - - -```json -{ - "namespace": "string", - "object": "string", - "relation": "string", - "subject": "string" -} -``` - -#### Properties - -| Name | Type | Required | Restrictions | Description | -| --------- | ------------------------- | -------- | ------------ | -------------------------------------------------- | -| namespace | string | true | none | Namespace of the Relation Tuple

    in: query | -| object | string | true | none | Object of the Relation Tuple

    in: query | -| relation | string | true | none | Relation of the Relation Tuple

    in: query | -| subject | [subject](#schemasubject) | true | none | none | - - - -#### PatchDelta - - - -```json -{ - "action": "string", - "relation_tuple": { - "namespace": "string", - "object": "string", - "relation": "string", - "subject": "string" - } -} -``` - -#### Properties - -| Name | Type | Required | Restrictions | Description | -| -------------- | ----------------------------------------------------- | -------- | ------------ | ----------- | -| action | [patchAction](#schemapatchaction) | false | none | none | -| relation_tuple | [InternalRelationTuple](#schemainternalrelationtuple) | false | none | none | - - - -#### expandTree - - - -```json -{ - "children": [ - { - "children": [], - "subject": "string", - "type": "union" - } - ], - "subject": "string", - "type": "union" -} -``` - -#### Properties - -| Name | Type | Required | Restrictions | Description | -| -------- | --------------------------------- | -------- | ------------ | ----------- | -| children | [[expandTree](#schemaexpandtree)] | false | none | none | -| subject | [subject](#schemasubject) | true | none | none | -| type | string | true | none | none | - -##### Enumerated Values - -| Property | Value | -| -------- | ------------ | -| type | union | -| type | exclusion | -| type | intersection | -| type | leaf | - - - -#### getCheckResponse - - - -```json -{ - "allowed": true -} -``` - -_Represents the response for a check request._ - -#### Properties - -| Name | Type | Required | Restrictions | Description | -| ------- | ------- | -------- | ------------ | ------------------------------------- | -| allowed | boolean | true | none | whether the relation tuple is allowed | - - - -#### getRelationTuplesResponse - - - -```json -{ - "next_page_token": "string", - "relation_tuples": [ - { - "namespace": "string", - "object": "string", - "relation": "string", - "subject": "string" - } - ] -} -``` - -#### Properties - -| Name | Type | Required | Restrictions | Description | -| --------------- | ------------------------------------------------------- | -------- | ------------ | ----------------------------------------------------------------------------------------------------------------------------------- | -| next_page_token | string | false | none | The opaque token to provide in a subsequent request
    to get the next page. It is the empty string iff this is
    the last page. | -| relation_tuples | [[InternalRelationTuple](#schemainternalrelationtuple)] | false | none | none | - - - -#### 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 - - - -```json -{ - "status": "string" -} -``` - -#### Properties - -| Name | Type | Required | Restrictions | Description | -| ------ | ------ | -------- | ------------ | ---------------------------- | -| status | string | false | none | Status always contains "ok". | - - - -#### patchAction - - - -```json -"string" -``` - -#### Properties - -| Name | Type | Required | Restrictions | Description | -| ----------- | ------ | -------- | ------------ | ----------- | -| _anonymous_ | string | false | none | none | - - - -#### subject - - - -```json -"string" -``` - -#### Properties - -| Name | Type | Required | Restrictions | Description | -| ----------- | ------ | -------- | ------------ | ----------- | -| _anonymous_ | string | false | none | none | - - - -#### version - - - -```json -{ - "version": "string" -} -``` - -#### Properties - -| Name | Type | Required | Restrictions | Description | -| ------- | ------ | -------- | ------------ | --------------------------------- | -| version | string | false | none | Version is the service's version. | diff --git a/docs/versioned_docs/version-v0.6/sdk/index.md b/docs/versioned_docs/version-v0.6/sdk/index.md deleted file mode 100644 index f1068089a..000000000 --- a/docs/versioned_docs/version-v0.6/sdk/index.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -id: index -title: Overview ---- - -All SDKs use automated code generation provided by -[`openapi-generator`](https://github.com/OpenAPITools/openapi-generator) and -[protoc](https://github.com/protocolbuffers/protobuf). 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](../reference/rest-api.mdx) and [gRPC API](../reference/proto-api.mdx) -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: - -- [Dart](https://pub.dev/packages/ory_keto_client) -- [.NET](https://www.nuget.org/packages/Ory.Keto.Client/) -- [Go REST](https://github.com/ory/keto-client-go) -- [Go gRPC](https://github.com/ory/keto/blob/master/proto/ory/keto/acl) -- [Java](https://search.maven.org/artifact/sh.ory.keto/keto-client) -- [PHP](https://packagist.org/packages/ory/keto-client) -- [Python](https://pypi.org/project/ory-keto-client/) -- [Ruby](https://rubygems.org/gems/ory-keto-client) -- [Rust](https://crates.io/crates/ory-keto-client) -- [NodeJS REST](https://www.npmjs.com/package/@ory/keto-client) (with - TypeScript) -- [NodeJS gRPC](https://www.npmjs.com/package/@ory/keto-grpc-client) (with - TypeScript) - -Take a look at the source: -[Generated SDKs for Ory Keto](https://github.com/ory/sdk/tree/master/clients/keto/) - -Missing your programming language? -[Create an issue](https://github.com/ory/keto/issues) and help us build, test -and publish the SDK for your programming language! diff --git a/docs/versioned_docs/version-v0.6/secure.md b/docs/versioned_docs/version-v0.6/secure.md deleted file mode 100644 index 988f4d133..000000000 --- a/docs/versioned_docs/version-v0.6/secure.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -id: secure -title: Secure ---- - -Similar to other services in our ecosystem, Ory Keto's APIs have no integrated -access control on their own. Any request made to any Keto API is considered -authenticated, authorized, and is thus being executed. However, these endpoints -are very sensitive as they define who is allowed to do what in your system. - -Please protect these endpoints using -[Ory Oathkeeper](https://github.com/ory/oathkeeper) or a comparable API Gateway. -How you protect them, is up to you. - -If you require support for this, consider [asking us](mailto:hi@ory.sh). diff --git a/docs/versioned_docs/version-v0.7/.gitkeep b/docs/versioned_docs/version-v0.7/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/docs/versioned_docs/version-v0.7/.static/api.json b/docs/versioned_docs/version-v0.7/.static/api.json deleted file mode 100644 index c22b66330..000000000 --- a/docs/versioned_docs/version-v0.7/.static/api.json +++ /dev/null @@ -1,1110 +0,0 @@ -{ - "consumes": ["application/json"], - "produces": ["application/json"], - "schemes": ["http", "https"], - "swagger": "2.0", - "info": { - "description": "Ory Keto is a cloud native access control server providing best-practice patterns (RBAC, ABAC, ACL, AWS IAM Policies, Kubernetes Roles, ...) via REST APIs.", - "title": "ORY Keto", - "contact": { - "name": "ORY", - "url": "https://www.ory.sh", - "email": "hi@ory.sh" - }, - "license": { - "name": "Apache 2.0", - "url": "https://github.com/ory/keto/blob/master/LICENSE" - }, - "version": "Latest" - }, - "basePath": "/", - "paths": { - "/check": { - "get": { - "description": "To learn how relation tuples and the check works, head over to [the documentation](../concepts/relation-tuples.mdx).", - "consumes": ["application/x-www-form-urlencoded"], - "produces": ["application/json"], - "schemes": ["http", "https"], - "tags": ["read"], - "summary": "Check a relation tuple", - "operationId": "getCheck", - "parameters": [ - { - "type": "string", - "description": "Namespace of the Relation Tuple", - "name": "namespace", - "in": "query", - "required": true - }, - { - "type": "string", - "description": "Object of the Relation Tuple", - "name": "object", - "in": "query", - "required": true - }, - { - "type": "string", - "description": "Relation of the Relation Tuple", - "name": "relation", - "in": "query", - "required": true - }, - { - "type": "string", - "description": "SubjectID of the Relation Tuple", - "name": "subject_id", - "in": "query" - }, - { - "type": "string", - "description": "Namespace of the Subject Set", - "name": "subject_set.namespace", - "in": "query" - }, - { - "type": "string", - "description": "Object of the Subject Set", - "name": "subject_set.object", - "in": "query" - }, - { - "type": "string", - "description": "Relation of the Subject Set", - "name": "subject_set.relation", - "in": "query" - } - ], - "responses": { - "200": { - "description": "getCheckResponse", - "schema": { - "$ref": "#/definitions/getCheckResponse" - } - }, - "400": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - }, - "403": { - "description": "getCheckResponse", - "schema": { - "$ref": "#/definitions/getCheckResponse" - } - }, - "500": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - } - } - }, - "post": { - "description": "To learn how relation tuples and the check works, head over to [the documentation](../concepts/relation-tuples.mdx).", - "consumes": ["application/json"], - "produces": ["application/json"], - "schemes": ["http", "https"], - "tags": ["read"], - "summary": "Check a relation tuple", - "operationId": "postCheck", - "parameters": [ - { - "name": "Payload", - "in": "body", - "schema": { - "$ref": "#/definitions/RelationQuery" - } - } - ], - "responses": { - "200": { - "description": "getCheckResponse", - "schema": { - "$ref": "#/definitions/getCheckResponse" - } - }, - "400": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - }, - "403": { - "description": "getCheckResponse", - "schema": { - "$ref": "#/definitions/getCheckResponse" - } - }, - "500": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - } - } - } - }, - "/expand": { - "get": { - "description": "Use this endpoint to expand a relation tuple.", - "consumes": ["application/x-www-form-urlencoded"], - "produces": ["application/json"], - "schemes": ["http", "https"], - "tags": ["read"], - "summary": "Expand a Relation Tuple", - "operationId": "getExpand", - "parameters": [ - { - "type": "string", - "description": "Namespace of the Subject Set", - "name": "namespace", - "in": "query", - "required": true - }, - { - "type": "string", - "description": "Object of the Subject Set", - "name": "object", - "in": "query", - "required": true - }, - { - "type": "string", - "description": "Relation of the Subject Set", - "name": "relation", - "in": "query", - "required": true - }, - { - "type": "integer", - "format": "int64", - "name": "max-depth", - "in": "query" - } - ], - "responses": { - "200": { - "description": "expandTree", - "schema": { - "$ref": "#/definitions/expandTree" - } - }, - "400": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - }, - "404": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - }, - "500": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - } - } - } - }, - "/health/alive": { - "get": { - "description": "This endpoint returns a 200 status code when the HTTP server is up running.\nThis status does currently not include checks whether the database connection is working.\n\nIf the service supports TLS Edge Termination, this endpoint does not require the\n`X-Forwarded-Proto` header to be set.\n\nBe aware that if you are running multiple nodes of this service, the health status will never\nrefer to the cluster state, only to a single instance.", - "produces": ["application/json"], - "tags": ["health"], - "summary": "Check alive status", - "operationId": "isInstanceAlive", - "responses": { - "200": { - "description": "healthStatus", - "schema": { - "$ref": "#/definitions/healthStatus" - } - }, - "500": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - } - } - } - }, - "/health/ready": { - "get": { - "description": "This endpoint returns a 200 status code when the HTTP server is up running and the environment dependencies (e.g.\nthe database) are responsive as well.\n\nIf the service supports TLS Edge Termination, this endpoint does not require the\n`X-Forwarded-Proto` header to be set.\n\nBe aware that if you are running multiple nodes of this service, the health status will never\nrefer to the cluster state, only to a single instance.", - "produces": ["application/json"], - "tags": ["health"], - "summary": "Check readiness status", - "operationId": "isInstanceReady", - "responses": { - "200": { - "description": "healthStatus", - "schema": { - "$ref": "#/definitions/healthStatus" - } - }, - "503": { - "description": "healthNotReadyStatus", - "schema": { - "$ref": "#/definitions/healthNotReadyStatus" - } - } - } - } - }, - "/relation-tuples": { - "get": { - "description": "Get all relation tuples that match the query. Only the namespace field is required.", - "consumes": ["application/x-www-form-urlencoded"], - "produces": ["application/json"], - "schemes": ["http", "https"], - "tags": ["read"], - "summary": "Query relation tuples", - "operationId": "getRelationTuples", - "parameters": [ - { - "type": "string", - "description": "Namespace of the Relation Tuple", - "name": "namespace", - "in": "query", - "required": true - }, - { - "type": "string", - "description": "Object of the Relation Tuple", - "name": "object", - "in": "query", - "required": true - }, - { - "type": "string", - "description": "Relation of the Relation Tuple", - "name": "relation", - "in": "query", - "required": true - }, - { - "type": "string", - "description": "SubjectID of the Relation Tuple", - "name": "subject_id", - "in": "query" - }, - { - "type": "string", - "description": "Namespace of the Subject Set", - "name": "subject_set.namespace", - "in": "query" - }, - { - "type": "string", - "description": "Object of the Subject Set", - "name": "subject_set.object", - "in": "query" - }, - { - "type": "string", - "description": "Relation of the Subject Set", - "name": "subject_set.relation", - "in": "query" - }, - { - "type": "string", - "name": "page_token", - "in": "query" - }, - { - "type": "integer", - "format": "int64", - "name": "page_size", - "in": "query" - } - ], - "responses": { - "200": { - "description": "getRelationTuplesResponse", - "schema": { - "$ref": "#/definitions/getRelationTuplesResponse" - } - }, - "404": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - }, - "500": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - } - } - }, - "put": { - "description": "Use this endpoint to create a relation tuple.", - "consumes": ["application/json"], - "produces": ["application/json"], - "schemes": ["http", "https"], - "tags": ["write"], - "summary": "Create a Relation Tuple", - "operationId": "createRelationTuple", - "parameters": [ - { - "name": "Payload", - "in": "body", - "schema": { - "$ref": "#/definitions/RelationQuery" - } - } - ], - "responses": { - "201": { - "description": "RelationQuery", - "schema": { - "$ref": "#/definitions/RelationQuery" - } - }, - "400": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - }, - "500": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - } - } - }, - "delete": { - "description": "Use this endpoint to delete a relation tuple.", - "consumes": ["application/x-www-form-urlencoded"], - "produces": ["application/json"], - "schemes": ["http", "https"], - "tags": ["write"], - "summary": "Delete a Relation Tuple", - "operationId": "deleteRelationTuple", - "parameters": [ - { - "type": "string", - "description": "Namespace of the Relation Tuple", - "name": "namespace", - "in": "query", - "required": true - }, - { - "type": "string", - "description": "Object of the Relation Tuple", - "name": "object", - "in": "query", - "required": true - }, - { - "type": "string", - "description": "Relation of the Relation Tuple", - "name": "relation", - "in": "query", - "required": true - }, - { - "type": "string", - "description": "SubjectID of the Relation Tuple", - "name": "subject_id", - "in": "query" - }, - { - "type": "string", - "description": "Namespace of the Subject Set", - "name": "subject_set.namespace", - "in": "query" - }, - { - "type": "string", - "description": "Object of the Subject Set", - "name": "subject_set.object", - "in": "query" - }, - { - "type": "string", - "description": "Relation of the Subject Set", - "name": "subject_set.relation", - "in": "query" - } - ], - "responses": { - "204": { - "description": "Empty responses are sent when, for example, resources are deleted. The HTTP status code for empty responses is typically 201." - }, - "400": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - }, - "500": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - } - } - }, - "patch": { - "description": "Use this endpoint to patch one or more relation tuples.", - "consumes": ["application/json"], - "produces": ["application/json"], - "schemes": ["http", "https"], - "tags": ["write"], - "summary": "Patch Multiple Relation Tuples", - "operationId": "patchRelationTuples", - "parameters": [ - { - "name": "Payload", - "in": "body", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/PatchDelta" - } - } - } - ], - "responses": { - "204": { - "description": "Empty responses are sent when, for example, resources are deleted. The HTTP status code for empty responses is typically 201." - }, - "400": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - }, - "404": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - }, - "500": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - } - } - } - }, - "/version": { - "get": { - "description": "This endpoint returns the service version typically notated using semantic versioning.\n\nIf the service supports TLS Edge Termination, this endpoint does not require the\n`X-Forwarded-Proto` header to be set.\n\nBe aware that if you are running multiple nodes of this service, the health status will never\nrefer to the cluster state, only to a single instance.", - "produces": ["application/json"], - "tags": ["version"], - "summary": "Get service version", - "operationId": "getVersion", - "responses": { - "200": { - "description": "version", - "schema": { - "$ref": "#/definitions/version" - } - } - } - } - } - }, - "definitions": { - "InternalRelationTuple": { - "type": "object", - "required": ["namespace", "object", "relation"], - "properties": { - "namespace": { - "description": "Namespace of the Relation Tuple", - "type": "string" - }, - "object": { - "description": "Object of the Relation Tuple", - "type": "string" - }, - "relation": { - "description": "Relation of the Relation Tuple", - "type": "string" - }, - "subject_id": { - "description": "SubjectID of the Relation Tuple\n\nEither SubjectSet or SubjectID are required.", - "type": "string" - }, - "subject_set": { - "$ref": "#/definitions/SubjectSet" - } - } - }, - "PatchDelta": { - "type": "object", - "properties": { - "action": { - "type": "string", - "enum": ["insert", "delete"] - }, - "relation_tuple": { - "$ref": "#/definitions/InternalRelationTuple" - } - } - }, - "RelationQuery": { - "type": "object", - "required": ["namespace"], - "properties": { - "namespace": { - "description": "Namespace of the Relation Tuple", - "type": "string" - }, - "object": { - "description": "Object of the Relation Tuple", - "type": "string" - }, - "relation": { - "description": "Relation of the Relation Tuple", - "type": "string" - }, - "subject_id": { - "description": "SubjectID of the Relation Tuple\n\nEither SubjectSet or SubjectID can be provided.", - "type": "string" - }, - "subject_set": { - "$ref": "#/definitions/SubjectSet" - } - } - }, - "SubjectSet": { - "type": "object", - "required": ["namespace", "object", "relation"], - "properties": { - "namespace": { - "description": "Namespace of the Subject Set", - "type": "string" - }, - "object": { - "description": "Object of the Subject Set", - "type": "string" - }, - "relation": { - "description": "Relation of the Subject Set", - "type": "string" - } - } - }, - "expandTree": { - "type": "object", - "required": ["type"], - "properties": { - "children": { - "type": "array", - "items": { - "$ref": "#/definitions/expandTree" - } - }, - "subject_id": { - "type": "string" - }, - "subject_set": { - "$ref": "#/definitions/SubjectSet" - }, - "type": { - "type": "string", - "enum": ["union", "exclusion", "intersection", "leaf"] - } - } - }, - "getCheckResponse": { - "description": "The content of the allowed field is mirrored in the HTTP status code.", - "type": "object", - "title": "Represents the response for a check request.", - "required": ["allowed"], - "properties": { - "allowed": { - "description": "whether the relation tuple is allowed", - "type": "boolean" - } - } - }, - "getRelationTuplesResponse": { - "type": "object", - "properties": { - "next_page_token": { - "description": "The opaque token to provide in a subsequent request\nto get the next page. It is the empty string iff this is\nthe last page.", - "type": "string" - }, - "relation_tuples": { - "type": "array", - "items": { - "$ref": "#/definitions/InternalRelationTuple" - } - } - } - }, - "healthNotReadyStatus": { - "type": "object", - "properties": { - "errors": { - "description": "Errors contains a list of errors that caused the not ready status.", - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - }, - "healthStatus": { - "type": "object", - "properties": { - "status": { - "description": "Status always contains \"ok\".", - "type": "string" - } - } - }, - "version": { - "type": "object", - "properties": { - "version": { - "description": "Version is the service's version.", - "type": "string" - } - } - } - } -} diff --git a/docs/versioned_docs/version-v0.7/CHANGELOG.md b/docs/versioned_docs/version-v0.7/CHANGELOG.md deleted file mode 100644 index e69de29bb..000000000 diff --git a/docs/versioned_docs/version-v0.7/cli/keto-check.md b/docs/versioned_docs/version-v0.7/cli/keto-check.md deleted file mode 100644 index 01eaf616e..000000000 --- a/docs/versioned_docs/version-v0.7/cli/keto-check.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -id: keto-check -title: keto check -description: keto check Check whether a subject has a relation on an object ---- - - - -## keto check - -Check whether a subject has a relation on an object - -### Synopsis - -Check whether a subject has a relation on an object. This method resolves -subject sets and subject set rewrites. - -``` -keto check <subject> <relation> <namespace> <object> [flags] -``` - -### Options - -``` - -f, --format string Set the output format. One of table, json, and json-pretty. (default "default") - -h, --help help for check - -q, --quiet Be quiet with output printing. - --read-remote string Remote URL of the read API endpoint. (default "127.0.0.1:4466") - --write-remote string Remote URL of the write API endpoint. (default "127.0.0.1:4467") -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/circleci/keto.yml]) -``` - -### SEE ALSO - -- [keto](keto) - Global and consistent permission and authorization server diff --git a/docs/versioned_docs/version-v0.7/cli/keto-expand.md b/docs/versioned_docs/version-v0.7/cli/keto-expand.md deleted file mode 100644 index 8f9ac06c1..000000000 --- a/docs/versioned_docs/version-v0.7/cli/keto-expand.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -id: keto-expand -title: keto expand -description: keto expand Expand a subject set ---- - - - -## keto expand - -Expand a subject set - -### Synopsis - -Expand a subject set into a tree of subjects. - -``` -keto expand <relation> <namespace> <object> [flags] -``` - -### Options - -``` - -f, --format string Set the output format. One of default, json, and json-pretty. (default "default") - -h, --help help for expand - -d, --max-depth int32 maximum depth of the tree (default 100) - -q, --quiet Be quiet with output printing. - --read-remote string Remote URL of the read API endpoint. (default "127.0.0.1:4466") - --write-remote string Remote URL of the write API endpoint. (default "127.0.0.1:4467") -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/circleci/keto.yml]) -``` - -### SEE ALSO - -- [keto](keto) - Global and consistent permission and authorization server diff --git a/docs/versioned_docs/version-v0.7/cli/keto-migrate-down.md b/docs/versioned_docs/version-v0.7/cli/keto-migrate-down.md deleted file mode 100644 index 5f107dca9..000000000 --- a/docs/versioned_docs/version-v0.7/cli/keto-migrate-down.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -id: keto-migrate-down -title: keto migrate down -description: keto migrate down Migrate the database down ---- - - - -## keto migrate down - -Migrate the database down - -### Synopsis - -Migrate the database down a specific amount of steps. Pass 0 steps to fully -migrate down. - -``` -keto migrate down <steps> [flags] -``` - -### Options - -``` - -f, --format string Set the output format. One of table, json, and json-pretty. (default "default") - -h, --help help for down - -q, --quiet Be quiet with output printing. - -y, --yes yes to all questions, no user input required -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/circleci/keto.yml]) -``` - -### SEE ALSO - -- [keto migrate](keto-migrate) - Commands to migrate the database diff --git a/docs/versioned_docs/version-v0.7/cli/keto-migrate-status.md b/docs/versioned_docs/version-v0.7/cli/keto-migrate-status.md deleted file mode 100644 index 154640dd1..000000000 --- a/docs/versioned_docs/version-v0.7/cli/keto-migrate-status.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -id: keto-migrate-status -title: keto migrate status -description: keto migrate status Get the current migration status ---- - - - -## keto migrate status - -Get the current migration status - -### Synopsis - -Get the current migration status. This does not affect namespaces. Use -`keto namespace migrate status` for migrating namespaces. - -``` -keto migrate status [flags] -``` - -### Options - -``` - -f, --format string Set the output format. One of table, json, and json-pretty. (default "default") - -h, --help help for status - -q, --quiet Be quiet with output printing. -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/circleci/keto.yml]) -``` - -### SEE ALSO - -- [keto migrate](keto-migrate) - Commands to migrate the database diff --git a/docs/versioned_docs/version-v0.7/cli/keto-migrate-up.md b/docs/versioned_docs/version-v0.7/cli/keto-migrate-up.md deleted file mode 100644 index aff6332a3..000000000 --- a/docs/versioned_docs/version-v0.7/cli/keto-migrate-up.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -id: keto-migrate-up -title: keto migrate up -description: keto migrate up Migrate the database up ---- - - - -## keto migrate up - -Migrate the database up - -### Synopsis - -Run this command on a fresh SQL installation and when you upgrade Ory Keto from -version v0.7.x and later. - -It is recommended to run this command close to the SQL instance (e.g. same -subnet) instead of over the public internet. This decreases risk of failure and -decreases time required. - -### WARNING - -Before running this command on an existing database, create a back up! - -``` -keto migrate up [flags] -``` - -### Options - -``` - -f, --format string Set the output format. One of table, json, and json-pretty. (default "default") - -h, --help help for up - -q, --quiet Be quiet with output printing. - -y, --yes yes to all questions, no user input required -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/circleci/keto.yml]) -``` - -### SEE ALSO - -- [keto migrate](keto-migrate) - Commands to migrate the database diff --git a/docs/versioned_docs/version-v0.7/cli/keto-migrate.md b/docs/versioned_docs/version-v0.7/cli/keto-migrate.md deleted file mode 100644 index a06fac2de..000000000 --- a/docs/versioned_docs/version-v0.7/cli/keto-migrate.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -id: keto-migrate -title: keto migrate -description: keto migrate Commands to migrate the database ---- - - - -## keto migrate - -Commands to migrate the database - -### Synopsis - -Commands to migrate the database. This does not affect namespaces. Use -`keto namespace migrate` for migrating namespaces. - -### Options - -``` - -h, --help help for migrate -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/circleci/keto.yml]) -``` - -### SEE ALSO - -- [keto](keto) - Global and consistent permission and authorization server -- [keto migrate down](keto-migrate-down) - Migrate the database down -- [keto migrate status](keto-migrate-status) - Get the current migration status -- [keto migrate up](keto-migrate-up) - Migrate the database up diff --git a/docs/versioned_docs/version-v0.7/cli/keto-namespace-migrate-down.md b/docs/versioned_docs/version-v0.7/cli/keto-namespace-migrate-down.md deleted file mode 100644 index 73007c918..000000000 --- a/docs/versioned_docs/version-v0.7/cli/keto-namespace-migrate-down.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -id: keto-namespace-migrate-down -title: keto namespace migrate down -description: keto namespace migrate down Migrate a namespace down ---- - - - -## keto namespace migrate down - -Deprecated: this step is not required anymore since -https://github.com/ory/keto/pull/638 - -### SEE ALSO - -- [keto namespace migrate](keto-namespace-migrate) - Migrate a namespace diff --git a/docs/versioned_docs/version-v0.7/cli/keto-namespace-migrate-legacy.md b/docs/versioned_docs/version-v0.7/cli/keto-namespace-migrate-legacy.md deleted file mode 100644 index f832878f1..000000000 --- a/docs/versioned_docs/version-v0.7/cli/keto-namespace-migrate-legacy.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -id: keto-namespace-migrate-legacy -title: keto namespace migrate legacy -description: - keto namespace migrate legacy Migrate a namespace from v0.6.x to v0.7.x and - later. ---- - - - -## keto namespace migrate legacy - -Migrate a namespace from v0.6.x to v0.7.x and later. - -### Synopsis - -Migrate a legacy namespaces from v0.6.x to the v0.7.x and later. This step only -has to be executed once. If no namespace is specified, all legacy namespaces -will be migrated. Please ensure that namespace IDs did not change in the config -file and you have a backup in case something goes wrong! - -``` -keto namespace migrate legacy [<namespace-name>] [flags] -``` - -### Options - -``` - --down-only Migrate legacy namespace(s) only down. - -f, --format string Set the output format. One of table, json, and json-pretty. (default "default") - -h, --help help for legacy - -q, --quiet Be quiet with output printing. - --read-remote string Remote URL of the read API endpoint. (default "127.0.0.1:4466") - --write-remote string Remote URL of the write API endpoint. (default "127.0.0.1:4467") - -y, --yes yes to all questions, no user input required -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/circleci/keto.yml]) -``` - -### SEE ALSO - -- [keto namespace migrate](keto-namespace-migrate) - Migrate a namespace diff --git a/docs/versioned_docs/version-v0.7/cli/keto-namespace-migrate-status.md b/docs/versioned_docs/version-v0.7/cli/keto-namespace-migrate-status.md deleted file mode 100644 index 369c0caff..000000000 --- a/docs/versioned_docs/version-v0.7/cli/keto-namespace-migrate-status.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -id: keto-namespace-migrate-status -title: keto namespace migrate status -description: - keto namespace migrate status Get the current namespace migration status ---- - - - -## keto namespace migrate status - -Deprecated: this step is not required anymore since -https://github.com/ory/keto/pull/638 - -### SEE ALSO - -- [keto namespace migrate](keto-namespace-migrate) - Migrate a namespace diff --git a/docs/versioned_docs/version-v0.7/cli/keto-namespace-migrate-up.md b/docs/versioned_docs/version-v0.7/cli/keto-namespace-migrate-up.md deleted file mode 100644 index b98171941..000000000 --- a/docs/versioned_docs/version-v0.7/cli/keto-namespace-migrate-up.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -id: keto-namespace-migrate-up -title: keto namespace migrate up -description: keto namespace migrate up Migrate a namespace up ---- - - - -## keto namespace migrate up - -Deprecated: this step is not required anymore since -https://github.com/ory/keto/pull/638 - -### SEE ALSO - -- [keto namespace migrate](keto-namespace-migrate) - Migrate a namespace diff --git a/docs/versioned_docs/version-v0.7/cli/keto-namespace-migrate.md b/docs/versioned_docs/version-v0.7/cli/keto-namespace-migrate.md deleted file mode 100644 index e8dee9cdb..000000000 --- a/docs/versioned_docs/version-v0.7/cli/keto-namespace-migrate.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -id: keto-namespace-migrate -title: keto namespace migrate -description: keto namespace migrate Migrate a namespace ---- - - - -## keto namespace migrate - -Migrate a namespace - -### Options - -``` - -h, --help help for migrate -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/circleci/keto.yml]) -``` - -### SEE ALSO - -- [keto namespace](keto-namespace) - Read and manipulate namespaces -- [keto namespace migrate legacy](keto-namespace-migrate-legacy) - Migrate a - namespace from v0.6.x to v0.7.x and later. diff --git a/docs/versioned_docs/version-v0.7/cli/keto-namespace-validate.md b/docs/versioned_docs/version-v0.7/cli/keto-namespace-validate.md deleted file mode 100644 index d98d246c2..000000000 --- a/docs/versioned_docs/version-v0.7/cli/keto-namespace-validate.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -id: keto-namespace-validate -title: keto namespace validate -description: keto namespace validate Validate namespace definitions ---- - - - -## keto namespace validate - -Validate namespace definitions - -### Synopsis - -validate Validates namespace definitions. Parses namespace yaml files or -configuration files passed via the configuration flag. Returns human readable -errors. Useful for debugging. - -``` -keto namespace validate <namespace.yml> [<namespace2.yml> ...] | validate -c <config.yaml> [flags] -``` - -### Options - -``` - -h, --help help for validate -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/circleci/keto.yml]) -``` - -### SEE ALSO - -- [keto namespace](keto-namespace) - Read and manipulate namespaces diff --git a/docs/versioned_docs/version-v0.7/cli/keto-namespace.md b/docs/versioned_docs/version-v0.7/cli/keto-namespace.md deleted file mode 100644 index a47d60528..000000000 --- a/docs/versioned_docs/version-v0.7/cli/keto-namespace.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -id: keto-namespace -title: keto namespace -description: keto namespace Read and manipulate namespaces ---- - - - -## keto namespace - -Read and manipulate namespaces - -### Options - -``` - -h, --help help for namespace -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/circleci/keto.yml]) -``` - -### SEE ALSO - -- [keto](keto) - Global and consistent permission and authorization server -- [keto namespace migrate](keto-namespace-migrate) - Migrate a namespace -- [keto namespace validate](keto-namespace-validate) - Validate namespace - definitions diff --git a/docs/versioned_docs/version-v0.7/cli/keto-relation-tuple-create.md b/docs/versioned_docs/version-v0.7/cli/keto-relation-tuple-create.md deleted file mode 100644 index 4c67d1754..000000000 --- a/docs/versioned_docs/version-v0.7/cli/keto-relation-tuple-create.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -id: keto-relation-tuple-create -title: keto relation-tuple create -description: keto relation-tuple create Create relation tuples from JSON files ---- - - - -## keto relation-tuple create - -Create relation tuples from JSON files - -### Synopsis - -Create relation tuples from JSON files. A directory will be traversed and all -relation tuples will be created. Pass the special filename `-` to read from -STD_IN. - -``` -keto relation-tuple create <relation-tuple.json> [<relation-tuple-dir>] [flags] -``` - -### Options - -``` - -f, --format string Set the output format. One of table, json, and json-pretty. (default "default") - -h, --help help for create - -q, --quiet Be quiet with output printing. - --read-remote string Remote URL of the read API endpoint. (default "127.0.0.1:4466") - --write-remote string Remote URL of the write API endpoint. (default "127.0.0.1:4467") -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/circleci/keto.yml]) -``` - -### SEE ALSO - -- [keto relation-tuple](keto-relation-tuple) - Read and manipulate relation - tuples diff --git a/docs/versioned_docs/version-v0.7/cli/keto-relation-tuple-delete.md b/docs/versioned_docs/version-v0.7/cli/keto-relation-tuple-delete.md deleted file mode 100644 index ac9c88677..000000000 --- a/docs/versioned_docs/version-v0.7/cli/keto-relation-tuple-delete.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -id: keto-relation-tuple-delete -title: keto relation-tuple delete -description: - keto relation-tuple delete Delete relation tuples defined in JSON files ---- - - - -## keto relation-tuple delete - -Delete relation tuples defined in JSON files - -### Synopsis - -Delete relation tuples defined in the given JSON files. A directory will be -traversed and all relation tuples will be deleted. Pass the special filename `-` -to read from STD_IN. - -``` -keto relation-tuple delete <relation-tuple.json> [<relation-tuple-dir>] [flags] -``` - -### Options - -``` - -f, --format string Set the output format. One of table, json, and json-pretty. (default "default") - -h, --help help for delete - -q, --quiet Be quiet with output printing. - --read-remote string Remote URL of the read API endpoint. (default "127.0.0.1:4466") - --write-remote string Remote URL of the write API endpoint. (default "127.0.0.1:4467") -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/circleci/keto.yml]) -``` - -### SEE ALSO - -- [keto relation-tuple](keto-relation-tuple) - Read and manipulate relation - tuples diff --git a/docs/versioned_docs/version-v0.7/cli/keto-relation-tuple-get.md b/docs/versioned_docs/version-v0.7/cli/keto-relation-tuple-get.md deleted file mode 100644 index f09926ecb..000000000 --- a/docs/versioned_docs/version-v0.7/cli/keto-relation-tuple-get.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -id: keto-relation-tuple-get -title: keto relation-tuple get -description: keto relation-tuple get Get relation tuples ---- - - - -## keto relation-tuple get - -Get relation tuples - -### Synopsis - -Get relation tuples matching the given partial tuple. Returns paginated results. - -``` -keto relation-tuple get <namespace> [flags] -``` - -### Options - -``` - -f, --format string Set the output format. One of table, json, and json-pretty. (default "default") - -h, --help help for get - --object string Set the requested object - --page-size int32 maximum number of items to return (default 100) - --page-token string page token acquired from a previous response - -q, --quiet Be quiet with output printing. - --read-remote string Remote URL of the read API endpoint. (default "127.0.0.1:4466") - --relation string Set the requested relation - --subject-id string Set the requested subject ID - --subject-set string Set the requested subject set; format: "namespace:object#relation" - --write-remote string Remote URL of the write API endpoint. (default "127.0.0.1:4467") -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/circleci/keto.yml]) -``` - -### SEE ALSO - -- [keto relation-tuple](keto-relation-tuple) - Read and manipulate relation - tuples diff --git a/docs/versioned_docs/version-v0.7/cli/keto-relation-tuple-parse.md b/docs/versioned_docs/version-v0.7/cli/keto-relation-tuple-parse.md deleted file mode 100644 index 7503679fc..000000000 --- a/docs/versioned_docs/version-v0.7/cli/keto-relation-tuple-parse.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -id: keto-relation-tuple-parse -title: keto relation-tuple parse -description: keto relation-tuple parse Parse human readable relation tuples ---- - - - -## keto relation-tuple parse - -Parse human readable relation tuples - -### Synopsis - -Parse human readable relation tuples as used in the documentation. Supports -various output formats. Especially useful for piping into other commands by -using `--format json`. Ignores comments (starting with `//`) and blank lines. - -``` -keto relation-tuple parse [flags] -``` - -### Options - -``` - -f, --format string Set the output format. One of table, json, and json-pretty. (default "default") - -h, --help help for parse - -q, --quiet Be quiet with output printing. -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/circleci/keto.yml]) -``` - -### SEE ALSO - -- [keto relation-tuple](keto-relation-tuple) - Read and manipulate relation - tuples diff --git a/docs/versioned_docs/version-v0.7/cli/keto-relation-tuple.md b/docs/versioned_docs/version-v0.7/cli/keto-relation-tuple.md deleted file mode 100644 index dbd5e41a2..000000000 --- a/docs/versioned_docs/version-v0.7/cli/keto-relation-tuple.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -id: keto-relation-tuple -title: keto relation-tuple -description: keto relation-tuple Read and manipulate relation tuples ---- - - - -## keto relation-tuple - -Read and manipulate relation tuples - -### Options - -``` - -h, --help help for relation-tuple -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/circleci/keto.yml]) -``` - -### SEE ALSO - -- [keto](keto) - Global and consistent permission and authorization server -- [keto relation-tuple create](keto-relation-tuple-create) - Create relation - tuples from JSON files -- [keto relation-tuple delete](keto-relation-tuple-delete) - Delete relation - tuples defined in JSON files -- [keto relation-tuple get](keto-relation-tuple-get) - Get relation tuples -- [keto relation-tuple parse](keto-relation-tuple-parse) - Parse human readable - relation tuples diff --git a/docs/versioned_docs/version-v0.7/cli/keto-serve.md b/docs/versioned_docs/version-v0.7/cli/keto-serve.md deleted file mode 100644 index dd37544e9..000000000 --- a/docs/versioned_docs/version-v0.7/cli/keto-serve.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -id: keto-serve -title: keto serve -description: keto serve Starts the server and serves the HTTP REST and gRPC APIs ---- - - - -## keto serve - -Starts the server and serves the HTTP REST and gRPC APIs - -### Synopsis - -This command opens the network ports and listens to HTTP and gRPC API requests. - -## Configuration - -ORY Keto can be configured using environment variables as well as a -configuration file. For more information on configuration options, open the -configuration documentation: - ->> https://www.ory.sh/keto/docs/reference/configuration << - -``` -keto serve [flags] -``` - -### Options - -``` - --disable-telemetry Disable anonymized telemetry reports - for more information please visit https://www.ory.sh/docs/ecosystem/sqa (default true) - -h, --help help for serve - --sqa-opt-out Disable anonymized telemetry reports - for more information please visit https://www.ory.sh/docs/ecosystem/sqa (default true) -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/circleci/keto.yml]) -``` - -### SEE ALSO - -- [keto](keto) - Global and consistent permission and authorization server diff --git a/docs/versioned_docs/version-v0.7/cli/keto-status.md b/docs/versioned_docs/version-v0.7/cli/keto-status.md deleted file mode 100644 index f50281060..000000000 --- a/docs/versioned_docs/version-v0.7/cli/keto-status.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -id: keto-status -title: keto status -description: keto status Get the status of the upstream Keto instance ---- - - - -## keto status - -Get the status of the upstream Keto instance - -### Synopsis - -Get a status report about the upstream Keto instance. Can also block until the -service is healthy. - -``` -keto status [flags] -``` - -### Options - -``` - -b, --block block until the service is healthy - --endpoint string which endpoint to use; one of {read, write} (default "read") - -h, --help help for status - -q, --quiet Be quiet with output printing. - --read-remote string Remote URL of the read API endpoint. (default "127.0.0.1:4466") - --write-remote string Remote URL of the write API endpoint. (default "127.0.0.1:4467") -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/circleci/keto.yml]) -``` - -### SEE ALSO - -- [keto](keto) - Global and consistent permission and authorization server diff --git a/docs/versioned_docs/version-v0.7/cli/keto-version.md b/docs/versioned_docs/version-v0.7/cli/keto-version.md deleted file mode 100644 index 99b146c84..000000000 --- a/docs/versioned_docs/version-v0.7/cli/keto-version.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -id: keto-version -title: keto version -description: keto version Show the build version, build time, and git hash ---- - - - -## keto version - -Show the build version, build time, and git hash - -``` -keto version [flags] -``` - -### Options - -``` - -h, --help help for version -``` - -### Options inherited from parent commands - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/circleci/keto.yml]) -``` - -### SEE ALSO - -- [keto](keto) - Global and consistent permission and authorization server diff --git a/docs/versioned_docs/version-v0.7/cli/keto.md b/docs/versioned_docs/version-v0.7/cli/keto.md deleted file mode 100644 index 071746245..000000000 --- a/docs/versioned_docs/version-v0.7/cli/keto.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -id: keto -title: keto -description: keto Global and consistent permission and authorization server ---- - - - -## keto - -Global and consistent permission and authorization server - -### Options - -``` - -c, --config strings Config files to load, overwriting in the order specified. (default [/home/circleci/keto.yml]) - -h, --help help for keto -``` - -### SEE ALSO - -- [keto check](keto-check) - Check whether a subject has a relation on an object -- [keto expand](keto-expand) - Expand a subject set -- [keto migrate](keto-migrate) - Commands to migrate the database -- [keto namespace](keto-namespace) - Read and manipulate namespaces -- [keto relation-tuple](keto-relation-tuple) - Read and manipulate relation - tuples -- [keto serve](keto-serve) - Starts the server and serves the HTTP REST and gRPC - APIs -- [keto status](keto-status) - Get the status of the upstream Keto instance -- [keto version](keto-version) - Show the build version, build time, and git - hash diff --git a/docs/versioned_docs/version-v0.7/concepts/api-overview.mdx b/docs/versioned_docs/version-v0.7/concepts/api-overview.mdx deleted file mode 100644 index 8b1267fb1..000000000 --- a/docs/versioned_docs/version-v0.7/concepts/api-overview.mdx +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: API Overview ---- - -This page gives an overview over all APIs Ory Keto offers, including common use -cases. - -The APIs are separated based on privileges into a `read` and `write` endpoint. -Each endpoint is exposed on a different port, so -[you can decide how to restrict access](../secure.md). gRPC and REST connections -are multiplexed on the same port. - -All APIs are available to gRPC and REST clients, although feature parity is not -always given. Because we follow gRPC and REST best practices and design -guidelines, the APIs offer slightly different interfaces and capabilities. - -## Read APIs - -The read-APIs are per default exposed on the TCP port `4466`. - -### List Relation Tuples - -This API allows you to query [relation tuples](./relation-tuples.mdx) by -providing a partial relation tuple. It can be used to: - -- [list objects a user has access to](../guides/list-api-display-objects.mdx#listing-objects) -- [list users who have a specific role](../guides/list-api-display-objects.mdx#listing-subjects) -- list users who are members of a specific group -- audit permissions in the system - -For more details, head over to the -[gRPC API reference](../reference/proto-api.mdx#readservice) or -[REST API reference](../reference/rest-api.mdx#query-relation-tuples). - -### Check Relation Tuple - -The check-API allows you to check whether a subject has a relation on an object. -This API resolves [subject sets](./subjects.mdx#subject-sets) and -[subject set rewrites](https://github.com/ory/keto/issues/263). - -This API is primarily used to -[check permissions to restrict actions](../guides/simple-access-check-guide.mdx). - -For more details, head over to the -[gRPC API reference](../reference/proto-api.mdx#checkservice) or -[REST API reference](../reference/rest-api.mdx#check-a-relation-tuple). - -### Expand Subject Sets - -The expand-API recursively expands a [subject set](./subjects.mdx#subject-sets) -into a tree of subjects. For each subject, the tree assembles the relation -tuples including the operands as defined in the -[namespace configuration](./namespaces.mdx). It can be used to: - -- [list who has access to an object](../guides/expand-api-display-who-has-access.mdx) -- determine why someone has access to an object -- audit permissions in the system - -An expand-request has to include the maximum depth of the tree to be returned. -This is required to ensure low latency and limit the resource usage per request. -To find out more about Ory Keto's performance, head over to the -[performance considerations](../performance.mdx). - -For more details, head over to the -[gRPC API reference](../reference/proto-api.mdx#expandservice) or -[REST API reference](../reference/rest-api.mdx#getexpand). - -## Write APIs - -The write-APIs are per default exposed on the TCP port `4467`. - -### Change Relation Tuples - -The write-APIs offer multiple ways to insert and delete relation tuples. Please -head over to the [gRPC API reference](../reference/proto-api.mdx#writeservice) -or [REST API reference](../reference/rest-api.mdx#write) to read more about the -available methods for each client type. - -In general, it is preferred to use the transaction based methods over repeatedly -calling simple methods for bulk updates. This is not only because they provide -stronger consistency guarantees, but also because the database usually handles a -single transaction with a lot of data faster than a lot of small transactions. - -The main use cases for the write-APIs are: - -- setting up permissions for a new object -- sharing an object with another user -- revoking access to an object -- transferring relations to an object to another user diff --git a/docs/versioned_docs/version-v0.7/concepts/graph-of-relations.mdx b/docs/versioned_docs/version-v0.7/concepts/graph-of-relations.mdx deleted file mode 100644 index dd8c209a6..000000000 --- a/docs/versioned_docs/version-v0.7/concepts/graph-of-relations.mdx +++ /dev/null @@ -1,92 +0,0 @@ ---- -title: The Graph of Relations ---- - -import Mermaid from '@theme/Mermaid' - -The [relation tuples](./relation-tuples.mdx) of the ACL used by Ory Keto can be -represented as a graph of relations. This graph will help us to understand many -[implications on performance](../performance.mdx) and -[internal algorithms](./internal-algorithms.mdx). - -## Definition - -The graph consists of three types of nodes. [Object](./objects.mdx) nodes that -represent application objects, intermediary -[subject set](./subjects.mdx#subject-sets) nodes, and -[subject ID](./subjects.mdx#subject-ids) nodes representing individuals. Edges -are directed and represent the relation between an object and subject. - -## Example - -The following example translates a view relation tuples into the corresponding -graph of relations. - -:::note - -This example omits the [namespace](./namespaces.mdx) from all data to improve -readability. In practice, the namespace always has to be considered. - -::: - -```keto-relation-tuples -// user1 has access on dir1 -dir1#access@user1 -// Have a look on the subjects concept page if you don't know the empty relation. -dir1#child@(file1#) -// Everyone with access to dir1 has access to file1. This would probably be defined -// through a subject set rewrite that defines this inherited relation globally. -// In this example, we define this tuple explicitly. -file1#access@(dir1#access) -// Direct access on file2 was granted. -file2#access@user1 -// user2 is owner of file2 -file2#owner@user2 -// Owners of file2 have access to it; possibly defined through subject set rewrites. -file2#access@(file2#owner) -``` - -This is represented by the following graph: - -|child| E - G[file2] - end - subgraph subjID [Subject ID region] - F([user1]) - C([user2]) - end - A -->|access| B{{dir1#access}} - B -. file1#access .-> F - E -->|access| F - G -->|access| F - G -->|owner| C - G -->|access| H{{file2#owner}} - H -. file2#access .-> C -`} -/> - -Solid edges represent explicitly defined relations, while dotted edges represent -relations inherited through a subject set. - -## Observations about the Graph - -Ory Keto utilizes the following key properties of the graph of relations: - -1. **Directed edges from objects to subjects**: This implies a neat arrangement - with objects in one region, subject IDs in another one, and subject sets in - between. Edges will always go from the object region towards the subject - region. -2. **Searching for a possible path is local**: Trying to find a path from an - object to a subject will always happen locally. This means that it is only - necessary to traverse the nodes that are successors of the object. In typical - setups, this means that only a small fraction of the graph has to be - searched, regardless of the outcome. The intuition here is that the relations - of user1's files are irrelevant when checking access to user2's files. - -Both of these properties are important to ensure -[high performance](../performance.mdx). diff --git a/docs/versioned_docs/version-v0.7/concepts/internal-algorithms.mdx b/docs/versioned_docs/version-v0.7/concepts/internal-algorithms.mdx deleted file mode 100644 index b8203781d..000000000 --- a/docs/versioned_docs/version-v0.7/concepts/internal-algorithms.mdx +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Internal Algorithms ---- - -This page gives an overview over the internal algorithms used to traverse the -[graph of relations](./graph-of-relations.mdx). This page is still under -development and will be finalized once the code is stable. Please head over to -[the corresponding issue](https://github.com/ory/keto/issues/483) for the -current state. diff --git a/docs/versioned_docs/version-v0.7/concepts/namespaces.mdx b/docs/versioned_docs/version-v0.7/concepts/namespaces.mdx deleted file mode 100644 index 8e903f147..000000000 --- a/docs/versioned_docs/version-v0.7/concepts/namespaces.mdx +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: Namespaces ---- - -Ory Keto knows the concept of namespaces to organize -[relation tuples](./relation-tuples.mdx). Namespaces have a configuration that -defines the relations, and some other important values -([see reference](./reference/configuration.md)). Unlike other applications, Ory -Keto does **not** isolate namespaces. Especially, [subject sets](./subjects.mdx) -can cross-reference from one namespace to another. The namespaces' purpose is to -split up the data into coherent partitions, each with its corresponding -configuration. Internally each namespace has its own table in the database to -allow setting individual -[storage specific options](https://github.com/ory/keto/issues/303). - -## Scoping of Objects - -The application can also use namespaces to scope [objects](./objects.mdx) -because Ory Keto only compares objects within a namespace. For example, if Ory -Keto knows the following relation tuples - -```keto-relation-tuples -// user1 has acces to the directory foo -directories:foo#access@user1 -// user2 has access to the file foo -files:foo#access@user2 -``` - -both of the following [check](./api-overview.mdx#check-relation-tuples) requests - -```keto-relation-tuples -// Does user2 have access to the directory foo? -directories:foo#access@user2 -// Does user1 have access to the file foo? -files:foo#access@user1 -``` - -will evaluate to false (a.k.a. rejected). - -Vice versa, all relation tuples containing an object have to be in the same -namespace to reference the same object. - -## Naming Conventions - -Namespaces should be named after the plural of the type of objects they describe -(e.g. `files`, `chats`, `organizations`). Relations within a namespace should be -a word that describes what relation a subject has towards an object. As a rule -of thumb, every relation tuple should translate to an english sentence like so: - -> **Subject** has **relation** on **object** which is one of the **namespace**. - -Examples: - -```keto-relation-tuples -// good examples - - -files:8f427c01-c295-44f3-b43d-49c3a1042f35#write@02a3c847-c903-446a-a34f-dae74b4fab86 -groups:43784684-103e-44c0-9d6c-db9fb265f617#member@b8d00059-b803-4123-9d3d-b3613bfe7c1b -directories:803a87e9-0da0-486e-bc08-ef559dd8e034#child@(files:11488ab9-4ede-479f-add4-f1379da4ae43#_) -files:11488ab9-4ede-479f-add4-f1379da4ae43#parent@(directories:803a87e9-0da0-486e-bc08-ef559dd8e034#_) - -// bad examples - - -// namespace is not describing homogenous type of objects -tenant-1-objects:62237c27-19c3-4bb1-9cbc-a5a67372569b#access@7a012165-7b21-495b-b84b-cf4e1a21b484 -// relation describes a relation of the object towards the subject -directories:803a87e9-0da0-486e-bc08-ef559dd8e034#parent@(files:11488ab9-4ede-479f-add4-f1379da4ae43#_) -``` diff --git a/docs/versioned_docs/version-v0.7/concepts/objects.mdx b/docs/versioned_docs/version-v0.7/concepts/objects.mdx deleted file mode 100644 index 541913751..000000000 --- a/docs/versioned_docs/version-v0.7/concepts/objects.mdx +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: Objects ---- - -Objects are identifiers for some kind of application objects. They can represent -e.g. a file, network port, physical item, ... . It is up to the application to -map its objects to an unambiguous identifier. The limit on object identifiers is -64 characters. We recommend the usage of UUIDs as they provide a high entropy -and thus unique identifiers. It is however possible to use e.g. URLs or opaque -tokens of any kind. Please check the -[limitations](#advanced-example-using-application-information-within-keto-objects). -Ory Keto will consider objects equal iff their string representation is equal. - -## Basic Example - -In the basic case an application uses the same object identifiers as it uses -internally, e.g. a UUIDv4 like `61e75133-efff-4281-8148-a1806919f568` or SHA-1 -hash like `5c6f593a4e12970d647843f97846fd5ed18179eb`. - -Head over to the -[basic full feature example](../examples/olymp-file-sharing.mdx) to see an -example with some context. - -## Advanced Example: Using Application Information within Keto Objects - -Because the Keto client can use arbitrary strings as objects, it is tempting to -encode application data within the object. **We strongly discourage this -practice.** Instead, you should use a UUID to map application data to Keto -objects. This is required to ensure: - -1. single source of truth and easy data update -2. free choice of encoding (Keto does not allow the characters `:#@`) -3. unlimited data size (Keto only allows up to 64 characters) - -For example, this could be used to implement checks on value ranges. The -application knows the following mapping of comparison conditions and UUIDs: - -```yml -f832e1e7-3c97-4cb8-8582-979e63ae2f1d: - greater_than: 5 - -c4540cf5-6ac4-4007-910b-c5a56aa3d4e6: - greater_than: 2 - smaller_equal: 5 -``` - -Keto has the following relation tuples: - -```keto-relation-tuples -// Members of the admins group are allowed to set a value v > 5 -values:f832e1e7-3c97-4cb8-8582-979e63ae2f1d#set_value@(groups:admins#member) - -// Members of the devs group are allowed to set a value v: 2 < v <= 5 -values:c4540cf5-6ac4-4007-910b-c5a56aa3d4e6#set_value@(groups:devs#member) - -// Anyone who can set a value v > 5 can also set 2 < v <= 5 -values:c4540cf5-6ac4-4007-910b-c5a56aa3d4e6#set_value@(values:f832e1e7-3c97-4cb8-8582-979e63ae2f1d#set_value) -``` - -The application will have to translate an incoming "set value" request to the -corresponding condition the value fulfills. It is important to understand that -Ory Keto does **not** know how to interpret any of the information. Rather, the -application has to preprocess and map the value to the corresponding UUID. diff --git a/docs/versioned_docs/version-v0.7/concepts/relation-tuples.mdx b/docs/versioned_docs/version-v0.7/concepts/relation-tuples.mdx deleted file mode 100644 index 96099c139..000000000 --- a/docs/versioned_docs/version-v0.7/concepts/relation-tuples.mdx +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: Relation Tuples ---- - -Relation tuples are the underlying datatype of Ory Keto's access control -language. They encode relations between [objects](./objects.mdx) and -[subjects](./subjects.mdx). A relation tuple is associated with a -[namespace](./namespaces.mdx) where its relation has to be defined and -configured. The following -[BNF grammar](https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_form) describes -the encoding used in the documentation and within Ory Keto. - -:::note - -The namespace is often omitted in examples for readability, but is technically -always required. - -::: - -``` - ::= '#'relation'@' - ::= namespace':'object_id - ::= subject_id | - ::= '#'relation -``` - -A relation tuple - -```keto-relation-tuples -object#relation@subject -``` - -can be translated into the english sentence "Subject has relation on object". - -## Effect of a Relation Tuple - -The effect of a relation tuple is the effect of its relation as defined in the -[namespace configuration](./namespaces.mdx). It can be one of union (boolean -or), intersection (boolean and), or exclusion (boolean not). - -## Basic Example - -Head over to the -[basic full feature example](../examples/olymp-file-sharing.mdx) to see an -example with some context. diff --git a/docs/versioned_docs/version-v0.7/concepts/snaptokens-evaluation-consistency.mdx b/docs/versioned_docs/version-v0.7/concepts/snaptokens-evaluation-consistency.mdx deleted file mode 100644 index ea915402b..000000000 --- a/docs/versioned_docs/version-v0.7/concepts/snaptokens-evaluation-consistency.mdx +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: Consistency Guarantees provided by Snaptokens ---- - -This feature is not yet implemented, see -[the issue](https://github.com/ory/keto/issues/517). diff --git a/docs/versioned_docs/version-v0.7/concepts/subjects.mdx b/docs/versioned_docs/version-v0.7/concepts/subjects.mdx deleted file mode 100644 index 5c09c30a5..000000000 --- a/docs/versioned_docs/version-v0.7/concepts/subjects.mdx +++ /dev/null @@ -1,83 +0,0 @@ ---- -title: Subjects ---- - -In Ory Keto subjects are a recursive polymorphic datatype. They either refer to -a specific subject (e.g. user) by some application defined identifier, or a set -of subjects. - -## Subject IDs - -A subject ID can be any string. It is up to the application to map its users, -devices, ... to a constant, unique identifier. We recommend the usage of UUIDs -as they provide a high entropy. It is however possible to use e.g. URLs or -opaque tokens of any kind. Please check the -[limitations](#advanced-example-using-application-information-within-keto-subjects). -Ory Keto will consider subject IDs equal iff their string representation is -equal. - -## Subject Sets - -A subject set is the set of all subjects that have a specific relation on an -[object](./objects.mdx). They empower Ory Keto to be as flexible as you need it -by defining indirections. They can be used to realize e.g. -[RBAC](../guides/rbac.mdx) or -[inheritance of relations](../guides/access-control-inheritance.mdx). Subject -sets themselves can again indirect to subject sets. For a performant evaluation -of requests it is however required to follow some -[best practices](../performance.mdx). As a special case, subject sets can also -refer to an object by using the empty relation. Effectively, this is interpreted -as "any relation, even a non-existent one". - -Subject sets also represent all intermediary nodes in -[the graph of relations](./graph-of-relations.mdx). - -## Basic Example - -In the basic case an application uses the same subject identifiers as it uses -internally, e.g. a constant, unique username like `zepatrik` or preferably -UUIDv4 like `480158d4-0031-4412-9453-1bb0cdf76104`. - -Head over to the -[basic full feature example](../examples/olymp-file-sharing.mdx) to see an -example with some context. - -## Advanced Example: Using Application Information within Keto Subjects - -Because the Keto client can use arbitrary strings as subjects, it is tempting to -encode application data within the subject. **We strongly discourage this -practice.** Instead, you should use a UUID to map application data to Keto -subjects. This is required to ensure: - -1. single source of truth and easy data update -2. free choice of encoding (Keto does not allow the characters `:#@`) -3. unlimited data size (Keto only allows up to 64 characters) - -For example, this can be used to implement a crude ABAC system by mapping -attributes to a subject ID. The application can then define relation tuples that -reflect permissions depending on the value of attributes. It will have to map -each request to the subject representing the attributes. - -Let's assume the application knows the following mapping between attributes and -UUIDs: - -```yml -c5b6454f-f79c-4a6d-9e1b-b44e04b56009: - subnet: 192.168.0.0/24 - office_hours: true -``` - -Keto could then know the following relation tuple: - -```keto-relation-tuples -// allow access to TCP port 22 when the request originates from a specific subnet during office hours -tcp/22#access@c5b6454f-f79c-4a6d-9e1b-b44e04b56009 -``` - -The application has to map each incoming request to a subject string -representing the attributes of the request. Ory Keto will reply with a positive -[check response](./api-overview.mdx#check-relation-tuple) depending on the -string equality of the requested subject representing the attributes with the -known relation tuples. Remember that Ory Keto does **not** know how to interpret -any information stored in the relation tuples. Rather, the application has to -preprocess and map the value to the corresponding UUID. diff --git a/docs/versioned_docs/version-v0.7/contributing.md b/docs/versioned_docs/version-v0.7/contributing.md deleted file mode 100644 index 1873f64d3..000000000 --- a/docs/versioned_docs/version-v0.7/contributing.md +++ /dev/null @@ -1,268 +0,0 @@ ---- -id: contributing -title: Contribution Guidelines ---- - - - -# Contributing to Ory Keto - - - - -- [Introduction](#introduction) -- [FAQ](#faq) -- [How can I contribute?](#how-can-i-contribute) -- [Communication](#communication) -- [Contributing Code](#contributing-code) -- [Documentation](#documentation) -- [Disclosing vulnerabilities](#disclosing-vulnerabilities) -- [Code Style](#code-style) - - [Working with Forks](#working-with-forks) -- [Conduct](#conduct) - - - -## Introduction - -There are many ways in which you can contribute, beyond writing code. The goal -of this document is to provide a high-level overview of how you can get -involved. - -_Please note_: We take Ory Keto's security and our users' trust very seriously. -If you believe you have found a security issue in Ory Keto, please responsibly -disclose by contacting us at security@ory.sh. - -First: As a potential contributor, your changes and ideas are welcome at any -hour of the day or night, weekdays, weekends, and holidays. Please do not ever -hesitate to ask a question or send a pull request. - -If you are unsure, just ask or submit the issue or pull request anyways. You -won't be yelled at for giving it your best effort. The worst that can happen is -that you'll be politely asked to change something. We appreciate any sort of -contributions, and don't want a wall of rules to get in the way of that. - -That said, if you want to ensure that a pull request is likely to be merged, -talk to us! You can find out our thoughts and ensure that your contribution -won't clash or be obviated by Ory Keto's normal direction. A great way to do -this is via [Ory Keto Discussions](https://github.com/ory/keto/discussions) or -the [Ory Chat](https://www.ory.sh/chat). - -## FAQ - -- I am new to the community. Where can I find the - [Ory Community Code of Conduct?](https://github.com/ory/keto/blob/master/CODE_OF_CONDUCT.md) - -- I have a question. Where can I get - [answers to questions regarding Ory Keto?](#communication) - -- I would like to contribute but I am not sure how. Are there - [easy ways to contribute?](#how-can-i-contribute) - [Or good first issues?](https://github.com/search?l=&o=desc&q=label%3A%22help+wanted%22+label%3A%22good+first+issue%22+is%3Aopen+user%3Aory+user%3Aory-corp&s=updated&type=Issues) - -- I want to talk to other Ory Keto users. - [How can I become a part of the community?](#communication) - -- I would like to know what I am agreeing to when I contribute to Ory Keto. Does - Ory have - [a Contributors License Agreement?](https://cla-assistant.io/ory/keto) - -- I would like updates about new versions of Ory Keto. - [How are new releases announced?](https://ory.us10.list-manage.com/subscribe?u=ffb1a878e4ec6c0ed312a3480&id=f605a41b53) - -## How can I contribute? - -If you want to start contributing code right away, we have a -[list of good first issues](https://github.com/ory/keto/labels/good%20first%20issue). - -There are many other ways you can contribute without writing any code. Here are -a few things you can do to help out: - -- **Give us a star.** It may not seem like much, but it really makes a - difference. This is something that everyone can do to help out Ory Keto. - Github stars help the project gain visibility and stand out. - -- **Join the community.** Sometimes helping people can be as easy as listening - to their problems and offering a different perspective. Join our Slack, have a - look at discussions in the forum and take part in our weekly hangout. More - info on this in [Communication](#communication). - -- **Helping with open issues.** We have a lot of open issues for Ory Keto and - some of them may lack necessary information, some are duplicates of older - issues. You can help out by guiding people through the process of filling out - the issue template, asking for clarifying information, or pointing them to - existing issues that match their description of the problem. - -- **Reviewing documentation changes.** Most documentation just needs a review - for proper spelling and grammar. If you think a document can be improved in - any way, feel free to hit the `edit` button at the top of the page. More info - on contributing to documentation [here](#documentation). - -- **Help with tests.** Some pull requests may lack proper tests or test plans. - These are needed for the change to be implemented safely. - -## Communication - -We use [Slack](https://www.ory.sh/chat). You are welcome to drop in and ask -questions, discuss bugs and feature requests, talk to other users of Ory, etc. - -Check out [Ory Keto Discussions](https://github.com/ory/keto/discussions). This -is a great place for in-depth discussions and lots of code examples, logs and -similar data. - -You can also join our community hangout, if you want to speak to the Ory team -directly or ask some questions. You can find more info on the hangouts in -[Slack](https://www.ory.sh/chat). - -If you want to receive regular notifications about updates to Ory Keto, consider -joining the mailing list. We will _only_ send you vital information on the -projects that you are interested in. - -Also [follow us on twitter](https://twitter.com/orycorp). - -## Contributing Code - -Unless you are fixing a known bug, we **strongly** recommend discussing it with -the core team via a GitHub issue or [in our chat](https://www.ory.sh/chat) -before getting started to ensure your work is consistent with Ory Keto's roadmap -and architecture. - -All contributions are made via pull requests. To make a pull request, you will -need a GitHub account; if you are unclear on this process, see GitHub's -documentation on [forking](https://help.github.com/articles/fork-a-repo) and -[pull requests](https://help.github.com/articles/using-pull-requests). Pull -requests should be targeted at the `master` branch. Before creating a pull -request, go through this checklist: - -1. Create a feature branch off of `master` so that changes do not get mixed up. -1. [Rebase](http://git-scm.com/book/en/Git-Branching-Rebasing) your local - changes against the `master` branch. -1. Run the full project test suite with the `go test -tags sqlite ./...` (or - equivalent) command and confirm that it passes. -1. Run `make format` if a `Makefile` is available, `gofmt -s` if the project is - written in Go, `npm run format` if the project is written for NodeJS. -1. Ensure that each commit has a descriptive prefix. This ensures a uniform - commit history and helps structure the changelog. - Please refer to this - [list of prefixes for Keto](https://github.com/ory/keto/blob/master/.github/semantic.yml) - for an overview. -1. Sign-up with CircleCI so that it has access to your repository with the - branch containing your PR. Simply creating a CircleCI account is sufficient - for the CI jobs to run, you do not need to setup a CircleCI project for the - branch. - -If a pull request is not ready to be reviewed yet -[it should be marked as a "Draft"](https://docs.github.com/en/github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request). - -Before your contributions can be reviewed you need to sign our -[Contributor License Agreement](https://cla-assistant.io/ory/keto). - -This agreement defines the terms under which your code is contributed to Ory. -More specifically it declares that you have the right to, and actually do, grant -us the rights to use your contribution. You can see the Apache 2.0 license under -which our projects are published -[here](https://github.com/ory/meta/blob/master/LICENSE). - -When pull requests fail testing, authors are expected to update their pull -requests to address the failures until the tests pass. - -Pull requests eligible for review - -1. follow the repository's code formatting conventions; -2. include tests which prove that the change works as intended and does not add - regressions; -3. document the changes in the code and/or the project's documentation; -4. pass the CI pipeline; -5. have signed our - [Contributor License Agreement](https://cla-assistant.io/ory/keto); -6. include a proper git commit message following the - [Conventional Commit Specification](https://www.conventionalcommits.org/en/v0.7.0-alpha.1/). - -If all of these items are checked, the pull request is ready to be reviewed and -you should change the status to "Ready for review" and -[request review from a maintainer](https://docs.github.com/en/github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review). - -Reviewers will approve the pull request once they are satisfied with the patch. - -## Documentation - -Please provide documentation when changing, removing, or adding features. -Documentation resides in the project's -[docs](https://github.com/ory/keto/tree/master/docs) folder. Generate API and -configuration reference documentation using `cd docs; npm run gen`. - -For further instructions please head over to -[docs/README.md](https://github.com/ory/keto/blob/master/README.md). - -## Disclosing vulnerabilities - -Please disclose vulnerabilities exclusively to -[security@ory.sh](mailto:security@ory.sh). Do not use GitHub issues. - -## Code Style - -Please follow these guidelines when formatting source code: - -- Go code should match the output of `gofmt -s` and pass `golangci-lint run`. -- NodeJS and JavaScript code should be prettified using `npm run format` where - appropriate. - -### Working with Forks - -``` -# First you clone the original repository -git clone git@github.com:ory/ory/keto.git - -# Next you add a git remote that is your fork: -git remote add fork git@github.com:/ory/keto.git - -# Next you fetch the latest changes from origin for master: -git fetch origin -git checkout master -git pull --rebase - -# Next you create a new feature branch off of master: -git checkout my-feature-branch - -# Now you do your work and commit your changes: -git add -A -git commit -a -m "fix: this is the subject line" -m "This is the body line. Closes #123" - -# And the last step is pushing this to your fork -git push -u fork my-feature-branch -``` - -Now go to the project's GitHub Pull Request page and click "New pull request" - -## Conduct - -Whether you are a regular contributor or a newcomer, we care about making this -community a safe place for you and we've got your back. - -- We are committed to providing a friendly, safe and welcoming environment for - all, regardless of gender, sexual orientation, disability, ethnicity, - religion, or similar personal characteristic. -- Please avoid using nicknames that might detract from a friendly, safe and - welcoming environment for all. -- Be kind and courteous. There is no need to be mean or rude. -- We will exclude you from interaction if you insult, demean or harass anyone. - In particular, we do not tolerate behavior that excludes people in socially - marginalized groups. -- Private harassment is also unacceptable. No matter who you are, if you feel - you have been or are being harassed or made uncomfortable by a community - member, please contact one of the channel ops or a member of the Ory Keto core - team immediately. -- Likewise any spamming, trolling, flaming, baiting or other attention-stealing - behaviour is not welcome. - -We welcome discussion about creating a welcoming, safe, and productive -environment for the community. If you have any questions, feedback, or concerns -[please let us know](https://www.ory.sh/chat). diff --git a/docs/versioned_docs/version-v0.7/examples/olymp-file-sharing.mdx b/docs/versioned_docs/version-v0.7/examples/olymp-file-sharing.mdx deleted file mode 100644 index 5525eea68..000000000 --- a/docs/versioned_docs/version-v0.7/examples/olymp-file-sharing.mdx +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: 'Basic: Olymp Library' ---- - -#### A basic, down-to-earth full feature example - -Consider a file sharing application called "Olymp Library". Each file is stored -in a key-value store, where the key is a UUIDv4 (pseudorandom unique -identifier), while the value is the metadata and content. The application uses -Ory Keto to keep track of ownership and granted access on a per file level. - -:::note - -This example assumes there is a [namespace](../concepts/namespaces.mdx) `files` -with the relations `owner` and `access` defined, where each `owner` of an object -also has `access` to that object. All relation tuples are stored in that -namespace. - -::: - -Now, the user identified by its unique username `demeter` wants to upload a file -containing the most fertile grounds. The file gets assigned the UUID -`ec788a82-a12e-45a4-b906-3e69f78c94e4`. The application adds the following -[relation tuple](../concepts/relation-tuples.mdx) to Ory Keto through the -[write-API](../concepts/api-overview.mdx#write-apis): - -```keto-relation-tuples -ec788a82-a12e-45a4-b906-3e69f78c94e4#owner@demeter -``` - -To prepare for an important meeting with the user `athena`, `demeter` wants to -share the file with fertile grounds with `athena` so that they can both read it. -Therefore, he opens the "Olymp Library" and is presented with a list of all -files he owns. The application will internally request all -[objects](../concepts/objects.mdx) (file IDs) with the owner `demeter` by using -the [list-API](../concepts/api-overview.mdx#list-relation-tuples). The response -will contain the object `ec788a82-a12e-45a4-b906-3e69f78c94e4`, which the -application maps to the file in question. - -The user `demeter` will then ask the application to share the file with -`athena`. The application will translate that request into a -[write-API request](../concepts/api-overview.mdx#write-apis) adding the -following relation tuple to Ory Keto: - -```keto-relation-tuples -ec788a82-a12e-45a4-b906-3e69f78c94e4#access@athena -``` - -To confirm the successful operation, the application uses Ory Keto's -[expand-API](../concepts/api-overview.mdx#expand-subject-sets) to compile a list -of everyone who can access the file: - -```keto-relation-tuples -// The following subject set is expanded by Keto -ec788a82-a12e-45a4-b906-3e69f78c94e4#access -``` - -which returns the expansion tree - -``` -∪ ec788a82-a12e-45a4-b906-3e69f78c94e4#access -├─ ∪ ec788a82-a12e-45a4-b906-3e69f78c94e4#owner -│ ├─ ☘ demeter -├─ ☘ athena -``` - -The "Olymp Library" can then display this information to `demeter`. - -When `athena` wants to get the file containing fertile grounds, the application -uses the [check-API](../concepts/api-overview.mdx#check-relation-tuple) to -verify that `athena` has access to the file before it returns the file. This -will allow `demeter` to revoke `athena`'s access at any point by deleting the -corresponding relation tuple. diff --git a/docs/versioned_docs/version-v0.7/guides/access-control-inheritance.mdx b/docs/versioned_docs/version-v0.7/guides/access-control-inheritance.mdx deleted file mode 100644 index 36040c0b4..000000000 --- a/docs/versioned_docs/version-v0.7/guides/access-control-inheritance.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Inheriting Access Control Rules ---- - -This guide will explain how to implement inheritance of ACL rules using Ory -Keto. It is still work in progress. If you happened to figure this out yourself, -please open a PR to add your findings on this page. diff --git a/docs/versioned_docs/version-v0.7/guides/access-control-list-design-best-practices.mdx b/docs/versioned_docs/version-v0.7/guides/access-control-list-design-best-practices.mdx deleted file mode 100644 index 34441063a..000000000 --- a/docs/versioned_docs/version-v0.7/guides/access-control-list-design-best-practices.mdx +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Best Practices for Designing your Access Control List ---- - -This guide is still a work in progress. Just a general word of warning: - -:::warning - -Avoid too deeply nested subject set indirections (more than ~5). - -::: diff --git a/docs/versioned_docs/version-v0.7/guides/expand-api-display-who-has-access.mdx b/docs/versioned_docs/version-v0.7/guides/expand-api-display-who-has-access.mdx deleted file mode 100644 index c1589530a..000000000 --- a/docs/versioned_docs/version-v0.7/guides/expand-api-display-who-has-access.mdx +++ /dev/null @@ -1,100 +0,0 @@ ---- -title: 'Expand API: Display who has Access to an Object' ---- - -import CodeTabs from '@theme/CodeTabs' - -This guide will explain how to use Ory Keto's expand-API to display who has -access to an object, and why. Please refer to the -[gRPC](../reference/proto-api.mdx) and [REST](../reference/rest-api.mdx) API -reference documentation for all details. In general, the expand-API allows to -expand a given subject set into all its effective subjects. - -## Example - -As an example, we want to look at a file sharing application. Files are -hierarchically organized in a directory structure. Every user owns files and -directories, and can grant any other user access to them on a per-file or -per-directory basis. Users can only see and access files they own or were -granted access by the owner. - -Directories and files are stored in Ory Keto within the `directories` and -`files` namespaces respectively. They are identified by a UUID that the -application maps to the actual object metadata. Users are also identified by and -mapped to a UUID. - -:::info - -For the sake of readability, the code samples use the object path and user name -instead. Please refer to the [objects](../concepts/objects.mdx) and -[subjects](../concepts/subjects.mdx) pages for why the mapping is necessary. - -::: - -### Displaying who has Access - -To assist users with managing permissions for their files, the application has -to display exactly who has access to a file and why. In this example, we assume -that the application knows the following files and directories: - -``` -├─ photos (owner: maureen; shared with laura) - ├─ beach.jpg (owner: maureen) - ├─ mountains.jpg (owner: laura) -``` - -This is represented in Ory Keto by the following -[relation tuples](../concepts/relation-tuples.mdx): - -```keto-relation-tuples -// ownership -directories:/photos#owner@maureen -files:/photos/beach.jpg#owner@maureen -files:/photos/mountains.jpg#owner@laura - -// maureen granted access to /photos to laura -directories:/photos#access@laura - -// the following tuples are defined implicitly through subject set rewrites (not supported yet) -directories:/photos#access@(directories:/photos#owner) -files:/photos/beach.jpg#access@(files:/photos/beach.jpg#owner) -files:/photos/beach.jpg#access@(directories:/photos#access) -files:/photos/mountains.jpg#access@(files:/photos/mountains.jpg#owner) -files:/photos/mountains.jpg#access@(directories:/photos#access) - -// the follwoing tuples are required to allow the subject set rewrites (not supported yet) -directories:/photos#parent@(files:/photos/beach.jpg#_) -directories:/photos#parent@(files:/photos/mountains.jpg#_) -``` - -The user `maureen` now wants to manage `access` for the file -`/photos/beach.jpg`. Therefore, the application uses the expand-API to get a -tree of everyone who has access to that file: - - - -### Maximum Tree Depth - -The `max-depth` parameter is important to keep the request latency within an -acceptable bound, but also abstract away the most basic subject sets. In many -cases the application does not want to resolve all subject sets, but rather -wants to display that e.g. `Everyone in the company` or `Admins` have a specific -relation. - -In this example the application knows the rough structure of the relation tuples -it uses and can therefore determine that `max-depth=3` is sufficient to display -all relevant relations: - -1. directly granted access (depth 1) -2. indirectly granted access through ownership (depth 2) -3. indirectly granted access through ownership of the parent (depth 3) - -### Analyzing the Tree - -The tree does not only include the subject IDs (in this case usernames), but -also for what reason they were included. This can be useful for users to audits -permissions. Also, in many cases the application would not want to list all -subject IDs but rather abstract away some subject sets. diff --git a/docs/versioned_docs/version-v0.7/guides/list-api-display-objects.mdx b/docs/versioned_docs/version-v0.7/guides/list-api-display-objects.mdx deleted file mode 100644 index 2e684c198..000000000 --- a/docs/versioned_docs/version-v0.7/guides/list-api-display-objects.mdx +++ /dev/null @@ -1,129 +0,0 @@ ---- -title: 'List API: Display all Objects a User has Access to' ---- - -import CodeTabs from '@theme/CodeTabs' - -In this guide you will learn how to use Ory Keto's list API to display a list of -all objects (e.g. files, ...) a user has access to. Please refer to the -[gRPC](../reference/proto-api.mdx) and [REST](../reference/rest-api.mdx) API -reference documentation for all details. In general, the list API allows you to -query relation tuples based on partial relation tuples. - -## Example - -As an example, we want to look at a chat application. Every user is part of one -or more chats, and each chat has one or more members. - -Chats are stored in Ory Keto within the `chats` namespace. They are identified -by a UUID that the application maps to the actual object metadata. Users are -also identified by and mapped to a UUID. - -:::info - -For the sake of readability, the code samples use the name of the chat and -username instead of the UUIDs. Please refer to the -[objects](../concepts/objects.mdx) and [subjects](../concepts/subjects.mdx) -pages for why the mapping is necessary. - -::: - -### Listing Objects - -Our example application allows users to browse the chats they belong to. To -achieve that, it uses Ory Keto's list API. - -We assume that the application currently has the following chats: - -```yml -memes: - members: - - PM - - Vincent - - Julia -cars: - members: - - PM - - Julia -coffee-break: - members: - - PM - - Vincent - - Julia - - Patrik -``` - -This is represented in Ory Keto by the following -[relation tuples](../concepts/relation-tuples.mdx): - -```keto-relation-tuples -chats:memes#member@PM -chats:memes#member@Vincent -chats:memes#member@Julia - -chats:cars#member@PM -chats:cars#member@Julia - -chats:coffee-break#member@PM -chats:coffee-break#member@Vincent -chats:coffee-break#member@Julia -chats:coffee-break#member@Patrik -``` - -The user `PM` now opens the chat application. To display a list of all of `PM`'s -chats, the application uses Keto's list API: - - - -As a response, the application gets the list of all chats the user `PM` is a -member of. It can then use the information to build the UI. - -### Listing Subjects - -Another view of the chat application has to display all members of a specific -group to the user. This can also be achieved using the list API. In cases where -such a membership would be modeled through -[subject sets](../concepts/subjects.mdx#subject-sets), you have to use the -[expand-API](./expand-api-display-who-has-access.mdx). - -:::caution - -In this case the application should probably first use the -[check-API](./simple-access-check-guide.mdx) to check whether the user is -allowed to list the members of a group. This step is not part of this example. - -::: - -In our example, a user wants to see who is a member of the `coffee-break` group: - - - -## Application Context - -It is important to note that the list API does **not** expand -[subject sets](../concepts/subjects.mdx#subject-sets). Usually the application -has some context to determine what tuples to query anyway. That could be e.g. -knowledge of the structure of subject sets like depth or hierarchy, or the UI -context, like a "My Items" view which should probably contain other objects than -a "My Organizations" or "Shared with Me" views. If there really is no way to -narrow down a query, you will have to use the -[expand-API](./expand-api-display-who-has-access) instead, or repeatedly call -the list API. Try to avoid such cases because they require a lot of resources -and can quickly degrade the service quality for all users. Please refer to the -[performance considerations](../performance.mdx). - -## Pagination - -The list API only returns paginated results. Currently, it is not possible to -customize the order of results. The response returns an opaque token that has to -be used to retrieve the following page. The first page can be retrieved by -passing no, or an empty token. - -The page size can be adjusted at any point, not only when requesting the first -page. It defaults to 100 items. diff --git a/docs/versioned_docs/version-v0.7/guides/production.md b/docs/versioned_docs/version-v0.7/guides/production.md deleted file mode 100644 index 97962b3a6..000000000 --- a/docs/versioned_docs/version-v0.7/guides/production.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -id: production -title: Going to Production ---- - -:::warning - -This document is still in development. - -::: - -## Database - -ORY Keto requires a production-grade database such as PostgreSQL, MySQL, -CockroachDB. Do not use SQLite in production! - -### Write API - -Never expose the ORY Keto Write API to the internet unsecured. Always require -authorization. A good practice is to not expose the Write API at all to the -public internet and use a Zero Trust Networking Architecture within your -intranet. - -## Scaling - -There are no additional requirements for scaling ORY Keto, just spin up another -container! diff --git a/docs/versioned_docs/version-v0.7/guides/rbac.mdx b/docs/versioned_docs/version-v0.7/guides/rbac.mdx deleted file mode 100644 index 52083459e..000000000 --- a/docs/versioned_docs/version-v0.7/guides/rbac.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Role Based Access Control (RBAC) ---- - -This guide will explain how to implement RBAC using Ory Keto. It is still work -in progress. If you happened to figure this out yourself, please open a PR to -add your findings on this page. diff --git a/docs/versioned_docs/version-v0.7/guides/simple-access-check-guide.mdx b/docs/versioned_docs/version-v0.7/guides/simple-access-check-guide.mdx deleted file mode 100644 index f61f03744..000000000 --- a/docs/versioned_docs/version-v0.7/guides/simple-access-check-guide.mdx +++ /dev/null @@ -1,144 +0,0 @@ ---- -title: Check whether a User has Access to Something ---- - -import Mermaid from '@theme/Mermaid' -import CodeTabs from '@theme/CodeTabs' - -This guide will explain how you can use Ory Keto's -[check-API](../concepts/api-overview.mdx#check-relation-tuple) to determine -whether a [subject](../concepts/subjects.mdx) has a specific -[relation](../concepts/relation-tuples.mdx) on an -[object](../concepts/objects.mdx). The result can be used for controlling access -to specific resources. - -## Synchronous Authorization Flow - -We recommend offloading the whole burden of access control to Ory Keto. -Typically, this means that the application forwards every incoming request as a -check request to Ory Keto. The following chart demonstrates how such a flow can -look like: - ->A: decypher(02y_15_4w350m3) - A->>K: check(messages:02y_15_4w350m3#35;decypher@john) -%% - alt is allowed - K-->>A: true - A-->>U: ory_is_awesome - else is not allowed - K-->>A: false - A-->>U: Error 403 - end -`} -/> - -Note that the channel of communication between user <-> application, and -application <-> Ory Keto can vastly differ. The application could offer a JSON -API towards the user, while communicating with Keto through gRPC. - -As a first step, the application has to authenticate the user reliably to -provide the subject to Keto. This can be achieved e.g. by using -[Ory Kratos](https://www.ory.sh/kratos/docs/) or any other authentication -system. - -The request (here `decypher` of the message `02y_15_4w350m3`) is then translated -into a request to Ory Keto's -[check-API](../concepts/api-overview.mdx#check-relation-tuple). Basically, the -application is asking Keto "Is john allowed to decypher the text -02y_15_4w350m3?" - -This question is encoded as the following -[relation tuple](../concepts/relation-tuples.mdx): - -```keto-relation-tuples -messages:02y_15_4w350m3#decypher@john -``` - -:::caution Important - -It is up to the application and its defined relation tuples how the check -requests have to be encoded. In this example we assume that the known cypher -messages are stored in Ory Keto and access to the cleartext is encoded by the -`decypher` relation. - -::: - -### Directly Defined Access - -Ory Keto can know the exact relation tuple that the application is checking. -Intuitively, this means that `john` was allowed to `decypher` the message -`02y_15_4w350m3` directly (imagine a "Share with `john`" input in a UI). - -Try this yourself by first adding the relation tuple using the -[write API](../concepts/api-overview.mdx#write-apis): - - - -Now, we can use the check-API to verify that `john` is allowed to `decypher` the -message: - - - -### Indirectly Defined Access - -On the other hand, it is possible to indirectly grant `john` access to the -resource. This could e.g. be done by adding a group, lets call it `hackers`. Now -we can grant access to the resource to everyone in that group by adding the -following relation tuple to Ory Keto: - -```keto-relation-tuples -messages:02y_15_4w350m3#decypher@(groups:hackers#member) -``` - -We also have to make `john` a `member` of `hackers` by adding the relation -tuple: - -```keto-relation-tuples -groups:hackers#member@john -``` - -Now, when Keto receives above check request, it will resolve the -[subject set](../concepts/subjects.mdx#subject-sets) - -```keto-relation-tuples -groups:hackers#member -``` - -and determine that `john` is a subject in the resulting set. Therefore, it -approves the check request. - -There is no limit on the number of indirections through subject sets. It is -however important to follow our -[best practices](./access-control-list-design-best-practices.mdx) to ensure a -good [performance](../performance.mdx). - -## Caching Keto's responses - -We do not recommend that you cache the responses from Ory Keto. It is designed -to respond quickly and still provide -[some consistency guarantees](../concepts/snaptokens-evaluation-consistency.mdx). -Especially, for the revocation of access it is important to not use a local -cache. Be ensured that Ory Keto heavily utilizes caching wherever possible. If -you still happen to find unacceptably slow check requests, check that you follow -our [best practices](./access-control-list-design-best-practices.mdx) for good -[performance](../performance.mdx), or open an issue if the problem still -persists. - -## Conclusion - -We learned how to integrate check requests and access control into an -application using Ory Keto's -[check-API](../concepts/api-overview.mdx#check-relation-tuple). diff --git a/docs/versioned_docs/version-v0.7/guides/v0.7-migration.mdx b/docs/versioned_docs/version-v0.7/guides/v0.7-migration.mdx deleted file mode 100644 index 827db4023..000000000 --- a/docs/versioned_docs/version-v0.7/guides/v0.7-migration.mdx +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: Migrating to Keto v0.7 ---- - -Ory Keto v0.6 used the table-separated namespaces database schema described in -the [Google Zanzibar paper](https://research.google/pubs/pub48190/). However, we -found for various reasons outlined in -[#613](https://github.com/ory/keto/issues/613) that this is not ideal for Keto. - -Because the database schema changed significantly, and it is not possible to -have SQL-only migrations, there is a special migration procedure needed to -upgrade Ory Keto v0.6. - -## Preparations - -:::danger - -As always with database migrations, please make a backup of your data and try -the migration process first on a non-production copy of the database. - -::: - -This migration has to download all the data from the database, transform them, -and then write them back to the database. Make sure that you run it as close to -the database as possible to reduce the latency and failure rate. In case of a -failure, just restart the process. It is run as one big SQL transaction. - -## Recommended Procedure - -:::caution - -This is the **recommended** procedure. Please adjust to your setup and **test** -before applying to a production system. You might want to create a migration -script that applies all these steps and handles errors. - -::: - -This procedure is zero-downtime only for read API requests. The write API will -not be available during migration. - -1. Create a new database user (from now on `keto_new`) with the same privileges - as the one used until now (let's say it was `keto`). -2. Start a server instance of Keto v0.7 next to the already running Keto v0.6. - It should have the same settings, but use `keto_new` for accessing the - database. -3. Change the privileges of `keto` to be read-only on all tables. -4. Still route all traffic to the old Keto. Write API requests will fail from - now on, but the Read API will be zero-downtime. -5. Run `keto migrate up --yes` considering the points raised in - [preparations](#preparations). This command will apply SQL schema changes, - but not yet migrate data. -6. Run `keto namespace migrate legacy --yes` considering the points raised in - [preparations](#preparations). This command will migrate **all** namespaces - **and** delete the old tables on success. -7. In case of failure, re-run the command until it succeeds. -8. In case of log statements stating - `Skipping relation tuple, it seems to be in a broken state. Please recreate it manually.` - note down the logged data somewhere and recreate the relation tuples in - question once the migration is done using the API. -9. After the migration is successfully done, route all traffic to Keto v0.7 and - shut down Keto v0.6. At this point the API is fully operational again. - -## Options for Adjusting the Migration Process - -The `keto namespace migrate legacy` command supports multiple options: - -- interactive mode with manual approval by not specifying `--yes` -- migrate single namespace by specifying its name as an argument -- only delete old tables by specifying `--down-only`; useful if you did not - approve the down migration previously diff --git a/docs/versioned_docs/version-v0.7/implemented-planned-features.mdx b/docs/versioned_docs/version-v0.7/implemented-planned-features.mdx deleted file mode 100644 index eb7917d64..000000000 --- a/docs/versioned_docs/version-v0.7/implemented-planned-features.mdx +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Implemented and Planned Features ---- - -In October 2020 we decided to rewrite Ory Keto from scratch, implementing -state-of-the-art access control and permissions. We decided to make Ory Keto the -first Open Source implementation of -[Google's Zanzibar paper](https://research.google/pubs/pub48190/). - -This document gives an overview of all implemented and planned features. -Unfortunately we cannot give delivery time estimates for Open Source products, -but you can help us to accelerate development by -[supporting Ory](https://opencollective.com/ory). - -## Implemented Features - -- [Read-API](https://github.com/ory/keto/pull/269) -- [Write-API](https://github.com/ory/keto/pull/275) -- [Check-API](https://github.com/ory/keto/pull/277) -- [Expand-API](https://github.com/ory/keto/pull/285) -- [Namespaces](https://github.com/ory/keto/pull/324) - -## Next Upcoming Features - -- [Subject Set rewrites](https://github.com/ory/keto/issues/263) -- [Native ABAC & RBAC Support](https://github.com/ory/keto/issues/319) -- [Integration with other policy servers](https://github.com/ory/keto/issues/318) - -## Planned Features - -- [Database sharding](https://github.com/ory/keto/issues/306) -- [Namespace-specific database settings](https://github.com/ory/keto/issues/303) -- [Cockroach optimized persistence layer](https://github.com/ory/keto/issues/504) -- [Latency reduction through aggressive caching](https://github.com/ory/keto/issues/312) - -... and many more, tracked as [issues](https://github.com/ory/keto/issues) diff --git a/docs/versioned_docs/version-v0.7/index.md b/docs/versioned_docs/version-v0.7/index.md deleted file mode 100644 index 141340a3c..000000000 --- a/docs/versioned_docs/version-v0.7/index.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -id: index -slug: / -title: Introduction ---- - -Ory Keto is the first and only open source implementation of "Zanzibar: Google's -Consistent, Global Authorization System": - -> Determining whether online users are authorized to access digital objects is -> central to preserving privacy. This paper presents the design, implementation, -> and deployment of Zanzibar, a global system for storing and evaluating access -> control lists. Zanzibar provides a uniform data model and configuration -> language for expressing a wide range of access control policies from hundreds -> of client services at Google, including Calendar, Cloud, Drive, Maps, Photos, -> and YouTube. Its authorization decisions respect causal ordering of user -> actions and thus provide external consistency amid changes to access control -> lists and object contents. Zanzibar scales to trillions of access control -> lists and millions of authorization requests per second to support services -> used by billions of people. It has maintained 95th-percentile latency of less -> than 10 milliseconds and availability of greater than 99.999% over 3 years of -> production use. -> -> [Source](https://research.google/pubs/pub48190/) - -If you need to know if a user (or robot, car, service) is allowed to do -something - Ory Keto is the right fit for you. - -Currently, Ory Keto implements the basic API contracts for managing and checking -relations ("permissions") with HTTP and gRPC APIs. Future versions will include -features such as userset rewrites (e.g. RBAC-style role-permission models), -Zookies, and more. An overview of what is implemented and upcoming can be found -at [Implemented and Planned Features](implemented-planned-features.mdx). diff --git a/docs/versioned_docs/version-v0.7/install.md b/docs/versioned_docs/version-v0.7/install.md deleted file mode 100644 index 8d4def870..000000000 --- a/docs/versioned_docs/version-v0.7/install.md +++ /dev/null @@ -1,84 +0,0 @@ ---- -id: install -title: Installation ---- - -Installing Ory Keto on any system is straightforward. We provide pre-built -binaries, Docker images, and support a number of package managers. - -## Docker - -We recommend using Docker to run Ory Keto: - -```shell -$ docker pull oryd/keto:v0.7.0-alpha.1 -$ docker run --rm -it oryd/keto:v0.7.0-alpha.1 help -``` - -## macOS - -You can install Ory Keto using [homebrew](https://brew.sh/) on macOS: - -```shell -$ brew tap ory/keto -$ brew install ory/keto/keto -$ keto help -``` - -## Linux - -On linux, you can use `bash <(curl ...)` to fetch the latest stable binary -using: - -```shell -$ bash <(curl https://raw.githubusercontent.com/ory/keto/master/install.sh) -b . v0.7.0-alpha.1 -$ ./keto help -``` - -You may want to move Ory Keto into your `$PATH`: - -```shell -$ sudo mv ./keto /usr/local/bin/ -$ keto help -``` - -## Windows - -You can install Ory Keto using [scoop](https://scoop.sh) on Windows: - -```shell -> scoop bucket add ory-keto https://github.com/ory/scoop-keto.git -> scoop install keto -> keto help -``` - -## Download Binaries - -The client and server **binaries are downloadable via -[GitHub releases](https://github.com/ory/keto/releases)**. There is currently no -installer available. You have to add the Keto binary to the PATH environment -variable yourself or put the binary in a location that is already in your -`$PATH`, for example `/usr/local/bin`. - -Once installed, you should be able to run: - -```shell -$ keto help -``` - -## Building from Source - -If you wish to compile Ory Keto yourself, you need to install and set up -[Go 1.16+](https://golang.org/) and add `$GOPATH/bin` to your `$PATH`. - -The following commands check out the latest release tag of Ory Keto, compile it, -and set up flags so that `keto version` works as expected. Please note that this -will only work with a Linux shell like bash or sh. - -```shell -$ git clone https://github.com/ory/keto.git -$ cd keto -$ git checkout v0.7.0-alpha.1 -$ make install -$ keto help -``` diff --git a/docs/versioned_docs/version-v0.7/milestones.md b/docs/versioned_docs/version-v0.7/milestones.md deleted file mode 100644 index cce99dee7..000000000 --- a/docs/versioned_docs/version-v0.7/milestones.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -id: milestones -title: Milestones and Roadmap ---- - -## [v0.7.0-alpha.1](https://github.com/ory/keto/milestone/5) - -The biggest change for the next release will be the new SQL table structure -(https://github.com/ory/keto/pull/638). The main goal is to improve the QoS, big -features are planned for the next release. - -### [Bug](https://github.com/ory/keto/labels/bug) - -Something is not working. - -#### Issues - -- [x] Check valid relation-tuple characters on insert - ([keto#661](https://github.com/ory/keto/issues/661)) -- [x] Keto version API does not work in REST API and CLI. - ([keto#696](https://github.com/ory/keto/issues/696)) - - [@Patrik](https://github.com/zepatrik) -- [x] Keto patch relation tuple REST API panic rather than return bad request - for wrong input. ([keto#706](https://github.com/ory/keto/issues/706)) - - [@Patrik](https://github.com/zepatrik) -- [x] Change REST API to not work with encoded subjects - ([keto#708](https://github.com/ory/keto/issues/708)) -- [x] Config schema: replace `ory://*` references with something actually - resolvable ([keto#719](https://github.com/ory/keto/issues/719)) - - [@Patrik](https://github.com/zepatrik) -- [x] Docker files and docker-compose.yml do not work on master - ([keto#725](https://github.com/ory/keto/issues/725)) - - [@Patrik](https://github.com/zepatrik) - -### [Feat](https://github.com/ory/keto/labels/feat) - -New feature or request. - -#### Issues - -- [x] Ensure telemetry is running for GRPC - ([keto#298](https://github.com/ory/keto/issues/298)) - - [@hackerman](https://github.com/aeneasr), - [@Patrik](https://github.com/zepatrik), - [@Robin Brämer](https://github.com/robinbraemer) -- [x] Single table migration: run as one big transaction - ([keto#734](https://github.com/ory/keto/issues/734)) - - [@Patrik](https://github.com/zepatrik) - -### [Docs](https://github.com/ory/keto/labels/docs) - -Affects documentation. - -#### Issues - -- [x] Document and improve go gRPC client import - ([keto#635](https://github.com/ory/keto/issues/635)) -- [x] Guide for data migration to new single table schema - ([keto#733](https://github.com/ory/keto/issues/733)) - - [@Patrik](https://github.com/zepatrik) - -### [Ci](https://github.com/ory/keto/labels/ci) - -Affects Continuous Integration (CI). - -#### Issues - -- [x] Document and improve go gRPC client import - ([keto#635](https://github.com/ory/keto/issues/635)) -- [x] Keto version API does not work in REST API and CLI. - ([keto#696](https://github.com/ory/keto/issues/696)) - - [@Patrik](https://github.com/zepatrik) -- [x] Config schema: replace `ory://*` references with something actually - resolvable ([keto#719](https://github.com/ory/keto/issues/719)) - - [@Patrik](https://github.com/zepatrik) - -### [Blocking](https://github.com/ory/keto/labels/blocking) - -Blocks milestones or other issues or pulls. - -#### Issues - -- [x] Ensure telemetry is running for GRPC - ([keto#298](https://github.com/ory/keto/issues/298)) - - [@hackerman](https://github.com/aeneasr), - [@Patrik](https://github.com/zepatrik), - [@Robin Brämer](https://github.com/robinbraemer) -- [x] Config schema: replace `ory://*` references with something actually - resolvable ([keto#719](https://github.com/ory/keto/issues/719)) - - [@Patrik](https://github.com/zepatrik) -- [x] Docker files and docker-compose.yml do not work on master - ([keto#725](https://github.com/ory/keto/issues/725)) - - [@Patrik](https://github.com/zepatrik) diff --git a/docs/versioned_docs/version-v0.7/performance.mdx b/docs/versioned_docs/version-v0.7/performance.mdx deleted file mode 100644 index ef2dcce4f..000000000 --- a/docs/versioned_docs/version-v0.7/performance.mdx +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: Performance ---- - -import Mermaid from '@theme/Mermaid' - -This document explains the time complexity of Ory Keto. Main memory complexity -will be analyzed and added at a later point. We only examine the evaluation -engines (check- and expand-API) as all other parts are mainly determined by -dependencies like your database of choice, or the de-/encoding of messages. -Examples given omit the namespace for clarity. - -## Check Engine - -In essence, the check-engine assumes that the relation tuples and their -indirections assemble an acyclic directed graph, known as -[the graph of relations](concepts/graph-of-relations). - -Consider the following example: - -```keto-relation-tuples -file#access@(file#owner) // probably defined via subjectset rewrites -file#access@user1 // access was granted directly -file#owner@user2 // file owner record; indirectly gets access -``` - -This is interpreted as the following graph: - -|access| B{{file#owner}} - A -->|owner| C([user2]) - A -->|access| D([user1]) - B -. file#access .-> C -`} -/> - -A check request of the form `object#relation@user` will be evaluated by -searching the graph starting at `object` going through `relation` trying to -reach `user`. The request is allowed iff there is such a path. - -The algorithm used in Ory Keto for this graph traversal is breadth-first search. -In the worst case it has a time complexity of `O(n+e)` where `n` is the number -of nodes reachable from the node `object#relation` through `e` edges. Space -complexity is `O(n)`. Rearranged, both space and time complexity are `O(b^d)` -where `b` is the maximum breadth and `d` the maximum depth in the graph, seen -from the search root. [[1]](#references) - -This means that the complexity heavily depends on the structure of the graph. If -it contains deeply nested indirections, it will require many recursive calls to -resolve those indirections. Analogously, if there are widely nested -indirections, Ory Keto has to possibly resolve all of them. The goal is to -design the ACL tuples in a way such that there are only view indirections to -resolve. Learn more in our -[best practices around ACL design](./guides/access-control-list-design-best-practices.mdx). - -Because of this we decided that generic benchmarks will not yield any meaningful -result. We will therefore add a comparison with other similar projects later on. - -## Expand Engine - -Similar to how the check-engine traverses the graph of relationtuples, the -expand-engine builds the tree of all set operations it encounters. It resolves -all indirections starting at the requested subjectset up to the specified depth. -Because it also uses breadth-first search, time and space complexity linearly -depend on the nodes reachable from the requested subjectset. The same -performance considerations apply here, while it is important to note that -requesting a low depth will further limit the complexity of the operation. The -returned tree can also exceed reasonable size limits quickly if the -relationtuples are deeply and/or widely nested. - -## References - -[[1] Breadth-first search](https://en.wikipedia.org/wiki/Breadth-first_search) -on Wikipedia diff --git a/docs/versioned_docs/version-v0.7/quickstart.mdx b/docs/versioned_docs/version-v0.7/quickstart.mdx deleted file mode 100644 index b706384c2..000000000 --- a/docs/versioned_docs/version-v0.7/quickstart.mdx +++ /dev/null @@ -1,151 +0,0 @@ ---- -title: 'Quickstart: Cat Videos Example' ---- - -This example describes a video sharing service. The individual videos are -organized in directories. Every directory has an owner and every video has the -same owner as it's parent directory. The owner has elevated privileges about the -video files that are not modeled individually in Ory Keto. The only other -privilege modeled in this example is "view access." Every owner has view access -to their objects, and this privilege can be granted to other users as well. The -video sharing application interprets the special `*` user ID as any user, -including anonymous users. Note that Ory Keto does not interpret this subject -any differently from other subjects. It also does not know anything about -directory structures or induced ownership. - -:::info Terminology - -The "Keto client" is the application interacting with Keto. In this case we -refer to the video sharing service backend as the Keto client. - -::: - -## Starting the Example - -First, [install Keto](./install.md). - -Now you can start the example using either `docker-compose` or a bash script. -The bash script requires you to have the `keto` binary in your `$PATH`. - -Alternatively, use Docker to automatically get the required images. - -```shell -# clone the repository if you don't have it yet -git clone git@github.com:ory/keto.git && cd keto - -docker-compose -f contrib/cat-videos-example/docker-compose.yml up -# or -./contrib/cat-videos-example/up.sh - -# output: all initially created relation tuples - -# NAMESPACE OBJECT RELATION NAME SUBJECT -# videos /cats/1.mp4 owner videos:/cats#owner -# videos /cats/1.mp4 view videos:/cats/1.mp4#owner -# videos /cats/1.mp4 view * -# videos /cats/2.mp4 owner videos:/cats#owner -# videos /cats/2.mp4 view videos:/cats/2.mp4#owner -# videos /cats owner cat lady -# videos /cats view videos:/cats#owner -``` - -## State of the System - -At the current state only one user with the username `cat lady` has added -videos. Both videos are in the `/cats` directory owned by `cat lady`. The file -`/cats/1.mp4` can be viewed by anyone (`*`), while `/cats/2.mp4` has no extra -sharing options, and can therefore only be viewed by its owner, `cat lady`. The -relation tuple definitions are located in the -`contrib/cat-videos-example/relation-tuples` directory. - -## Simulating the Video Sharing Application - -Now you can open a second terminal to run the queries against, just like the -video service client would do. In this example we will use the Keto CLI client. - -If you want to run the Keto CLI within **Docker**, set the alias - -```shell -alias keto="docker run -it --network cat-videos-example_default -e KETO_READ_REMOTE=\"keto:4466\" oryd/keto:v0.7.0-alpha.1" -``` - -in your terminal session. Alternatively, you need to set the remote endpoint so -that the Keto CLI knows where to connect to (not necessary if using Docker): - -```shell -export KETO_READ_REMOTE="127.0.0.1:4466" -``` - -### Check Incoming Requests - -First off, we get a request by an anonymous user that would like to view -`/cats/2.mp4`. The client now has to ask Keto if that operation should be -allowed or denied. - -```shell -# Is "*" allowed to "view" the object "videos":"/cats/2.mp4"? -keto check "*" view videos /cats/2.mp4 -# output: - -# Denied -``` - -We already discussed that this request should be denied, but it is always good -to see this in action. - -Now `cat lady` wants to change some view permissions of `/cats/1.mp4`. For this, -the video service application has to show all users that are currently allowed -to view the video. It uses Keto's -[expand-API](./concepts/api-overview.mdx#expand-subject-set) to get these data: - -```shell -# Who is allowed to "view" the object "videos":"/cats/2.mp4"? -keto expand view videos /cats/1.mp4 -# output: - -# ∪ videos:/cats/1.mp4#view -# ├─ ∪ videos:/cats/1.mp4#owner -# │ ├─ ∪ videos:/cats#owner -# │ │ ├─ ☘ cat lady️ -# ├─ ☘ *️ -``` - -Here we can see the full subject set expansion. The first branch - -```keto-relation-tuples -videos:/cats/1.mp4#view -``` - -indicates that every owner of the object is allowed to view - -```keto-relation-tuples -videos:/cats/1.mp4#owner -``` - -In the next step we see that the object's owners are the owners of `/cats` - -```keto-relation-tuples -videos:/cats#owner -``` - -Finally, we see that `cat lady` is the owner of `/cats`. - -Note that there is no direct relation tuple that would grant `cat lady` view -access on `/cats/1.mp4` as this is indirectly defined via the ownership -relation. - -The special user `*` on the other hand was directly granted view access on the -object, as it is a first-level leaf of the expansion tree. The following CLI -command proves that this is the case: - -```shell -# Is "*" allowed to "view" the object "videos":"/cats/1.mp4"? -keto check "*" view videos /cats/1.mp4 -# output: - -# Allowed -``` - - - -Updating the view permissions will be added here at a later stage. diff --git a/docs/versioned_docs/version-v0.7/reference/configuration.md b/docs/versioned_docs/version-v0.7/reference/configuration.md deleted file mode 100644 index 1ba38232c..000000000 --- a/docs/versioned_docs/version-v0.7/reference/configuration.md +++ /dev/null @@ -1,744 +0,0 @@ ---- -id: configuration -title: Configuration ---- - - - -You can load the config file from another source using the -`-c path/to/config.yaml` or `--config path/to/config.yaml` flag: -`keto --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. - -:::warning Disclaimer - -This reference configuration documents all keys, also deprecated ones! It is a -reference for all possible configuration values. - -If you are looking for an example configuration, it is better to try out the -[quickstart](../quickstart.mdx). - -::: - -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 Keto Configuration -# - -## serve ## -# -serve: - ## Write API (http and gRPC) ## - # - write: - ## Host ## - # - # The network interface to listen on. - # - # Examples: - # - localhost - # - 127.0.0.1 - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_WRITE_HOST= - # - Windows Command Line (CMD): - # > set SERVE_WRITE_HOST= - # - host: localhost - - ## Cross Origin Resource Sharing (CORS) ## - # - # Configure [Cross Origin Resource Sharing (CORS)](http://www.w3.org/TR/cors/) using the following options. - # - cors: - ## Allowed Origins ## - # - # A list of origins a cross-domain request can be executed from. If the special * value is present in the list, all origins will be allowed. An origin may contain a wildcard (*) to replace 0 or more characters (i.e.: http://*.domain.com). Usage of wildcards implies a small performance penality. Only one wildcard can be used per origin. - # - # Default value: * - # - # Examples: - # - - https://example.com - # - https://*.example.com - # - https://*.foo.example.com - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_WRITE_CORS_ALLOWED_ORIGINS= - # - Windows Command Line (CMD): - # > set SERVE_WRITE_CORS_ALLOWED_ORIGINS= - # - allowed_origins: - - https://example.com - - https://*.example.com - - https://*.foo.example.com - - ## Allowed HTTP Methods ## - # - # A list of methods the client is allowed to use with cross-domain requests. - # - # Default value: GET,POST,PUT,PATCH,DELETE - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_WRITE_CORS_ALLOWED_METHODS= - # - Windows Command Line (CMD): - # > set SERVE_WRITE_CORS_ALLOWED_METHODS= - # - allowed_methods: - - GET - - ## Allowed Request HTTP Headers ## - # - # A list of non simple headers the client is allowed to use with cross-domain requests. - # - # Default value: Authorization,Content-Type - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_WRITE_CORS_ALLOWED_HEADERS= - # - Windows Command Line (CMD): - # > set SERVE_WRITE_CORS_ALLOWED_HEADERS= - # - allowed_headers: - - '' - - ## Allowed Response HTTP Headers ## - # - # Indicates which headers are safe to expose to the API of a CORS API specification - # - # Default value: Content-Type - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_WRITE_CORS_EXPOSED_HEADERS= - # - Windows Command Line (CMD): - # > set SERVE_WRITE_CORS_EXPOSED_HEADERS= - # - exposed_headers: - - '' - - ## Allow HTTP Credentials ## - # - # Indicates whether the request can include user credentials like cookies, HTTP authentication or client side SSL certificates. - # - # Default value: false - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_WRITE_CORS_ALLOW_CREDENTIALS= - # - Windows Command Line (CMD): - # > set SERVE_WRITE_CORS_ALLOW_CREDENTIALS= - # - allow_credentials: false - - ## Maximum Age ## - # - # Indicates how long (in seconds) the results of a preflight request can be cached. The default is 0 which stands for no max age. - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_WRITE_CORS_MAX_AGE= - # - Windows Command Line (CMD): - # > set SERVE_WRITE_CORS_MAX_AGE= - # - max_age: -100000000 - - ## Enable Debugging ## - # - # Set to true to debug server side CORS issues. - # - # Default value: false - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_WRITE_CORS_DEBUG= - # - Windows Command Line (CMD): - # > set SERVE_WRITE_CORS_DEBUG= - # - debug: false - - ## Enable CORS ## - # - # If set to true, CORS will be enabled and preflight-requests (OPTION) will be answered. - # - # Default value: false - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_WRITE_CORS_ENABLED= - # - Windows Command Line (CMD): - # > set SERVE_WRITE_CORS_ENABLED= - # - enabled: false - - ## HTTPS ## - # - # Configure HTTP over TLS (HTTPS). All options can also be set using environment variables by replacing dots (`.`) with underscores (`_`) and uppercasing the key. For example, `some.prefix.tls.key.path` becomes `export SOME_PREFIX_TLS_KEY_PATH`. If all keys are left undefined, TLS will be disabled. - # - tls: - ## TLS Certificate (PEM) ## - # - cert: - ## base64 ## - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_WRITE_TLS_CERT_BASE64= - # - Windows Command Line (CMD): - # > set SERVE_WRITE_TLS_CERT_BASE64= - # - base64: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tXG5NSUlEWlRDQ0FrMmdBd0lCQWdJRVY1eE90REFOQmdr... - - ## path ## - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_WRITE_TLS_CERT_PATH= - # - Windows Command Line (CMD): - # > set SERVE_WRITE_TLS_CERT_PATH= - # - path: path/to/file.pem - - ## Private Key (PEM) ## - # - key: - ## base64 ## - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_WRITE_TLS_KEY_BASE64= - # - Windows Command Line (CMD): - # > set SERVE_WRITE_TLS_KEY_BASE64= - # - base64: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tXG5NSUlEWlRDQ0FrMmdBd0lCQWdJRVY1eE90REFOQmdr... - - ## path ## - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_WRITE_TLS_KEY_PATH= - # - Windows Command Line (CMD): - # > set SERVE_WRITE_TLS_KEY_PATH= - # - path: path/to/file.pem - - ## Port ## - # - # The port to listen on. - # - # Default value: 4467 - # - # Minimum value: 0 - # - # Maximum value: 65535 - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_WRITE_PORT= - # - Windows Command Line (CMD): - # > set SERVE_WRITE_PORT= - # - port: 0 - - ## Read API (http and gRPC) ## - # - read: - ## Host ## - # - # The network interface to listen on. - # - # Examples: - # - localhost - # - 127.0.0.1 - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_READ_HOST= - # - Windows Command Line (CMD): - # > set SERVE_READ_HOST= - # - host: localhost - - ## Cross Origin Resource Sharing (CORS) ## - # - # Configure [Cross Origin Resource Sharing (CORS)](http://www.w3.org/TR/cors/) using the following options. - # - cors: - ## Allowed Origins ## - # - # A list of origins a cross-domain request can be executed from. If the special * value is present in the list, all origins will be allowed. An origin may contain a wildcard (*) to replace 0 or more characters (i.e.: http://*.domain.com). Usage of wildcards implies a small performance penality. Only one wildcard can be used per origin. - # - # Default value: * - # - # Examples: - # - - https://example.com - # - https://*.example.com - # - https://*.foo.example.com - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_READ_CORS_ALLOWED_ORIGINS= - # - Windows Command Line (CMD): - # > set SERVE_READ_CORS_ALLOWED_ORIGINS= - # - allowed_origins: - - https://example.com - - https://*.example.com - - https://*.foo.example.com - - ## Allowed HTTP Methods ## - # - # A list of methods the client is allowed to use with cross-domain requests. - # - # Default value: GET,POST,PUT,PATCH,DELETE - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_READ_CORS_ALLOWED_METHODS= - # - Windows Command Line (CMD): - # > set SERVE_READ_CORS_ALLOWED_METHODS= - # - allowed_methods: - - GET - - ## Allowed Request HTTP Headers ## - # - # A list of non simple headers the client is allowed to use with cross-domain requests. - # - # Default value: Authorization,Content-Type - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_READ_CORS_ALLOWED_HEADERS= - # - Windows Command Line (CMD): - # > set SERVE_READ_CORS_ALLOWED_HEADERS= - # - allowed_headers: - - '' - - ## Allowed Response HTTP Headers ## - # - # Indicates which headers are safe to expose to the API of a CORS API specification - # - # Default value: Content-Type - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_READ_CORS_EXPOSED_HEADERS= - # - Windows Command Line (CMD): - # > set SERVE_READ_CORS_EXPOSED_HEADERS= - # - exposed_headers: - - '' - - ## Allow HTTP Credentials ## - # - # Indicates whether the request can include user credentials like cookies, HTTP authentication or client side SSL certificates. - # - # Default value: false - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_READ_CORS_ALLOW_CREDENTIALS= - # - Windows Command Line (CMD): - # > set SERVE_READ_CORS_ALLOW_CREDENTIALS= - # - allow_credentials: false - - ## Maximum Age ## - # - # Indicates how long (in seconds) the results of a preflight request can be cached. The default is 0 which stands for no max age. - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_READ_CORS_MAX_AGE= - # - Windows Command Line (CMD): - # > set SERVE_READ_CORS_MAX_AGE= - # - max_age: -100000000 - - ## Enable Debugging ## - # - # Set to true to debug server side CORS issues. - # - # Default value: false - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_READ_CORS_DEBUG= - # - Windows Command Line (CMD): - # > set SERVE_READ_CORS_DEBUG= - # - debug: false - - ## Enable CORS ## - # - # If set to true, CORS will be enabled and preflight-requests (OPTION) will be answered. - # - # Default value: false - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_READ_CORS_ENABLED= - # - Windows Command Line (CMD): - # > set SERVE_READ_CORS_ENABLED= - # - enabled: false - - ## HTTPS ## - # - # Configure HTTP over TLS (HTTPS). All options can also be set using environment variables by replacing dots (`.`) with underscores (`_`) and uppercasing the key. For example, `some.prefix.tls.key.path` becomes `export SOME_PREFIX_TLS_KEY_PATH`. If all keys are left undefined, TLS will be disabled. - # - tls: - ## TLS Certificate (PEM) ## - # - cert: - ## base64 ## - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_READ_TLS_CERT_BASE64= - # - Windows Command Line (CMD): - # > set SERVE_READ_TLS_CERT_BASE64= - # - base64: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tXG5NSUlEWlRDQ0FrMmdBd0lCQWdJRVY1eE90REFOQmdr... - - ## path ## - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_READ_TLS_CERT_PATH= - # - Windows Command Line (CMD): - # > set SERVE_READ_TLS_CERT_PATH= - # - path: path/to/file.pem - - ## Private Key (PEM) ## - # - key: - ## base64 ## - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_READ_TLS_KEY_BASE64= - # - Windows Command Line (CMD): - # > set SERVE_READ_TLS_KEY_BASE64= - # - base64: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tXG5NSUlEWlRDQ0FrMmdBd0lCQWdJRVY1eE90REFOQmdr... - - ## path ## - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_READ_TLS_KEY_PATH= - # - Windows Command Line (CMD): - # > set SERVE_READ_TLS_KEY_PATH= - # - path: path/to/file.pem - - ## Port ## - # - # The port to listen on. - # - # Default value: 4466 - # - # Minimum value: 0 - # - # Maximum value: 65535 - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export SERVE_READ_PORT= - # - Windows Command Line (CMD): - # > set SERVE_READ_PORT= - # - port: 0 - -## Profiling ## -# -# Enables CPU or memory profiling if set. For more details on profiling Go programs read [Profiling Go Programs](https://blog.golang.org/profiling-go-programs). -# -# One of: -# - cpu -# - mem -# - "" -# -# Set this value using environment variables on -# - Linux/macOS: -# $ export PROFILING= -# - Windows Command Line (CMD): -# > set PROFILING= -# -profiling: cpu - -## Log ## -# -# Configure logging using the following options. Logs will always be sent to stdout and stderr. -# -log: - ## Log Format ## - # - # The output format of log messages. - # - # Default value: text - # - # One of: - # - json - # - json_pretty - # - gelf - # - text - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export LOG_FORMAT= - # - Windows Command Line (CMD): - # > set LOG_FORMAT= - # - format: json - - ## Leak Sensitive Log Values ## - # - # If set will leak sensitive values (e.g. emails) in the logs. - # - # Default value: false - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export LOG_LEAK_SENSITIVE_VALUES= - # - Windows Command Line (CMD): - # > set LOG_LEAK_SENSITIVE_VALUES= - # - leak_sensitive_values: false - - ## Level ## - # - # The level of log entries to show. Debug enables stack traces on errors. - # - # Default value: info - # - # One of: - # - panic - # - fatal - # - error - # - warn - # - info - # - debug - # - trace - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export LOG_LEVEL= - # - Windows Command Line (CMD): - # > set LOG_LEVEL= - # - level: panic - -## tracing ## -# -# Configure distributed tracing. -# -tracing: - ## service_name ## - # - # Specifies the service name to use on the tracer. - # - # Examples: - # - Ory Hydra - # - Ory Kratos - # - Ory Keto - # - Ory Oathkeeper - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export TRACING_SERVICE_NAME= - # - Windows Command Line (CMD): - # > set TRACING_SERVICE_NAME= - # - service_name: Ory Hydra - - ## providers ## - # - providers: - ## zipkin ## - # - # Configures the zipkin tracing backend. - # - # Examples: - # - server_url: http://localhost:9411/api/v2/spans - # - zipkin: - ## server_url ## - # - # The address of Zipkin server where spans should be sent to. - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export TRACING_PROVIDERS_ZIPKIN_SERVER_URL= - # - Windows Command Line (CMD): - # > set TRACING_PROVIDERS_ZIPKIN_SERVER_URL= - # - server_url: http://localhost:9411/api/v2/spans - - ## jaeger ## - # - # Configures the jaeger tracing backend. - # - jaeger: - ## propagation ## - # - # The tracing header format - # - # Examples: - # - jaeger - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export TRACING_PROVIDERS_JAEGER_PROPAGATION= - # - Windows Command Line (CMD): - # > set TRACING_PROVIDERS_JAEGER_PROPAGATION= - # - propagation: jaeger - - ## max_tag_value_length ## - # - # The value passed to the max tag value length that has been configured. - # - # Minimum value: 0 - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export TRACING_PROVIDERS_JAEGER_MAX_TAG_VALUE_LENGTH= - # - Windows Command Line (CMD): - # > set TRACING_PROVIDERS_JAEGER_MAX_TAG_VALUE_LENGTH= - # - max_tag_value_length: 0 - - ## sampling ## - # - # Examples: - # - type: const - # value: 1 - # server_url: http://localhost:5778/sampling - # - sampling: - ## type ## - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export TRACING_PROVIDERS_JAEGER_SAMPLING_TYPE= - # - Windows Command Line (CMD): - # > set TRACING_PROVIDERS_JAEGER_SAMPLING_TYPE= - # - type: const - - ## value ## - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export TRACING_PROVIDERS_JAEGER_SAMPLING_VALUE= - # - Windows Command Line (CMD): - # > set TRACING_PROVIDERS_JAEGER_SAMPLING_VALUE= - # - value: 1 - - ## server_url ## - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export TRACING_PROVIDERS_JAEGER_SAMPLING_SERVER_URL= - # - Windows Command Line (CMD): - # > set TRACING_PROVIDERS_JAEGER_SAMPLING_SERVER_URL= - # - server_url: http://localhost:5778/sampling - - ## local_agent_address ## - # - # The address of the jaeger-agent where spans should be sent to. - # - # Examples: - # - 127.0.0.1:6831 - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export TRACING_PROVIDERS_JAEGER_LOCAL_AGENT_ADDRESS= - # - Windows Command Line (CMD): - # > set TRACING_PROVIDERS_JAEGER_LOCAL_AGENT_ADDRESS= - # - local_agent_address: 127.0.0.1:6831 - - ## provider ## - # - # Set this to the tracing backend you wish to use. Supports Jaeger, Zipkin DataDog, Elastic APM and Instana. If omitted or empty, tracing will be disabled. Use environment variables to configure DataDog (see https://docs.datadoghq.com/tracing/setup/go/#configuration). - # - # One of: - # - jaeger - # - zipkin - # - datadog - # - elastic-apm - # - instana - # - # Examples: - # - jaeger - # - # Set this value using environment variables on - # - Linux/macOS: - # $ export TRACING_PROVIDER= - # - Windows Command Line (CMD): - # > set TRACING_PROVIDER= - # - provider: jaeger - -## namespaces ## -# -# Namespace configuration or it's location. -# -# Default value: file://./keto_namespaces -# -# Set this value using environment variables on -# - Linux/macOS: -# $ export NAMESPACES= -# - Windows Command Line (CMD): -# > set NAMESPACES= -# -namespaces: http://a.aaa - -## The Keto version this config is written for. ## -# -# SemVer according to https://semver.org/ prefixed with `v` as in our releases. -# -# Set this value using environment variables on -# - Linux/macOS: -# $ export VERSION= -# - Windows Command Line (CMD): -# > set VERSION= -# -version: v0.7.0-alpha.1 - -## Data Source Name ## -# -# Sets the data source name. This configures the backend where ORY Keto persists data. If dsn is "memory", data will be written to memory and is lost when you restart this instance. ORY Hydra supports popular SQL databases. For more detailed configuration information go to: https://www.ory.sh/docs/hydra/dependencies-environment#sql -# -# Examples: -# - postgres://user:password@host:123/database -# - mysql://user:password@tcp(host:123)/database -# - memory -# -# Set this value using environment variables on -# - Linux/macOS: -# $ export DSN= -# - Windows Command Line (CMD): -# > set DSN= -# -dsn: postgres://user:password@host:123/database -``` diff --git a/docs/versioned_docs/version-v0.7/reference/proto-api.mdx b/docs/versioned_docs/version-v0.7/reference/proto-api.mdx deleted file mode 100644 index 756295f7a..000000000 --- a/docs/versioned_docs/version-v0.7/reference/proto-api.mdx +++ /dev/null @@ -1,275 +0,0 @@ ---- -title: Protocol Buffers API ---- - - - -The API is divided into the [read APIs](../concepts/api-overview.mdx#read-apis) -and [write APIs](../concepts/api-overview.mdx#write-apis). Each service is -annotated with the API it belongs to. - -## ory/keto/acl/v1alpha1/acl.proto - -### RelationTuple - -RelationTuple defines a relation between an Object and a Subject. - -| Field | Type | Label | Description | -| --------- | ----------------------------------------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------- | -| namespace | [string](#string) | | The namespace this relation tuple lives in. | -| object | [string](#string) | | The object related by this tuple. It is an object in the namespace of the tuple. | -| relation | [string](#string) | | The relation between an Object and a Subject. | -| subject | [Subject](#ory.keto.acl.v1alpha1.Subject) | | The subject related by this tuple. A Subject either represents a concrete subject id or a `SubjectSet` that expands to more Subjects. | - -### Subject - -Subject is either a concrete subject id or a `SubjectSet` expanding to more -Subjects. - -| Field | Type | Label | Description | -| ----- | ----------------------------------------------- | ----- | ----------------------------------------------------------------------------------------------------------------------- | -| id | [string](#string) | | A concrete id of the subject. | -| set | [SubjectSet](#ory.keto.acl.v1alpha1.SubjectSet) | | A subject set that expands to more Subjects. More information are available under [concepts](../concepts/subjects.mdx). | - -### SubjectSet - -SubjectSet refers to all subjects who have the same `relation` on an `object`. - -| Field | Type | Label | Description | -| --------- | ----------------- | ----- | ------------------------------------------------------------------------ | -| namespace | [string](#string) | | The namespace of the object and relation referenced in this subject set. | -| object | [string](#string) | | The object related by this subject set. | -| relation | [string](#string) | | The relation between the object and the subjects. | - -## ory/keto/acl/v1alpha1/check_service.proto - -### CheckService - -The service that performs authorization checks based on the stored Access -Control Lists. - -This service is part of the [read-APIs](../concepts/api-overview.mdx#read-apis). - -| Method Name | Request Type | Response Type | Description | -| ----------- | --------------------------------------------------- | ----------------------------------------------------- | -------------------------------- | -| Check | [CheckRequest](#ory.keto.acl.v1alpha1.CheckRequest) | [CheckResponse](#ory.keto.acl.v1alpha1.CheckResponse) | Performs an authorization check. | - -### CheckRequest - -The request for a CheckService.Check RPC. Checks whether a specific subject is -related to an object. - -| Field | Type | Label | Description | -| --------- | ----------------------------------------- | ----- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| namespace | [string](#string) | | The namespace to evaluate the check.
    Note: If you use the expand-API and the check evaluates a RelationTuple specifying a SubjectSet as subject or due to a rewrite rule in a namespace config this check request may involve other namespaces automatically. | -| object | [string](#string) | | The related object in this check. | -| relation | [string](#string) | | The relation between the Object and the Subject. | -| subject | [Subject](#ory.keto.acl.v1alpha1.Subject) | | The related subject in this check. | -| latest | [bool](#bool) | | This field is not implemented yet and has no effect. | -| snaptoken | [string](#string) | | This field is not implemented yet and has no effect. | - -### CheckResponse - -The response for a CheckService.Check rpc. - -| Field | Type | Label | Description | -| --------- | ----------------- | ----- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| allowed | [bool](#bool) | | Whether the specified subject (id) is related to the requested object.
    It is false by default if no ACL matches. | -| snaptoken | [string](#string) | | This field is not implemented yet and has no effect. | - -## ory/keto/acl/v1alpha1/expand_service.proto - -### ExpandService - -The service that performs subject set expansion based on the stored Access -Control Lists. - -This service is part of the [read-APIs](../concepts/api-overview.mdx#read-apis). - -| Method Name | Request Type | Response Type | Description | -| ----------- | ----------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------ | -| Expand | [ExpandRequest](#ory.keto.acl.v1alpha1.ExpandRequest) | [ExpandResponse](#ory.keto.acl.v1alpha1.ExpandResponse) | Expands the subject set into a tree of subjects. | - -### ExpandRequest - -The request for an ExpandService.Expand RPC. Expands the given subject set. - -| Field | Type | Label | Description | -| --------- | ----------------------------------------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| subject | [Subject](#ory.keto.acl.v1alpha1.Subject) | | The subject to expand. | -| max_depth | [int32](#int32) | | The maximum depth of tree to build. It is important to set this parameter to a meaningful value. Ponder how deep you really want to display this. | -| snaptoken | [string](#string) | | This field is not implemented yet and has no effect. | - -### ExpandResponse - -The response for a ExpandService.Expand RPC. - -| Field | Type | Label | Description | -| ----- | ------------------------------------------------- | ----- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | -| tree | [SubjectTree](#ory.keto.acl.v1alpha1.SubjectTree) | | The tree the requested subject set expands to. The requested subject set is the subject of the root.
    This field can be nil in some circumstances. | - -### SubjectTree - -| Field | Type | Label | Description | -| --------- | ------------------------------------------------- | -------- | ------------------------------------------------------------------------------------ | -| node_type | [NodeType](#ory.keto.acl.v1alpha1.NodeType) | | The type of the node. | -| subject | [Subject](#ory.keto.acl.v1alpha1.Subject) | | The subject this node represents. | -| children | [SubjectTree](#ory.keto.acl.v1alpha1.SubjectTree) | repeated | The children of this node.
    This is never set if `node_type` == `NODE_TYPE_LEAF`. | - -### NodeType - -| Name | Number | Description | -| ---------------------- | ------ | ---------------------------------------------------------------------------------------------------------- | -| NODE_TYPE_UNSPECIFIED | 0 | | -| NODE_TYPE_UNION | 1 | This node expands to a union of all children. | -| NODE_TYPE_EXCLUSION | 2 | Not implemented yet. | -| NODE_TYPE_INTERSECTION | 3 | Not implemented yet. | -| NODE_TYPE_LEAF | 4 | This node is a leaf and contains no children. Its subject is a `SubjectID` unless `max_depth` was reached. | - -## ory/keto/acl/v1alpha1/read_service.proto - -### ReadService - -The service to query relation tuples. - -This service is part of the [read-APIs](../concepts/api-overview.mdx#read-apis). - -| Method Name | Request Type | Response Type | Description | -| ------------------ | ----------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | -------------------------- | -| ListRelationTuples | [ListRelationTuplesRequest](#ory.keto.acl.v1alpha1.ListRelationTuplesRequest) | [ListRelationTuplesResponse](#ory.keto.acl.v1alpha1.ListRelationTuplesResponse) | Lists ACL relation tuples. | - -### ListRelationTuplesRequest - -Request for ReadService.ListRelationTuples RPC. See -`ListRelationTuplesRequest_Query` for how to filter the query. - -| Field | Type | Label | Description | -| ----------- | ----------------------------------------------------------------------------------------- | ----- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| query | [ListRelationTuplesRequest.Query](#ory.keto.acl.v1alpha1.ListRelationTuplesRequest.Query) | | All query constraints are concatenated with a logical AND operator.
    The RelationTuple list from ListRelationTuplesResponse is ordered from the newest RelationTuple to the oldest. | -| expand_mask | [google.protobuf.FieldMask](#google.protobuf.FieldMask) | | This field is not implemented yet and has no effect. | -| snaptoken | [string](#string) | | This field is not implemented yet and has no effect. | -| page_size | [int32](#int32) | | Optional. The maximum number of RelationTuples to return in the response.
    Default: 100 | -| page_token | [string](#string) | | Optional. An opaque pagination token returned from a previous call to `ListRelationTuples` that indicates where the page should start at.
    An empty token denotes the first page. All successive pages require the token from the previous page. | - -### ListRelationTuplesRequest.Query - -The query for listing relation tuples. Clients can specify any optional field to -partially filter for specific relation tuples. - -Example use cases (namespace is always required): - -- object only: display a list of all permissions referring to a specific object -- relation only: get all groups that have members; get all directories that have - content -- object & relation: display all subjects that have a specific permission - relation -- subject & relation: display all groups a subject belongs to; display all - objects a subject has access to -- object & relation & subject: check whether the relation tuple already exists - -| Field | Type | Label | Description | -| --------- | ----------------------------------------- | ----- | ------------------------------------ | -| namespace | [string](#string) | | Required. The namespace to query. | -| object | [string](#string) | | Optional. The object to query for. | -| relation | [string](#string) | | Optional. The relation to query for. | -| subject | [Subject](#ory.keto.acl.v1alpha1.Subject) | | Optional. The subject to query for. | - -### ListRelationTuplesResponse - -The response of a ReadService.ListRelationTuples RPC. - -| Field | Type | Label | Description | -| --------------- | ----------------------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------ | -| relation_tuples | [RelationTuple](#ory.keto.acl.v1alpha1.RelationTuple) | repeated | The relation tuples matching the list request. | -| next_page_token | [string](#string) | | The token required to get the next page. If this is the last page, the token will be the empty string. | - -## ory/keto/acl/v1alpha1/version.proto - -### VersionService - -The service returning the specific Ory Keto instance version. - -This service is part of the [read-APIs](../concepts/api-overview.mdx#read-apis) -and [write-APIs](../concepts/api-overview.mdx#write-apis). - -| Method Name | Request Type | Response Type | Description | -| ----------- | ------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------- | -| GetVersion | [GetVersionRequest](#ory.keto.acl.v1alpha1.GetVersionRequest) | [GetVersionResponse](#ory.keto.acl.v1alpha1.GetVersionResponse) | Returns the version of the Ory Keto instance. | - -### GetVersionRequest - -Request for the VersionService.GetVersion RPC. - -### GetVersionResponse - -Response of the VersionService.GetVersion RPC. - -| Field | Type | Label | Description | -| ------- | ----------------- | ----- | -------------------------------------------- | -| version | [string](#string) | | The version string of the Ory Keto instance. | - -## ory/keto/acl/v1alpha1/write_service.proto - -### WriteService - -The write service to create and delete Access Control Lists. - -This service is part of the -[write-APIs](../concepts/api-overview.mdx#write-apis). - -| Method Name | Request Type | Response Type | Description | -| ---------------------- | ------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | ----------------------------------------------------------- | -| TransactRelationTuples | [TransactRelationTuplesRequest](#ory.keto.acl.v1alpha1.TransactRelationTuplesRequest) | [TransactRelationTuplesResponse](#ory.keto.acl.v1alpha1.TransactRelationTuplesResponse) | Writes one or more relation tuples in a single transaction. | - -### RelationTupleDelta - -Write-delta for a TransactRelationTuplesRequest. - -| Field | Type | Label | Description | -| -------------- | ----------------------------------------------------------------------------- | ----- | -------------------------------------- | -| action | [RelationTupleDelta.Action](#ory.keto.acl.v1alpha1.RelationTupleDelta.Action) | | The action to do on the RelationTuple. | -| relation_tuple | [RelationTuple](#ory.keto.acl.v1alpha1.RelationTuple) | | The target RelationTuple. | - -### TransactRelationTuplesRequest - -The request of a WriteService.TransactRelationTuples RPC. - -| Field | Type | Label | Description | -| --------------------- | --------------------------------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------ | -| relation_tuple_deltas | [RelationTupleDelta](#ory.keto.acl.v1alpha1.RelationTupleDelta) | repeated | The write delta for the relation tuples operated in one single transaction. Either all actions succeed or no change takes effect on error. | - -### TransactRelationTuplesResponse - -The response of a WriteService.TransactRelationTuples rpc. - -| Field | Type | Label | Description | -| ---------- | ----------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| snaptokens | [string](#string) | repeated | This field is not implemented yet and has no effect. | - -### RelationTupleDelta.Action - -| Name | Number | Description | -| ------------------ | ------ | ----------------------------------------------------------------------------------------------------------- | -| ACTION_UNSPECIFIED | 0 | Unspecified. The `TransactRelationTuples` RPC ignores this RelationTupleDelta if an action was unspecified. | -| INSERT | 1 | Insertion of a new RelationTuple. It is ignored if already existing. | -| DELETE | 2 | Deletion of the RelationTuple. It is ignored if it does not exist. | - -## Scalar Value Types - -| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby | -| ------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | ------ | ---------- | ----------- | ------- | ---------- | -------------- | ------------------------------ | -| double | | double | double | float | float64 | double | float | Float | -| float | | float | float | float | float32 | float | float | Float | -| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | -| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum | -| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) | -| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) | -| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | -| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum | -| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) | -| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum | -| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | -| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum | -| bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | -| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | -| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) | diff --git a/docs/versioned_docs/version-v0.7/reference/rest-api.mdx b/docs/versioned_docs/version-v0.7/reference/rest-api.mdx deleted file mode 100644 index a1ebca3bc..000000000 --- a/docs/versioned_docs/version-v0.7/reference/rest-api.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -id: rest-api -hide_title: true -title: HTTP API Documentation -description: Ory Keto HTTP API Documentation -sidebar_label: HTTP API ---- - -import API from '@theme/API' -import spec from '../.static/api.json' - - diff --git a/docs/versioned_docs/version-v0.7/sdk/index.md b/docs/versioned_docs/version-v0.7/sdk/index.md deleted file mode 100644 index c94429855..000000000 --- a/docs/versioned_docs/version-v0.7/sdk/index.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -id: index -title: Overview ---- - -All SDKs use automated code generation provided by -[`openapi-generator`](https://github.com/OpenAPITools/openapi-generator) and -[protoc](https://github.com/protocolbuffers/protobuf). 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](../reference/rest-api.mdx) and [gRPC API](../reference/proto-api.mdx) -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: - -- [Dart](https://pub.dev/packages/ory_keto_client) -- [.NET](https://www.nuget.org/packages/Ory.Keto.Client/) -- [Go gRPC](https://github.com/ory/keto/blob/master/proto/go.mod) (import using - `go get github.com/ory/keto/proto`) -- [Go REST](https://github.com/ory/keto-client-go) -- [Java](https://search.maven.org/artifact/sh.ory.keto/keto-client) -- [PHP](https://packagist.org/packages/ory/keto-client) -- [Python](https://pypi.org/project/ory-keto-client/) -- [Ruby](https://rubygems.org/gems/ory-keto-client) -- [Rust](https://crates.io/crates/ory-keto-client) -- [NodeJS REST](https://www.npmjs.com/package/@ory/keto-client) (with - TypeScript) -- [NodeJS gRPC](https://www.npmjs.com/package/@ory/keto-grpc-client) (with - TypeScript) - -Take a look at the source: -[Generated SDKs for Ory Keto](https://github.com/ory/sdk/tree/master/clients/keto/) - -Missing your programming language? -[Create an issue](https://github.com/ory/keto/issues) and help us build, test -and publish the SDK for your programming language! diff --git a/docs/versioned_docs/version-v0.7/secure.md b/docs/versioned_docs/version-v0.7/secure.md deleted file mode 100644 index 988f4d133..000000000 --- a/docs/versioned_docs/version-v0.7/secure.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -id: secure -title: Secure ---- - -Similar to other services in our ecosystem, Ory Keto's APIs have no integrated -access control on their own. Any request made to any Keto API is considered -authenticated, authorized, and is thus being executed. However, these endpoints -are very sensitive as they define who is allowed to do what in your system. - -Please protect these endpoints using -[Ory Oathkeeper](https://github.com/ory/oathkeeper) or a comparable API Gateway. -How you protect them, is up to you. - -If you require support for this, consider [asking us](mailto:hi@ory.sh). diff --git a/docs/versioned_sidebars/version-v0.5-sidebars.json b/docs/versioned_sidebars/version-v0.5-sidebars.json deleted file mode 100644 index a0b215fd4..000000000 --- a/docs/versioned_sidebars/version-v0.5-sidebars.json +++ /dev/null @@ -1,145 +0,0 @@ -{ - "version-v0.5/docs": [ - { - "type": "category", - "label": "Introduction", - "items": [ - { - "type": "doc", - "id": "version-v0.5/index" - }, - { - "type": "doc", - "id": "version-v0.5/install" - } - ] - }, - { - "type": "category", - "label": "Guides", - "items": [ - { - "type": "doc", - "id": "version-v0.5/configure-deploy" - }, - { - "type": "doc", - "id": "version-v0.5/secure" - } - ] - }, - { - "type": "category", - "label": "Access Control Engines", - "items": [ - { - "type": "doc", - "id": "version-v0.5/engines/index" - }, - { - "type": "doc", - "id": "version-v0.5/engines/acl" - }, - { - "type": "doc", - "id": "version-v0.5/engines/rbac" - }, - { - "type": "doc", - "id": "version-v0.5/engines/acp-ory" - }, - { - "type": "doc", - "id": "version-v0.5/engines/acp-aws" - } - ] - }, - { - "type": "category", - "label": "Reference", - "items": [ - { - "type": "doc", - "id": "version-v0.5/reference/configuration" - }, - { - "type": "doc", - "id": "version-v0.5/reference/api" - } - ] - }, - { - "type": "category", - "label": "SDKs", - "items": [ - { - "type": "doc", - "id": "version-v0.5/sdk/index" - } - ] - }, - { - "type": "category", - "label": "ORY Kratos", - "items": [ - { - "type": "link", - "label": "Home", - "href": "https://www.ory.sh/kratos" - }, - { - "type": "link", - "label": "Docs", - "href": "https://www.ory.sh/kratos/docs" - }, - { - "type": "link", - "label": "GitHub", - "href": "https://github.com/ory/kratos" - } - ] - }, - { - "type": "category", - "label": "ORY Hydra", - "items": [ - { - "type": "link", - "label": "Home", - "href": "https://www.ory.sh/hydra" - }, - { - "type": "link", - "label": "Docs", - "href": "https://www.ory.sh/hydra/docs" - }, - { - "type": "link", - "label": "GitHub", - "href": "https://github.com/ory/hydra" - } - ] - }, - { - "type": "category", - "label": "ORY Oathkeeper", - "items": [ - { - "type": "link", - "label": "Home", - "href": "https://www.ory.sh/oathkeeper" - }, - { - "type": "link", - "label": "Docs", - "href": "https://www.ory.sh/oathkeeper/docs" - }, - { - "type": "link", - "label": "GitHub", - "href": "https://github.com/ory/oathkeeper" - } - ] - } - ] -} diff --git a/docs/versioned_sidebars/version-v0.6-sidebars.json b/docs/versioned_sidebars/version-v0.6-sidebars.json deleted file mode 100644 index e64f52897..000000000 --- a/docs/versioned_sidebars/version-v0.6-sidebars.json +++ /dev/null @@ -1,1540 +0,0 @@ -{ - "version-v0.6/docs": [ - { - "collapsed": true, - "type": "category", - "label": "Developer Documentation", - "items": [ - { - "collapsed": true, - "type": "category", - "label": "Introduction", - "items": [ - { - "label": "Welcome to Ory", - "type": "link", - "href": "https://www.ory.sh/docs/" - }, - { - "label": "Early Access", - "type": "link", - "href": "https://www.ory.sh/docs/early-access" - }, - { - "label": "Community", - "type": "link", - "href": "https://www.ory.sh/docs/ecosystem/community" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "Concepts", - "items": [ - { - "label": "Ory Projects", - "type": "link", - "href": "https://www.ory.sh/docs/concepts/project" - }, - { - "label": "Personal Access Tokens", - "type": "link", - "href": "https://www.ory.sh/docs/concepts/personal-access-token" - }, - { - "label": "Identity Data Model, Custom Fields", - "type": "link", - "href": "https://www.ory.sh/docs/concepts/identity" - }, - { - "label": "Self-Service (End-User)", - "type": "link", - "href": "https://www.ory.sh/docs/concepts/self-service" - }, - { - "label": "Sessions", - "type": "link", - "href": "https://www.ory.sh/docs/concepts/session" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "Guides", - "items": [ - { - "label": "Bring your own UI", - "type": "link", - "href": "https://www.ory.sh/docs/guides/ui" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "Further Reading", - "items": [ - { - "label": "API Design", - "type": "link", - "href": "https://www.ory.sh/docs/ecosystem/api-design" - }, - { - "label": "Software Architecture and Philosophy", - "type": "link", - "href": "https://www.ory.sh/docs/ecosystem/software-architecture-philosophy" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "Reference", - "items": [ - { - "collapsed": true, - "type": "category", - "label": "Command Line Interface (CLI)", - "items": [ - { - "label": "ory", - "type": "link", - "href": "https://www.ory.sh/docs/cli/ory" - }, - { - "label": "ory identities", - "type": "link", - "href": "https://www.ory.sh/docs/cli/ory-identities" - }, - { - "label": "ory identities delete", - "type": "link", - "href": "https://www.ory.sh/docs/cli/ory-identities-delete" - }, - { - "label": "ory identities get", - "type": "link", - "href": "https://www.ory.sh/docs/cli/ory-identities-get" - }, - { - "label": "ory identities list", - "type": "link", - "href": "https://www.ory.sh/docs/cli/ory-identities-list" - }, - { - "label": "ory proxy", - "type": "link", - "href": "https://www.ory.sh/docs/cli/ory-proxy" - }, - { - "label": "ory version", - "type": "link", - "href": "https://www.ory.sh/docs/cli/ory-version" - } - ] - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "Open Source Overview", - "items": [ - { - "label": "Projects", - "type": "link", - "href": "https://www.ory.sh/docs/ecosystem/projects" - }, - { - "label": "Software Versions and Project Maturity", - "type": "link", - "href": "https://www.ory.sh/docs/ecosystem/versioning" - }, - { - "label": "Configuring Ory services", - "type": "link", - "href": "https://www.ory.sh/docs/ecosystem/configuring" - }, - { - "label": "Software Updates", - "type": "link", - "href": "https://www.ory.sh/docs/ecosystem/upgrading" - }, - { - "label": "Contributing", - "type": "link", - "href": "https://www.ory.sh/docs/ecosystem/contributing" - }, - { - "label": "Roadmap", - "type": "link", - "href": "https://www.ory.sh/docs/ecosystem/roadmap" - } - ] - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "Open Source Documentation", - "items": [ - { - "collapsed": true, - "type": "category", - "label": "Ory Kratos", - "items": [ - { - "collapsed": true, - "type": "category", - "label": "Introduction", - "items": [ - { - "label": "Introduction", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/" - }, - { - "label": "Quickstart", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/quickstart" - }, - { - "label": "Installation", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/install" - }, - { - "label": "Configuring", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/configuring" - }, - { - "label": "Contribution Guidelines", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/contributing" - }, - { - "label": "Frequently Asked Questions (FAQ)", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/faq" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "Concepts", - "items": [ - { - "label": "Overview", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/concepts/index" - }, - { - "label": "Terminology", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/concepts/terminology" - }, - { - "label": "User Interface", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/concepts/ui-user-interface" - }, - { - "label": "Identity Data Model", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/concepts/identity-data-model" - }, - { - "collapsed": true, - "label": "Identity Credentials", - "type": "category", - "items": [ - { - "label": "Overview", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/concepts/credentials" - }, - { - "label": "Username / Email & Password", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/concepts/credentials/username-email-password" - }, - { - "label": "Social Sign In, OpenID Connect, and OAuth2", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/concepts/credentials/openid-connect-oidc-oauth2" - } - ] - }, - { - "label": "HTTP Redirection Configuration", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/concepts/browser-redirect-flow-completion" - }, - { - "label": "Out-of-band communication via E-Mail and SMS", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/concepts/email-sms" - }, - { - "label": "REST API Design", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/concepts/rest-api" - }, - { - "label": "Federation", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/concepts/federation" - }, - { - "label": "Threat Models and Security Profiles", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/concepts/security" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "Self Service (End-User)", - "items": [ - { - "label": "Self-Service Flows", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/self-service" - }, - { - "label": "User Registration", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/self-service/flows/user-registration" - }, - { - "label": "User Login", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/self-service/flows/user-login" - }, - { - "label": "User Settings and Profile Updates", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/self-service/flows/user-settings" - }, - { - "label": "Account Recovery and Password Reset", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/self-service/flows/account-recovery" - }, - { - "label": "Email and Phone Verification and Account Activation", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/self-service/flows/verify-email-account-activation" - }, - { - "label": "User Logout", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/self-service/flows/user-logout" - }, - { - "label": "User-Facing Errors", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/self-service/flows/user-facing-errors" - }, - { - "label": "MFA / 2FA", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/self-service/flows/2fa-mfa-multi-factor-authentication" - }, - { - "label": "Hooks", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/self-service/hooks" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "Administration", - "items": [ - { - "label": "Managing Users and Identities", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/admin/managing-users-identities" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "Guides", - "items": [ - { - "label": "Sign in with GitHub, GitLab, Google, Facebook, LinkedIn, Microsoft ...", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/guides/sign-in-with-github-google-facebook-linkedin" - }, - { - "label": "Configuring And Checking for Login Sessions", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/guides/login-session" - }, - { - "label": "Configuring Cookies", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/guides/configuring-cookies" - }, - { - "label": "Getting URLs and Cookies to Work on Multi-Domains", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/guides/multi-domain-cookies" - }, - { - "label": "Setting up Cross-origin resource sharing (CORS)", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/guides/setting-up-cors" - }, - { - "label": "Setting up Account Recovery and Password Reset", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/guides/account-recovery-password-reset" - }, - { - "label": "Setting up Account Activation and E-Mail Verification", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/guides/account-activation-email-verification" - }, - { - "label": "Zero Trust with IAP Proxy", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/guides/zero-trust-iap-proxy-identity-access-proxy" - }, - { - "label": "Multitenancy", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/guides/multi-tenancy-multitenant" - }, - { - "label": "Secret and Key Rotation", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/guides/secret-key-rotation" - }, - { - "label": "High Availability", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/guides/high-availability-ha" - }, - { - "label": "Docker Images", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/guides/docker" - }, - { - "label": "Setting up Argon2 Password Hashing Parameters", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/guides/setting-up-password-hashing-parameters" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "Reference", - "items": [ - { - "label": "Configuration", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/reference/configuration" - }, - { - "label": "JSON Schema and JSON Paths", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/reference/json-schema-json-paths" - }, - { - "label": "HTML Form Parser", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/reference/html-forms" - }, - { - "label": "REST API", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/reference/api" - }, - { - "collapsed": true, - "type": "category", - "label": "Command Line Interface (CLI)", - "items": [ - { - "label": "kratos", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos" - }, - { - "label": "kratos courier", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-courier" - }, - { - "label": "kratos courier watch", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-courier-watch" - }, - { - "label": "kratos hashers", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-hashers" - }, - { - "label": "kratos hashers argon2", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-hashers-argon2" - }, - { - "label": "kratos hashers argon2 calibrate", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-hashers-argon2-calibrate" - }, - { - "label": "kratos hashers argon2 hash", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-hashers-argon2-hash" - }, - { - "label": "kratos hashers argon2 load-test", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-hashers-argon2-load-test" - }, - { - "label": "kratos identities", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-identities" - }, - { - "label": "kratos identities delete", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-identities-delete" - }, - { - "label": "kratos identities get", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-identities-get" - }, - { - "label": "kratos identities import", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-identities-import" - }, - { - "label": "kratos identities list", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-identities-list" - }, - { - "label": "kratos identities patch", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-identities-patch" - }, - { - "label": "kratos identities validate", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-identities-validate" - }, - { - "label": "kratos jsonnet", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-jsonnet" - }, - { - "label": "kratos jsonnet format", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-jsonnet-format" - }, - { - "label": "kratos jsonnet lint", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-jsonnet-lint" - }, - { - "label": "kratos migrate", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-migrate" - }, - { - "label": "kratos migrate sql", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-migrate-sql" - }, - { - "label": "kratos remote", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-remote" - }, - { - "label": "kratos remote status", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-remote-status" - }, - { - "label": "kratos remote version", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-remote-version" - }, - { - "label": "kratos serve", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-serve" - }, - { - "label": "kratos version", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-version" - } - ] - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "Debug & Help", - "items": [ - { - "label": "Common Cookie and CSRF Pitfalls", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/debug/csrf" - }, - { - "label": "Performance Problems and Out Of Memory Panics Caused by Password Hashing", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/debug/performance-out-of-memory-password-hashing-argon2" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "SDKs", - "items": [ - { - "label": "SDKs", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/sdk" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "Development", - "items": [ - { - "label": "Milestones and Roadmap", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/milestones" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "Further Reading", - "items": [ - { - "label": "Comparison", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/further-reading/comparison" - }, - { - "label": "Video Tutorials", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/further-reading/kratos-video-tutorials" - } - ] - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "Ory Keto", - "items": [ - { - "collapsed": true, - "type": "category", - "label": "Introduction", - "items": [ - { - "type": "doc", - "id": "version-v0.6/index" - }, - { - "type": "doc", - "id": "version-v0.6/install" - }, - { - "type": "doc", - "id": "version-v0.6/implemented-planned-features" - }, - { - "type": "doc", - "id": "version-v0.6/performance" - }, - { - "type": "doc", - "id": "version-v0.6/quickstart" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "Concepts", - "items": [ - { - "type": "doc", - "id": "version-v0.6/concepts/relation-tuples" - }, - { - "type": "doc", - "id": "version-v0.6/concepts/namespaces" - }, - { - "type": "doc", - "id": "version-v0.6/concepts/objects" - }, - { - "type": "doc", - "id": "version-v0.6/concepts/subjects" - }, - { - "type": "doc", - "id": "version-v0.6/concepts/graph-of-relations" - }, - { - "type": "doc", - "id": "version-v0.6/concepts/api-overview" - }, - { - "type": "doc", - "id": "version-v0.6/concepts/internal-algorithms" - }, - { - "type": "doc", - "id": "version-v0.6/concepts/snaptokens-evaluation-consistency" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "Guides", - "items": [ - { - "type": "doc", - "id": "version-v0.6/secure" - }, - { - "type": "doc", - "id": "version-v0.6/guides/simple-access-check-guide" - }, - { - "type": "doc", - "id": "version-v0.6/guides/list-api-display-objects" - }, - { - "type": "doc", - "id": "version-v0.6/guides/expand-api-display-who-has-access" - }, - { - "type": "doc", - "id": "version-v0.6/guides/production" - }, - { - "type": "doc", - "id": "version-v0.6/guides/rbac" - }, - { - "type": "doc", - "id": "version-v0.6/guides/access-control-inheritance" - }, - { - "type": "doc", - "id": "version-v0.6/guides/access-control-list-design-best-practices" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "Examples", - "items": [ - { - "type": "doc", - "id": "version-v0.6/examples/olymp-file-sharing" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "Reference", - "items": [ - { - "type": "doc", - "id": "version-v0.6/reference/configuration" - }, - { - "type": "doc", - "id": "version-v0.6/reference/rest-api" - }, - { - "type": "doc", - "id": "version-v0.6/reference/proto-api" - }, - { - "collapsed": true, - "type": "category", - "label": "Command Line Interface (CLI)", - "items": [ - { - "type": "doc", - "id": "version-v0.6/cli/keto" - }, - { - "type": "doc", - "id": "version-v0.6/cli/keto-check" - }, - { - "type": "doc", - "id": "version-v0.6/cli/keto-expand" - }, - { - "type": "doc", - "id": "version-v0.6/cli/keto-migrate" - }, - { - "type": "doc", - "id": "version-v0.6/cli/keto-migrate-down" - }, - { - "type": "doc", - "id": "version-v0.6/cli/keto-migrate-status" - }, - { - "type": "doc", - "id": "version-v0.6/cli/keto-migrate-up" - }, - { - "type": "doc", - "id": "version-v0.6/cli/keto-namespace" - }, - { - "type": "doc", - "id": "version-v0.6/cli/keto-namespace-migrate" - }, - { - "type": "doc", - "id": "version-v0.6/cli/keto-namespace-migrate-down" - }, - { - "type": "doc", - "id": "version-v0.6/cli/keto-namespace-migrate-status" - }, - { - "type": "doc", - "id": "version-v0.6/cli/keto-namespace-migrate-up" - }, - { - "type": "doc", - "id": "version-v0.6/cli/keto-namespace-validate" - }, - { - "type": "doc", - "id": "version-v0.6/cli/keto-relation-tuple" - }, - { - "type": "doc", - "id": "version-v0.6/cli/keto-relation-tuple-create" - }, - { - "type": "doc", - "id": "version-v0.6/cli/keto-relation-tuple-delete" - }, - { - "type": "doc", - "id": "version-v0.6/cli/keto-relation-tuple-get" - }, - { - "type": "doc", - "id": "version-v0.6/cli/keto-relation-tuple-parse" - }, - { - "type": "doc", - "id": "version-v0.6/cli/keto-serve" - }, - { - "type": "doc", - "id": "version-v0.6/cli/keto-status" - }, - { - "type": "doc", - "id": "version-v0.6/cli/keto-version" - } - ] - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "SDKs", - "items": [ - { - "type": "doc", - "id": "version-v0.6/sdk/index" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "Development", - "items": [ - { - "type": "doc", - "id": "version-v0.6/milestones" - } - ] - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "Ory Hydra", - "items": [ - { - "collapsed": true, - "type": "category", - "label": "Introduction", - "items": [ - { - "label": "ORY Hydra", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/" - }, - { - "label": "5 Minute Tutorial", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/5min-tutorial" - }, - { - "label": "Installation", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/install" - }, - { - "label": "Contribution Guidelines", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/contributing" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "Concepts", - "items": [ - { - "label": "Do You Need OAuth2?", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/concepts/before-oauth2" - }, - { - "label": "OAuth 2.0", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/concepts/oauth2" - }, - { - "label": "OpenID Connect (OIDC)", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/concepts/openid-connect-oidc" - }, - { - "label": "Login Flow", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/concepts/login" - }, - { - "label": "Consent Flow", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/concepts/consent" - }, - { - "label": "Logout Flow", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/concepts/logout" - }, - { - "label": "JSON Web Key Sets", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/jwks" - }, - { - "label": "Limitations", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/limitations" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "Guides", - "items": [ - { - "collapsed": true, - "type": "category", - "label": "Implementing the User Interface", - "items": [ - { - "label": "Implementing the Login Endpoint", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/guides/login" - }, - { - "label": "Implementing the Consent Endpoint & UI", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/guides/consent" - }, - { - "label": "Implementing the Logout Endpoint & UI", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/guides/logout" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "Operations", - "items": [ - { - "label": "Run ORY Hydra in Docker", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/configure-deploy" - }, - { - "label": "Database Setup and Configuration", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/dependencies-environment" - }, - { - "label": "Preparing for Production", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/production" - }, - { - "label": "Distributed Tracing", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/guides/tracing" - }, - { - "label": "Secrets and Key Rotation", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/guides/secrets-key-rotation" - }, - { - "label": "Kubernetes Helm Chart", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/guides/kubernetes-helm-chart" - }, - { - "label": "SSL/TLS, HTTPS, Self-Signed Certificates", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/guides/ssl-https-tls" - }, - { - "label": "Configuring Cookies", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/guides/cookies" - }, - { - "label": "Scaling ORY Hydra", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/guides/scaling-hydra" - }, - { - "label": "Setting up Cross-origin resource sharing (CORS)", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/guides/cors" - }, - { - "label": "Gitlab Hydra integration", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/guides/gitlab" - }, - { - "label": "Migrating from MITREid", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/guides/migrating-from-mitreid" - }, - { - "label": "Merge multiple Hydra instances with different system.secrets", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/guides/merge-multiple-db-secrets" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "OAuth2 & OpenID Connect", - "items": [ - { - "label": "Advanced OAuth2 and OpenID Connect Flows", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/advanced" - }, - { - "label": "Creating OAuth 2.0 Clients", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/guides/oauth2-clients" - }, - { - "label": "Using Common OAuth2 and OpenID Connect Flows", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/guides/common-oauth2-openid-connect-flows" - }, - { - "label": "Using OAuth2", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/guides/using-oauth2" - }, - { - "label": "Configuring Expiration", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/guides/token-expiration" - }, - { - "label": "OAuth 2.0 Token Introspection", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/guides/oauth2-token-introspection" - }, - { - "label": "Mobile & Browser (Single-Page-App) with OAuth2", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/guides/oauth2-public-spa-mobile" - } - ] - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "Reference", - "items": [ - { - "label": "Configuration", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/reference/configuration" - }, - { - "label": "REST API", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/reference/api" - }, - { - "collapsed": true, - "type": "category", - "label": "Command Line Interface (CLI)", - "items": [ - { - "label": "hydra", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra" - }, - { - "label": "hydra clients", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-clients" - }, - { - "label": "hydra clients create", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-clients-create" - }, - { - "label": "hydra clients delete", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-clients-delete" - }, - { - "label": "hydra clients get", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-clients-get" - }, - { - "label": "hydra clients import", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-clients-import" - }, - { - "label": "hydra clients import", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-clients-import" - }, - { - "label": "hydra clients import", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-clients-import" - }, - { - "label": "hydra clients import", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-clients-import" - }, - { - "label": "hydra clients list", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-clients-list" - }, - { - "label": "hydra clients update", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-clients-update" - }, - { - "label": "hydra janitor", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-janitor" - }, - { - "label": "hydra keys", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-keys" - }, - { - "label": "hydra keys create", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-keys-create" - }, - { - "label": "hydra keys delete", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-keys-delete" - }, - { - "label": "hydra keys get", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-keys-get" - }, - { - "label": "hydra migrate", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-migrate" - }, - { - "label": "hydra migrate sql", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-migrate-sql" - }, - { - "label": "hydra serve", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-serve" - }, - { - "label": "hydra serve admin", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-serve-admin" - }, - { - "label": "hydra serve all", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-serve-all" - }, - { - "label": "hydra serve public", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-serve-public" - }, - { - "label": "hydra token", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-token" - }, - { - "label": "hydra token client", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-token-client" - }, - { - "label": "hydra token delete", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-token-delete" - }, - { - "label": "hydra token flush", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-token-flush" - }, - { - "label": "hydra token introspect", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-token-introspect" - }, - { - "label": "hydra token revoke", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-token-revoke" - }, - { - "label": "hydra token user", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-token-user" - }, - { - "label": "hydra version", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-version" - } - ] - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "Debug & Help", - "items": [ - { - "label": "Common Problems", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/debug" - }, - { - "label": "Common CSRF Pitfalls", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/debug/csrf" - }, - { - "label": "Debug Configuration", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/debug/config" - }, - { - "label": "Wrong Token Endpoint Auth Method", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/debug/token-endpoint-auth-method" - }, - { - "label": "Logout not Working as Expected", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/debug/logout" - }, - { - "label": "FAQ", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/faq" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "SDKs", - "items": [ - { - "label": "Software Development Kits (SDKs)", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/sdk" - }, - { - "label": "Go", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/sdk/go" - }, - { - "label": "JavaScript", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/sdk/js" - }, - { - "label": "PHP", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/sdk/php" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "Development", - "items": [ - { - "label": "Milestones and Roadmap", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/milestones" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "Further Reading", - "items": [ - { - "label": "OAuth 2.0 Case Study", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/case-study" - }, - { - "label": "Benchmarks", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/benchmark" - }, - { - "label": "Security Architecture", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/security-architecture" - } - ] - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "Ory Oathkeeper", - "items": [ - { - "collapsed": true, - "type": "category", - "label": "Introduction", - "items": [ - { - "label": "Introduction", - "type": "link", - "href": "https://www.ory.sh/oathkeeper/docs/next/" - }, - { - "label": "Installation", - "type": "link", - "href": "https://www.ory.sh/oathkeeper/docs/next/install" - }, - { - "label": "Contribution Guidelines", - "type": "link", - "href": "https://www.ory.sh/oathkeeper/docs/next/contributing" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "Core Concepts", - "items": [ - { - "label": "API Access Rules", - "type": "link", - "href": "https://www.ory.sh/oathkeeper/docs/next/api-access-rules" - }, - { - "collapsed": true, - "type": "category", - "label": "Handlers", - "items": [ - { - "label": "Access Rule Pipeline", - "type": "link", - "href": "https://www.ory.sh/oathkeeper/docs/next/pipeline" - }, - { - "label": "Authenticators", - "type": "link", - "href": "https://www.ory.sh/oathkeeper/docs/next/pipeline/authn" - }, - { - "label": "Authorizers", - "type": "link", - "href": "https://www.ory.sh/oathkeeper/docs/next/pipeline/authz" - }, - { - "label": "Mutators", - "type": "link", - "href": "https://www.ory.sh/oathkeeper/docs/next/pipeline/mutator" - }, - { - "label": "Error Handlers", - "type": "link", - "href": "https://www.ory.sh/oathkeeper/docs/next/pipeline/error" - } - ] - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "Guides", - "items": [ - { - "label": "Configure and Deploy", - "type": "link", - "href": "https://www.ory.sh/oathkeeper/docs/next/configure-deploy" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "Reference", - "items": [ - { - "label": "Configuration", - "type": "link", - "href": "https://www.ory.sh/oathkeeper/docs/next/reference/configuration" - }, - { - "label": "REST API", - "type": "link", - "href": "https://www.ory.sh/oathkeeper/docs/next/reference/api" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "SDKs", - "items": [ - { - "label": "ORY Oathkeeper SDKs", - "type": "link", - "href": "https://www.ory.sh/oathkeeper/docs/next/sdk" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "Development", - "items": [ - { - "label": "Milestones and Roadmap", - "type": "link", - "href": "https://www.ory.sh/oathkeeper/docs/next/milestones" - } - ] - } - ] - } - ] - } - ] -} diff --git a/docs/versioned_sidebars/version-v0.7-sidebars.json b/docs/versioned_sidebars/version-v0.7-sidebars.json deleted file mode 100644 index 63bd56067..000000000 --- a/docs/versioned_sidebars/version-v0.7-sidebars.json +++ /dev/null @@ -1,1759 +0,0 @@ -{ - "version-v0.7/docs": [ - { - "label": "Welcome to Ory!", - "type": "link", - "href": "https://www.ory.sh/docs/" - }, - { - "label": "Become an Ory Insider", - "type": "link", - "href": "https://www.ory.sh/docs/get-started" - }, - { - "label": "Ory Cloud Roadmap", - "type": "link", - "href": "https://www.ory.sh/docs/early-access" - }, - { - "type": "category", - "collapsed": true, - "collapsible": true, - "label": "Start Building", - "items": [ - { - "label": "Create Ory Cloud Project", - "type": "link", - "href": "https://www.ory.sh/docs/start-building/create-project" - }, - { - "label": "Choose Your Technology", - "type": "link", - "href": "https://www.ory.sh/docs/start-building" - }, - { - "label": "Install the Ory CLI", - "type": "link", - "href": "https://www.ory.sh/docs/start-building/ory-cli-install-use" - }, - { - "label": "Build a Server-Side Web App with Ory", - "type": "link", - "href": "https://www.ory.sh/docs/start-building/server-side-web-app" - }, - { - "label": "Build a Single Page App (SPA) with Ory", - "type": "link", - "href": "https://www.ory.sh/docs/start-building/single-page-app-spa" - }, - { - "label": "Build a Native / Mobile App with Ory", - "type": "link", - "href": "https://www.ory.sh/docs/start-building/native-mobile-app" - }, - { - "label": "Get Ready for Production", - "type": "link", - "href": "https://www.ory.sh/docs/start-building/deploy-auth-production" - }, - { - "label": "Other Integrations", - "type": "link", - "href": "https://www.ory.sh/docs/start-building/other-languages" - } - ] - }, - { - "type": "category", - "collapsed": true, - "collapsible": true, - "label": "Guides", - "items": [ - { - "label": "Using the Ory Proxy", - "type": "link", - "href": "https://www.ory.sh/docs/guides/proxy" - }, - { - "label": "Bring Your Own UI", - "type": "link", - "href": "https://www.ory.sh/docs/guides/bring-your-user-interface" - }, - { - "label": "Create And Use Personal Access Tokens", - "type": "link", - "href": "https://www.ory.sh/docs/guides/create-personal-access-token" - }, - { - "label": "Customize Identity Schema", - "type": "link", - "href": "https://www.ory.sh/docs/guides/customize-identity-schema" - } - ] - }, - { - "type": "category", - "collapsed": true, - "collapsible": true, - "label": "Concepts", - "items": [ - { - "label": "Terminology", - "type": "link", - "href": "https://www.ory.sh/docs/concepts/terminology" - }, - { - "label": "Ory Cloud Project", - "type": "link", - "href": "https://www.ory.sh/docs/concepts/project" - }, - { - "label": "Managed User Interface", - "type": "link", - "href": "https://www.ory.sh/docs/concepts/managed-ui" - }, - { - "label": "Identity Schema, Custom Fields", - "type": "link", - "href": "https://www.ory.sh/docs/concepts/identity" - }, - { - "label": "Services & APIs", - "type": "link", - "href": "https://www.ory.sh/docs/concepts/services-api" - }, - { - "label": "Personal Access Tokens", - "type": "link", - "href": "https://www.ory.sh/docs/concepts/personal-access-token" - }, - { - "label": "Self-Service (End-User)", - "type": "link", - "href": "https://www.ory.sh/docs/concepts/self-service" - }, - { - "label": "Browser Redirects and Flow Completion", - "type": "link", - "href": "https://www.ory.sh/docs/concepts/redirects" - }, - { - "label": "Sessions", - "type": "link", - "href": "https://www.ory.sh/docs/concepts/session" - }, - { - "label": "API Design", - "type": "link", - "href": "https://www.ory.sh/docs/ecosystem/api-design" - } - ] - }, - { - "label": "HTTP API Documentation", - "type": "link", - "href": "https://www.ory.sh/docs/reference/api" - }, - { - "type": "category", - "collapsed": true, - "collapsible": true, - "label": "Reference", - "items": [ - { - "type": "category", - "collapsed": true, - "collapsible": true, - "label": "Command Line Interface (CLI)", - "items": [ - { - "label": "ory", - "type": "link", - "href": "https://www.ory.sh/docs/cli/ory" - }, - { - "label": "ory identities", - "type": "link", - "href": "https://www.ory.sh/docs/cli/ory-identities" - }, - { - "label": "ory identities delete", - "type": "link", - "href": "https://www.ory.sh/docs/cli/ory-identities-delete" - }, - { - "label": "ory identities get", - "type": "link", - "href": "https://www.ory.sh/docs/cli/ory-identities-get" - }, - { - "label": "ory identities list", - "type": "link", - "href": "https://www.ory.sh/docs/cli/ory-identities-list" - }, - { - "label": "ory proxy", - "type": "link", - "href": "https://www.ory.sh/docs/cli/ory-proxy" - }, - { - "label": "ory proxy api", - "type": "link", - "href": "https://www.ory.sh/docs/cli/ory-proxy-api" - }, - { - "label": "ory proxy local", - "type": "link", - "href": "https://www.ory.sh/docs/cli/ory-proxy-local" - }, - { - "label": "ory proxy production", - "type": "link", - "href": "https://www.ory.sh/docs/cli/ory-proxy-production" - }, - { - "label": "ory version", - "type": "link", - "href": "https://www.ory.sh/docs/cli/ory-version" - } - ] - } - ] - }, - { - "type": "category", - "collapsed": true, - "collapsible": true, - "label": "Open Source Overview", - "items": [ - { - "label": "Ory Open Source", - "type": "link", - "href": "https://www.ory.sh/docs/open-source" - }, - { - "label": "Community", - "type": "link", - "href": "https://www.ory.sh/docs/ecosystem/community" - }, - { - "label": "Projects", - "type": "link", - "href": "https://www.ory.sh/docs/ecosystem/projects" - }, - { - "label": "Software Versions and Project Maturity", - "type": "link", - "href": "https://www.ory.sh/docs/ecosystem/versioning" - }, - { - "label": "Configuring Ory services", - "type": "link", - "href": "https://www.ory.sh/docs/ecosystem/configuring" - }, - { - "label": "Deployment Fundamentals and Requirements", - "type": "link", - "href": "https://www.ory.sh/docs/ecosystem/deployment" - }, - { - "label": "Software Updates", - "type": "link", - "href": "https://www.ory.sh/docs/ecosystem/upgrading" - }, - { - "label": "Logs and Audit Trails", - "type": "link", - "href": "https://www.ory.sh/docs/ecosystem/logging" - }, - { - "label": "Contributing", - "type": "link", - "href": "https://www.ory.sh/docs/ecosystem/contributing" - }, - { - "label": "Software Quality Assurance", - "type": "link", - "href": "https://www.ory.sh/docs/ecosystem/sqa" - }, - { - "label": "Roadmap", - "type": "link", - "href": "https://www.ory.sh/docs/ecosystem/roadmap" - }, - { - "label": "Software Architecture and Philosophy", - "type": "link", - "href": "https://www.ory.sh/docs/ecosystem/software-architecture-philosophy" - } - ] - }, - { - "type": "category", - "collapsed": true, - "collapsible": true, - "label": "Open Source Ory Kratos", - "items": [ - { - "type": "category", - "collapsed": true, - "collapsible": true, - "label": "Introduction", - "items": [ - { - "label": "Introduction", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/" - }, - { - "label": "Quickstart", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/quickstart" - }, - { - "label": "Installation", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/install" - }, - { - "label": "Configuring", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/configuring" - }, - { - "label": "Contribution Guidelines", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/contributing" - }, - { - "label": "Frequently Asked Questions (FAQ)", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/faq" - } - ] - }, - { - "type": "category", - "collapsed": true, - "collapsible": true, - "label": "Concepts", - "items": [ - { - "label": "Overview", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/concepts/index" - }, - { - "label": "Terminology", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/concepts/terminology" - }, - { - "label": "Ory Session Token / Ory Session Cookie", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/concepts/session" - }, - { - "label": "Customize User Interface", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/concepts/ui-user-interface" - }, - { - "label": "Administrative User / Management Interface", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/concepts/management-ui" - }, - { - "label": "Identity Schema", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/concepts/identity-schema" - }, - { - "label": "Identity Credentials", - "type": "category", - "items": [ - { - "label": "Overview", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/concepts/credentials" - }, - { - "label": "Username / Email & Password", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/concepts/credentials/username-email-password" - }, - { - "label": "Social Sign In, OpenID Connect, and OAuth2", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/concepts/credentials/openid-connect-oidc-oauth2" - }, - { - "label": "2FA Look-up Secrets and Recovery Codes", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/concepts/credentials/lookup-secrets" - }, - { - "label": "2FA TOTP (Google Authenticator)", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/concepts/credentials/totp" - }, - { - "label": "2FA FIDO2 & U2F (WebAuthn)", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/concepts/credentials/webauthn" - } - ], - "collapsible": true, - "collapsed": true - }, - { - "label": "HTTP Redirection Configuration", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/concepts/browser-redirect-flow-completion" - }, - { - "label": "Out-of-band communication via E-Mail and SMS", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/concepts/email-sms" - }, - { - "label": "REST API Design", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/concepts/rest-api" - }, - { - "label": "Federation", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/concepts/federation" - }, - { - "label": "Threat Models and Security Profiles", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/concepts/security" - } - ] - }, - { - "type": "category", - "collapsed": true, - "collapsible": true, - "label": "Self Service (End-User)", - "items": [ - { - "label": "Self-Service Flows", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/self-service" - }, - { - "label": "User Registration", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/self-service/flows/user-registration" - }, - { - "label": "User Login", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/self-service/flows/user-login" - }, - { - "label": "User Settings and Profile Updates", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/self-service/flows/user-settings" - }, - { - "label": "Account Recovery and Password Reset", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/self-service/flows/account-recovery" - }, - { - "label": "Email and Phone Verification and Account Activation", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/self-service/flows/verify-email-account-activation" - }, - { - "label": "User Logout", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/self-service/flows/user-logout" - }, - { - "label": "User-Facing Errors", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/self-service/flows/user-facing-errors" - }, - { - "label": "MFA / 2FA", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/self-service/flows/2fa-mfa-multi-factor-authentication" - }, - { - "label": "Hooks", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/self-service/hooks" - } - ] - }, - { - "type": "category", - "collapsed": true, - "collapsible": true, - "label": "Administration", - "items": [ - { - "label": "Managing Users and Identities", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/admin/managing-users-identities" - } - ] - }, - { - "type": "category", - "collapsed": true, - "collapsible": true, - "label": "Guides", - "items": [ - { - "label": "Add Two Factor Authentication (2FA) to your App", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next//two-factor-authentication-2fa-mfa" - }, - { - "label": "Sign in with GitHub, GitLab, Google, Facebook, LinkedIn, Microsoft ...", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/guides/sign-in-with-github-google-facebook-linkedin" - }, - { - "label": "Configuring And Checking for Login Sessions", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/guides/login-session" - }, - { - "label": "Configuring Cookies", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/guides/configuring-cookies" - }, - { - "label": "Advanced Base URL, CSRF & Session Cookie Settings", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/guides/multi-domain-cookies" - }, - { - "label": "Setting up Cross-origin resource sharing (CORS)", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/guides/setting-up-cors" - }, - { - "label": "Setting up Account Recovery and Password Reset", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/guides/account-recovery-password-reset" - }, - { - "label": "Setting up Account Activation and E-Mail Verification", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/guides/account-activation-email-verification" - }, - { - "label": "Zero Trust with IAP Proxy", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/guides/zero-trust-iap-proxy-identity-access-proxy" - }, - { - "label": "Multitenancy", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/guides/multi-tenancy-multitenant" - }, - { - "label": "Secret and Key Rotation", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/guides/secret-key-rotation" - }, - { - "label": "Get Access, Refresh, ID Tokens from Social Sign In Providers", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/guides/retrieve-social-sign-in-access-refresh-id-token" - }, - { - "label": "Setting up Noop Cipher algorithm", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/guides/setting-up-noop-cipher-parameters" - }, - { - "label": "Setting up XChaCha20 Poly1305 Cipher algorithm", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/guides/setting-up-xchacha-cipher-parameters" - }, - { - "label": "Setting up AES Cipher algorithm", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/guides/setting-up-aes-cipher-parameters" - }, - { - "label": "High Availability", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/guides/high-availability-ha" - }, - { - "label": "Docker Images", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/guides/docker" - }, - { - "label": "Setting up HTTPS (TLS)", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/guides/https-tls" - }, - { - "label": "Setting up Argon2 Password Hashing Parameters", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/guides/setting-up-password-hashing-parameters" - }, - { - "label": "Integration using Web-Hooks", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/guides/integration-with-other-systems-using-web-hooks" - }, - { - "label": "Distributed Tracing", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/guides/tracing" - } - ] - }, - { - "label": "HTTP API Documentation", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/reference/api" - }, - { - "type": "category", - "collapsed": true, - "collapsible": true, - "label": "Reference", - "items": [ - { - "label": "Configuration", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/reference/configuration" - }, - { - "label": "JSON Schema and JSON Paths", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/reference/json-schema-json-paths" - }, - { - "label": "HTML Form Parser", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/reference/html-forms" - }, - { - "type": "category", - "collapsed": true, - "collapsible": true, - "label": "Command Line Interface (CLI)", - "items": [ - { - "label": "kratos", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos" - }, - { - "label": "kratos courier", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-courier" - }, - { - "label": "kratos courier watch", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-courier-watch" - }, - { - "label": "kratos hashers", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-hashers" - }, - { - "label": "kratos hashers argon2", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-hashers-argon2" - }, - { - "label": "kratos hashers argon2 calibrate", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-hashers-argon2-calibrate" - }, - { - "label": "kratos hashers argon2 hash", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-hashers-argon2-hash" - }, - { - "label": "kratos hashers argon2 load-test", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-hashers-argon2-load-test" - }, - { - "label": "kratos identities", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-identities" - }, - { - "label": "kratos identities delete", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-identities-delete" - }, - { - "label": "kratos identities get", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-identities-get" - }, - { - "label": "kratos identities import", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-identities-import" - }, - { - "label": "kratos identities list", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-identities-list" - }, - { - "label": "kratos identities patch", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-identities-patch" - }, - { - "label": "kratos identities validate", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-identities-validate" - }, - { - "label": "kratos jsonnet", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-jsonnet" - }, - { - "label": "kratos jsonnet format", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-jsonnet-format" - }, - { - "label": "kratos jsonnet lint", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-jsonnet-lint" - }, - { - "label": "kratos migrate", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-migrate" - }, - { - "label": "kratos migrate sql", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-migrate-sql" - }, - { - "label": "kratos remote", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-remote" - }, - { - "label": "kratos remote status", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-remote-status" - }, - { - "label": "kratos remote version", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-remote-version" - }, - { - "label": "kratos serve", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-serve" - }, - { - "label": "kratos version", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/cli/kratos-version" - } - ] - } - ] - }, - { - "type": "category", - "collapsed": true, - "collapsible": true, - "label": "Debug & Help", - "items": [ - { - "label": "Common Cookie and CSRF Pitfalls", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/debug/csrf" - }, - { - "label": "Performance Problems and Out Of Memory Panics Caused by Password Hashing", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/debug/performance-out-of-memory-password-hashing-argon2" - }, - { - "label": "Debugging Ory Kratos in Docker with Delve", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/debug/debug-docker-delve-ory-kratos" - } - ] - }, - { - "type": "category", - "collapsed": true, - "collapsible": true, - "label": "SDKs", - "items": [ - { - "label": "SDKs", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/sdk" - } - ] - }, - { - "type": "category", - "collapsed": true, - "collapsible": true, - "label": "Development", - "items": [ - { - "label": "Milestones and Roadmap", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/milestones" - } - ] - }, - { - "type": "category", - "collapsed": true, - "collapsible": true, - "label": "Further Reading", - "items": [ - { - "label": "Comparison", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/further-reading/comparison" - }, - { - "label": "Video Tutorials", - "type": "link", - "href": "https://www.ory.sh/kratos/docs/next/further-reading/kratos-video-tutorials" - } - ] - } - ] - }, - { - "type": "category", - "collapsed": true, - "collapsible": true, - "label": "Open Source Ory Keto", - "items": [ - { - "type": "category", - "collapsed": true, - "collapsible": true, - "label": "Introduction", - "items": [ - { - "type": "doc", - "id": "version-v0.7/index" - }, - { - "type": "doc", - "id": "version-v0.7/install" - }, - { - "type": "doc", - "id": "version-v0.7/implemented-planned-features" - }, - { - "type": "doc", - "id": "version-v0.7/performance" - }, - { - "type": "doc", - "id": "version-v0.7/quickstart" - } - ] - }, - { - "type": "category", - "collapsed": true, - "collapsible": true, - "label": "Concepts", - "items": [ - { - "type": "doc", - "id": "version-v0.7/concepts/relation-tuples" - }, - { - "type": "doc", - "id": "version-v0.7/concepts/namespaces" - }, - { - "type": "doc", - "id": "version-v0.7/concepts/objects" - }, - { - "type": "doc", - "id": "version-v0.7/concepts/subjects" - }, - { - "type": "doc", - "id": "version-v0.7/concepts/graph-of-relations" - }, - { - "type": "doc", - "id": "version-v0.7/concepts/api-overview" - }, - { - "type": "doc", - "id": "version-v0.7/concepts/internal-algorithms" - }, - { - "type": "doc", - "id": "version-v0.7/concepts/snaptokens-evaluation-consistency" - } - ] - }, - { - "type": "category", - "collapsed": true, - "collapsible": true, - "label": "Guides", - "items": [ - { - "type": "doc", - "id": "version-v0.7/secure" - }, - { - "type": "doc", - "id": "version-v0.7/guides/simple-access-check-guide" - }, - { - "type": "doc", - "id": "version-v0.7/guides/list-api-display-objects" - }, - { - "type": "doc", - "id": "version-v0.7/guides/expand-api-display-who-has-access" - }, - { - "type": "doc", - "id": "version-v0.7/guides/production" - }, - { - "type": "doc", - "id": "version-v0.7/guides/v0.7-migration" - }, - { - "type": "doc", - "id": "version-v0.7/guides/rbac" - }, - { - "type": "doc", - "id": "version-v0.7/guides/access-control-inheritance" - }, - { - "type": "doc", - "id": "version-v0.7/guides/access-control-list-design-best-practices" - } - ] - }, - { - "type": "category", - "collapsed": true, - "collapsible": true, - "label": "Examples", - "items": [ - { - "type": "doc", - "id": "version-v0.7/examples/olymp-file-sharing" - } - ] - }, - { - "type": "category", - "collapsed": true, - "collapsible": true, - "label": "Reference", - "items": [ - { - "type": "doc", - "id": "version-v0.7/reference/configuration" - }, - { - "type": "doc", - "id": "version-v0.7/reference/rest-api" - }, - { - "type": "doc", - "id": "version-v0.7/reference/proto-api" - }, - { - "type": "category", - "collapsed": true, - "collapsible": true, - "label": "Command Line Interface (CLI)", - "items": [ - { - "type": "doc", - "id": "version-v0.7/cli/keto" - }, - { - "type": "doc", - "id": "version-v0.7/cli/keto-check" - }, - { - "type": "doc", - "id": "version-v0.7/cli/keto-expand" - }, - { - "type": "doc", - "id": "version-v0.7/cli/keto-migrate" - }, - { - "type": "doc", - "id": "version-v0.7/cli/keto-migrate-down" - }, - { - "type": "doc", - "id": "version-v0.7/cli/keto-migrate-status" - }, - { - "type": "doc", - "id": "version-v0.7/cli/keto-migrate-up" - }, - { - "type": "doc", - "id": "version-v0.7/cli/keto-namespace" - }, - { - "type": "doc", - "id": "version-v0.7/cli/keto-namespace-migrate" - }, - { - "type": "doc", - "id": "version-v0.7/cli/keto-namespace-migrate-legacy" - }, - { - "type": "doc", - "id": "version-v0.7/cli/keto-namespace-validate" - }, - { - "type": "doc", - "id": "version-v0.7/cli/keto-relation-tuple" - }, - { - "type": "doc", - "id": "version-v0.7/cli/keto-relation-tuple-create" - }, - { - "type": "doc", - "id": "version-v0.7/cli/keto-relation-tuple-delete" - }, - { - "type": "doc", - "id": "version-v0.7/cli/keto-relation-tuple-get" - }, - { - "type": "doc", - "id": "version-v0.7/cli/keto-relation-tuple-parse" - }, - { - "type": "doc", - "id": "version-v0.7/cli/keto-serve" - }, - { - "type": "doc", - "id": "version-v0.7/cli/keto-status" - }, - { - "type": "doc", - "id": "version-v0.7/cli/keto-version" - } - ] - } - ] - }, - { - "type": "category", - "collapsed": true, - "collapsible": true, - "label": "SDKs", - "items": [ - { - "type": "doc", - "id": "version-v0.7/sdk/index" - } - ] - }, - { - "type": "category", - "collapsed": true, - "collapsible": true, - "label": "Development", - "items": [ - { - "type": "doc", - "id": "version-v0.7/milestones" - } - ] - } - ] - }, - { - "type": "category", - "collapsed": true, - "collapsible": true, - "label": "Open Source Ory Hydra", - "items": [ - { - "type": "category", - "collapsed": true, - "collapsible": true, - "label": "Introduction", - "items": [ - { - "label": "Introduction", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/" - }, - { - "label": "5 Minute Tutorial", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/5min-tutorial" - }, - { - "label": "Installation", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/install" - }, - { - "label": "Contribution Guidelines", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/contributing" - } - ] - }, - { - "type": "category", - "collapsed": true, - "collapsible": true, - "label": "Concepts", - "items": [ - { - "label": "Do You Need OAuth2?", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/concepts/before-oauth2" - }, - { - "label": "OAuth 2.0", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/concepts/oauth2" - }, - { - "label": "OpenID Connect (OIDC)", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/concepts/openid-connect-oidc" - }, - { - "label": "Login Flow", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/concepts/login" - }, - { - "label": "Consent Flow", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/concepts/consent" - }, - { - "label": "Logout Flow", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/concepts/logout" - }, - { - "label": "JSON Web Key Sets", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/jwks" - }, - { - "label": "Limitations", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/limitations" - } - ] - }, - { - "type": "category", - "collapsed": true, - "collapsible": true, - "label": "Guides", - "items": [ - { - "type": "category", - "label": "Implementing the User Interface", - "items": [ - { - "label": "Implementing the Login Endpoint", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/guides/login" - }, - { - "label": "Implementing the Consent Endpoint & UI", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/guides/consent" - }, - { - "label": "Implementing the Logout Endpoint & UI", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/guides/logout" - } - ], - "collapsible": true, - "collapsed": true - }, - { - "type": "category", - "label": "Operations", - "items": [ - { - "label": "Run ORY Hydra in Docker", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/configure-deploy" - }, - { - "label": "Database Setup and Configuration", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/dependencies-environment" - }, - { - "label": "Preparing for Production", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/production" - }, - { - "label": "Distributed Tracing", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/guides/tracing" - }, - { - "label": "Secrets and Key Rotation", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/guides/secrets-key-rotation" - }, - { - "label": "Kubernetes Helm Chart", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/guides/kubernetes-helm-chart" - }, - { - "label": "SSL/TLS, HTTPS, Self-Signed Certificates", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/guides/ssl-https-tls" - }, - { - "label": "Configuring Cookies", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/guides/cookies" - }, - { - "label": "Scaling ORY Hydra", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/guides/scaling-hydra" - }, - { - "label": "Setting up Cross-origin resource sharing (CORS)", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/guides/cors" - }, - { - "label": "Gitlab Hydra integration", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/guides/gitlab" - }, - { - "label": "Migrating from MITREid", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/guides/migrating-from-mitreid" - }, - { - "label": "Merge multiple Hydra instances with different system.secrets", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/guides/merge-multiple-db-secrets" - } - ], - "collapsible": true, - "collapsed": true - }, - { - "type": "category", - "label": "OAuth2 & OpenID Connect", - "items": [ - { - "label": "Advanced OAuth2 and OpenID Connect Flows", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/advanced" - }, - { - "label": "Creating OAuth 2.0 Clients", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/guides/oauth2-clients" - }, - { - "label": "Using Common OAuth2 and OpenID Connect Flows", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/guides/common-oauth2-openid-connect-flows" - }, - { - "label": "Using OAuth2", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/guides/using-oauth2" - }, - { - "label": "Configuring Expiration", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/guides/token-expiration" - }, - { - "label": "OAuth 2.0 Token Introspection", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/guides/oauth2-token-introspection" - }, - { - "label": "Mobile & Browser (Single-Page-App) with OAuth2", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/guides/oauth2-public-spa-mobile" - } - ], - "collapsible": true, - "collapsed": true - } - ] - }, - { - "label": "HTTP API Documentation", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/reference/api" - }, - { - "type": "category", - "collapsed": true, - "collapsible": true, - "label": "Reference", - "items": [ - { - "label": "Configuration", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/reference/configuration" - }, - { - "type": "category", - "collapsed": true, - "collapsible": true, - "label": "Command Line Interface (CLI)", - "items": [ - { - "label": "hydra", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra" - }, - { - "label": "hydra clients", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-clients" - }, - { - "label": "hydra clients create", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-clients-create" - }, - { - "label": "hydra clients delete", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-clients-delete" - }, - { - "label": "hydra clients get", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-clients-get" - }, - { - "label": "hydra clients import", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-clients-import" - }, - { - "label": "hydra clients import", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-clients-import" - }, - { - "label": "hydra clients import", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-clients-import" - }, - { - "label": "hydra clients import", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-clients-import" - }, - { - "label": "hydra clients list", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-clients-list" - }, - { - "label": "hydra clients update", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-clients-update" - }, - { - "label": "hydra janitor", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-janitor" - }, - { - "label": "hydra keys", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-keys" - }, - { - "label": "hydra keys create", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-keys-create" - }, - { - "label": "hydra keys delete", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-keys-delete" - }, - { - "label": "hydra keys get", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-keys-get" - }, - { - "label": "hydra keys import", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-keys-import" - }, - { - "label": "hydra migrate", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-migrate" - }, - { - "label": "hydra migrate sql", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-migrate-sql" - }, - { - "label": "hydra serve", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-serve" - }, - { - "label": "hydra serve admin", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-serve-admin" - }, - { - "label": "hydra serve all", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-serve-all" - }, - { - "label": "hydra serve public", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-serve-public" - }, - { - "label": "hydra token", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-token" - }, - { - "label": "hydra token client", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-token-client" - }, - { - "label": "hydra token delete", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-token-delete" - }, - { - "label": "hydra token flush", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-token-flush" - }, - { - "label": "hydra token introspect", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-token-introspect" - }, - { - "label": "hydra token revoke", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-token-revoke" - }, - { - "label": "hydra token user", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-token-user" - }, - { - "label": "hydra version", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/cli/hydra-version" - } - ] - } - ] - }, - { - "type": "category", - "collapsed": true, - "collapsible": true, - "label": "Debug & Help", - "items": [ - { - "label": "Common Problems", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/debug" - }, - { - "label": "Common CSRF Pitfalls", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/debug/csrf" - }, - { - "label": "Debug Configuration", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/debug/config" - }, - { - "label": "Wrong Token Endpoint Auth Method", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/debug/token-endpoint-auth-method" - }, - { - "label": "Logout not Working as Expected", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/debug/logout" - }, - { - "label": "FAQ", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/faq" - } - ] - }, - { - "type": "category", - "collapsed": true, - "collapsible": true, - "label": "SDKs", - "items": [ - { - "label": "Software Development Kits (SDKs)", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/sdk" - }, - { - "label": "Go", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/sdk/go" - }, - { - "label": "JavaScript", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/sdk/js" - }, - { - "label": "PHP", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/sdk/php" - } - ] - }, - { - "type": "category", - "collapsed": true, - "collapsible": true, - "label": "Development", - "items": [ - { - "label": "Milestones and Roadmap", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/milestones" - } - ] - }, - { - "type": "category", - "collapsed": true, - "collapsible": true, - "label": "Further Reading", - "items": [ - { - "label": "OAuth 2.0 Case Study", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/case-study" - }, - { - "label": "Benchmarks", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/benchmark" - }, - { - "label": "Security Architecture", - "type": "link", - "href": "https://www.ory.sh/hydra/docs/next/security-architecture" - } - ] - } - ] - }, - { - "type": "category", - "collapsed": true, - "collapsible": true, - "label": "Open Source Ory Oathkeeper", - "items": [ - { - "type": "category", - "collapsed": true, - "collapsible": true, - "label": "Introduction", - "items": [ - { - "label": "Introduction", - "type": "link", - "href": "https://www.ory.sh/oathkeeper/docs/next/" - }, - { - "label": "Installation", - "type": "link", - "href": "https://www.ory.sh/oathkeeper/docs/next/install" - }, - { - "label": "Contribution Guidelines", - "type": "link", - "href": "https://www.ory.sh/oathkeeper/docs/next/contributing" - } - ] - }, - { - "type": "category", - "collapsed": true, - "collapsible": true, - "label": "Core Concepts", - "items": [ - { - "label": "API Access Rules", - "type": "link", - "href": "https://www.ory.sh/oathkeeper/docs/next/api-access-rules" - }, - { - "type": "category", - "label": "Handlers", - "items": [ - { - "label": "Access Rule Pipeline", - "type": "link", - "href": "https://www.ory.sh/oathkeeper/docs/next/pipeline" - }, - { - "label": "Authenticators", - "type": "link", - "href": "https://www.ory.sh/oathkeeper/docs/next/pipeline/authn" - }, - { - "label": "Authorizers", - "type": "link", - "href": "https://www.ory.sh/oathkeeper/docs/next/pipeline/authz" - }, - { - "label": "Mutators", - "type": "link", - "href": "https://www.ory.sh/oathkeeper/docs/next/pipeline/mutator" - }, - { - "label": "Error Handlers", - "type": "link", - "href": "https://www.ory.sh/oathkeeper/docs/next/pipeline/error" - } - ], - "collapsible": true, - "collapsed": true - } - ] - }, - { - "type": "category", - "collapsed": true, - "collapsible": true, - "label": "Guides", - "items": [ - { - "label": "Configure and Deploy", - "type": "link", - "href": "https://www.ory.sh/oathkeeper/docs/next/configure-deploy" - } - ] - }, - { - "label": "HTTP API Documentation", - "type": "link", - "href": "https://www.ory.sh/oathkeeper/docs/next/reference/api" - }, - { - "type": "category", - "collapsed": true, - "collapsible": true, - "label": "Reference", - "items": [ - { - "label": "Configuration", - "type": "link", - "href": "https://www.ory.sh/oathkeeper/docs/next/reference/configuration" - } - ] - }, - { - "type": "category", - "collapsed": true, - "collapsible": true, - "label": "SDKs", - "items": [ - { - "label": "ORY Oathkeeper SDKs", - "type": "link", - "href": "https://www.ory.sh/oathkeeper/docs/next/sdk" - } - ] - }, - { - "type": "category", - "collapsed": true, - "collapsible": true, - "label": "Development", - "items": [ - { - "label": "Milestones and Roadmap", - "type": "link", - "href": "https://www.ory.sh/oathkeeper/docs/next/milestones" - } - ] - } - ] - } - ] -} diff --git a/docs/versions.json b/docs/versions.json deleted file mode 100644 index 1782764ca..000000000 --- a/docs/versions.json +++ /dev/null @@ -1 +0,0 @@ -["v0.7", "v0.6", "v0.5"] diff --git a/go.mod b/go.mod index b76ccd1a3..b181c6bb0 100644 --- a/go.mod +++ b/go.mod @@ -38,7 +38,7 @@ require ( github.com/ory/herodot v0.9.12 github.com/ory/jsonschema/v3 v3.0.6 github.com/ory/keto/proto v0.0.0-00010101000000-000000000000 - github.com/ory/x v0.0.337 + github.com/ory/x v0.0.344 github.com/pelletier/go-toml v1.9.4 github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2 github.com/pkg/errors v0.9.1 @@ -72,7 +72,7 @@ require ( github.com/beorn7/perks v1.0.1 // indirect github.com/cenkalti/backoff/v4 v4.1.2 // indirect github.com/cespare/xxhash/v2 v2.1.2 // indirect - github.com/cockroachdb/cockroach-go/v2 v2.2.1 // indirect + github.com/cockroachdb/cockroach-go/v2 v2.2.7 // indirect github.com/containerd/containerd v1.5.7 // indirect github.com/containerd/continuity v0.2.1 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.1 // indirect diff --git a/go.sum b/go.sum index cebb49aea..8d1380933 100644 --- a/go.sum +++ b/go.sum @@ -203,8 +203,8 @@ github.com/cockroachdb/cockroach-go v0.0.0-20190925194419-606b3d062051/go.mod h1 github.com/cockroachdb/cockroach-go v0.0.0-20200312223839-f565e4789405 h1:i1XXyBMAGL7NqogtoS6NHQ/IJwCbG0R725hAhEhldOI= github.com/cockroachdb/cockroach-go v0.0.0-20200312223839-f565e4789405/go.mod h1:XGLbWH/ujMcbPbhZq52Nv6UrCghb1yGn//133kEsvDk= github.com/cockroachdb/cockroach-go/v2 v2.1.1/go.mod h1:7NtUnP6eK+l6k483WSYNrq3Kb23bWV10IRV1TyeSpwM= -github.com/cockroachdb/cockroach-go/v2 v2.2.1 h1:nZte1DDdL9iu8IV0YPmX8l9Lg2+HRJ3CMvkT3iG52rc= -github.com/cockroachdb/cockroach-go/v2 v2.2.1/go.mod h1:u3MiKYGupPPjkn3ozknpMUpxPaNLTFWAya419/zv6eI= +github.com/cockroachdb/cockroach-go/v2 v2.2.7 h1:c+x0jUU71NxsD0ZEZk1Dt2Pl/gUFUPkubINx0GF0DsA= +github.com/cockroachdb/cockroach-go/v2 v2.2.7/go.mod h1:q4ZRgO6CQpwNyEvEwSxwNrOSVchsmzrBnAv3HuZ3Abc= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= github.com/containerd/aufs v1.0.0/go.mod h1:kL5kd6KM5TzQjR79jljyi4olc1Vrx6XBlcyj3gNv2PU= @@ -1179,8 +1179,8 @@ github.com/ory/x v0.0.205/go.mod h1:A1s4iwmFIppRXZLF3J9GGWeY/HpREVm0Dk5z/787iek= github.com/ory/x v0.0.250/go.mod h1:jUJaVptu+geeqlb9SyQCogTKj5ztSDIF6APkhbKtwLc= github.com/ory/x v0.0.272/go.mod h1:1TTPgJGQutrhI2OnwdrTIHE9ITSf4MpzXFzA/ncTGRc= github.com/ory/x v0.0.288/go.mod h1:APpShLyJcVzKw1kTgrHI+j/L9YM+8BRjHlcYObc7C1U= -github.com/ory/x v0.0.337 h1:YDlmEA43NMJJxezVVAQoqXyyYl/ZZSh9+mA8JSbOECw= -github.com/ory/x v0.0.337/go.mod h1:VxITg5o/DfPfom76ni5FfFzP66Z+kLvJ/OATJxuT42c= +github.com/ory/x v0.0.344 h1:ba74mT+d3UNNCdqSq5cTEHsjQc5UHoTjE9e873nNpRM= +github.com/ory/x v0.0.344/go.mod h1:Ddbu3ecSaNDgxdntdD1gDu3ALG5fWR5AwUB1ILeBUNE= github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= github.com/parnurzeal/gorequest v0.2.15/go.mod h1:3Kh2QUMJoqw3icWAecsyzkpY7UzRfDhbRdTjtNwNiUE= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= diff --git a/internal/httpclient-next/.gitignore b/internal/httpclient-next/.gitignore new file mode 100644 index 000000000..daf913b1b --- /dev/null +++ b/internal/httpclient-next/.gitignore @@ -0,0 +1,24 @@ +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe +*.test +*.prof diff --git a/internal/httpclient-next/.openapi-generator-ignore b/internal/httpclient-next/.openapi-generator-ignore new file mode 100644 index 000000000..7484ee590 --- /dev/null +++ b/internal/httpclient-next/.openapi-generator-ignore @@ -0,0 +1,23 @@ +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/internal/httpclient-next/.openapi-generator/FILES b/internal/httpclient-next/.openapi-generator/FILES new file mode 100644 index 000000000..732585fdb --- /dev/null +++ b/internal/httpclient-next/.openapi-generator/FILES @@ -0,0 +1,80 @@ +.gitignore +.openapi-generator-ignore +.travis.yml +README.md +api/openapi.yaml +api_metadata.go +api_read.go +api_write.go +client.go +configuration.go +docs/CreateRelationTupleBadRequestBody.md +docs/CreateRelationTupleInternalServerErrorBody.md +docs/DeleteRelationTuplesBadRequestBody.md +docs/DeleteRelationTuplesInternalServerErrorBody.md +docs/ExpandTree.md +docs/GenericError.md +docs/GetCheckBadRequestBody.md +docs/GetCheckInternalServerErrorBody.md +docs/GetCheckResponse.md +docs/GetExpandBadRequestBody.md +docs/GetExpandInternalServerErrorBody.md +docs/GetExpandNotFoundBody.md +docs/GetRelationTuplesInternalServerErrorBody.md +docs/GetRelationTuplesNotFoundBody.md +docs/GetRelationTuplesResponse.md +docs/HealthNotReadyStatus.md +docs/HealthStatus.md +docs/InlineResponse200.md +docs/InlineResponse2001.md +docs/InlineResponse503.md +docs/InternalRelationTuple.md +docs/IsInstanceAliveInternalServerErrorBody.md +docs/MetadataApi.md +docs/PatchDelta.md +docs/PatchRelationTuplesBadRequestBody.md +docs/PatchRelationTuplesInternalServerErrorBody.md +docs/PatchRelationTuplesNotFoundBody.md +docs/PostCheckBadRequestBody.md +docs/PostCheckInternalServerErrorBody.md +docs/ReadApi.md +docs/RelationQuery.md +docs/SubjectSet.md +docs/Version.md +docs/WriteApi.md +git_push.sh +go.mod +go.sum +model_create_relation_tuple_bad_request_body.go +model_create_relation_tuple_internal_server_error_body.go +model_delete_relation_tuples_bad_request_body.go +model_delete_relation_tuples_internal_server_error_body.go +model_expand_tree.go +model_generic_error.go +model_get_check_bad_request_body.go +model_get_check_internal_server_error_body.go +model_get_check_response.go +model_get_expand_bad_request_body.go +model_get_expand_internal_server_error_body.go +model_get_expand_not_found_body.go +model_get_relation_tuples_internal_server_error_body.go +model_get_relation_tuples_not_found_body.go +model_get_relation_tuples_response.go +model_health_not_ready_status.go +model_health_status.go +model_inline_response_200.go +model_inline_response_200_1.go +model_inline_response_503.go +model_internal_relation_tuple.go +model_is_instance_alive_internal_server_error_body.go +model_patch_delta.go +model_patch_relation_tuples_bad_request_body.go +model_patch_relation_tuples_internal_server_error_body.go +model_patch_relation_tuples_not_found_body.go +model_post_check_bad_request_body.go +model_post_check_internal_server_error_body.go +model_relation_query.go +model_subject_set.go +model_version.go +response.go +utils.go diff --git a/internal/httpclient-next/.openapi-generator/VERSION b/internal/httpclient-next/.openapi-generator/VERSION new file mode 100644 index 000000000..804440660 --- /dev/null +++ b/internal/httpclient-next/.openapi-generator/VERSION @@ -0,0 +1 @@ +5.2.1 \ No newline at end of file diff --git a/internal/httpclient-next/.travis.yml b/internal/httpclient-next/.travis.yml new file mode 100644 index 000000000..f5cb2ce9a --- /dev/null +++ b/internal/httpclient-next/.travis.yml @@ -0,0 +1,8 @@ +language: go + +install: + - go get -d -v . + +script: + - go build -v ./ + diff --git a/internal/httpclient-next/README.md b/internal/httpclient-next/README.md new file mode 100644 index 000000000..c91ba4ea8 --- /dev/null +++ b/internal/httpclient-next/README.md @@ -0,0 +1,153 @@ +# Go API client for client + +Documentation for all of Ory Oathkeeper's APIs. + + +## Overview +This API client was generated by the [OpenAPI Generator](https://openapi-generator.tech) project. By using the [OpenAPI-spec](https://www.openapis.org/) from a remote server, you can easily generate an API client. + +- API version: 1.0.0 +- Package version: 1.0.0 +- Build package: org.openapitools.codegen.languages.GoClientCodegen + +## Installation + +Install the following dependencies: + +```shell +go get github.com/stretchr/testify/assert +go get golang.org/x/oauth2 +go get golang.org/x/net/context +``` + +Put the package under your project folder and add the following in import: + +```golang +import client "github.com/ory/keto-client-go" +``` + +To use a proxy, set the environment variable `HTTP_PROXY`: + +```golang +os.Setenv("HTTP_PROXY", "http://proxy_name:proxy_port") +``` + +## Configuration of Server URL + +Default configuration comes with `Servers` field that contains server objects as defined in the OpenAPI specification. + +### Select Server Configuration + +For using other server than the one defined on index 0 set context value `sw.ContextServerIndex` of type `int`. + +```golang +ctx := context.WithValue(context.Background(), client.ContextServerIndex, 1) +``` + +### Templated Server URL + +Templated server URL is formatted using default variables from configuration or from context value `sw.ContextServerVariables` of type `map[string]string`. + +```golang +ctx := context.WithValue(context.Background(), client.ContextServerVariables, map[string]string{ + "basePath": "v2", +}) +``` + +Note, enum values are always validated and all unused variables are silently ignored. + +### URLs Configuration per Operation + +Each operation can use different server URL defined using `OperationServers` map in the `Configuration`. +An operation is uniquely identifield by `"{classname}Service.{nickname}"` string. +Similar rules for overriding default operation server index and variables applies by using `sw.ContextOperationServerIndices` and `sw.ContextOperationServerVariables` context maps. + +``` +ctx := context.WithValue(context.Background(), client.ContextOperationServerIndices, map[string]int{ + "{classname}Service.{nickname}": 2, +}) +ctx = context.WithValue(context.Background(), client.ContextOperationServerVariables, map[string]map[string]string{ + "{classname}Service.{nickname}": { + "port": "8443", + }, +}) +``` + +## Documentation for API Endpoints + +All URIs are relative to *http://localhost* + +Class | Method | HTTP request | Description +------------ | ------------- | ------------- | ------------- +*MetadataApi* | [**GetVersion**](docs/MetadataApi.md#getversion) | **Get** /version | Return Running Software Version. +*MetadataApi* | [**IsAlive**](docs/MetadataApi.md#isalive) | **Get** /health/alive | Check HTTP Server Status +*MetadataApi* | [**IsReady**](docs/MetadataApi.md#isready) | **Get** /health/ready | Check HTTP Server and Database Status +*ReadApi* | [**GetCheck**](docs/ReadApi.md#getcheck) | **Get** /check | Check a relation tuple +*ReadApi* | [**GetExpand**](docs/ReadApi.md#getexpand) | **Get** /expand | Expand a Relation Tuple +*ReadApi* | [**GetRelationTuples**](docs/ReadApi.md#getrelationtuples) | **Get** /relation-tuples | Query relation tuples +*ReadApi* | [**PostCheck**](docs/ReadApi.md#postcheck) | **Post** /check | Check a relation tuple +*WriteApi* | [**CreateRelationTuple**](docs/WriteApi.md#createrelationtuple) | **Put** /relation-tuples | Create a Relation Tuple +*WriteApi* | [**DeleteRelationTuples**](docs/WriteApi.md#deleterelationtuples) | **Delete** /relation-tuples | Delete Relation Tuples +*WriteApi* | [**PatchRelationTuples**](docs/WriteApi.md#patchrelationtuples) | **Patch** /relation-tuples | Patch Multiple Relation Tuples + + +## Documentation For Models + + - [CreateRelationTupleBadRequestBody](docs/CreateRelationTupleBadRequestBody.md) + - [CreateRelationTupleInternalServerErrorBody](docs/CreateRelationTupleInternalServerErrorBody.md) + - [DeleteRelationTuplesBadRequestBody](docs/DeleteRelationTuplesBadRequestBody.md) + - [DeleteRelationTuplesInternalServerErrorBody](docs/DeleteRelationTuplesInternalServerErrorBody.md) + - [ExpandTree](docs/ExpandTree.md) + - [GenericError](docs/GenericError.md) + - [GetCheckBadRequestBody](docs/GetCheckBadRequestBody.md) + - [GetCheckInternalServerErrorBody](docs/GetCheckInternalServerErrorBody.md) + - [GetCheckResponse](docs/GetCheckResponse.md) + - [GetExpandBadRequestBody](docs/GetExpandBadRequestBody.md) + - [GetExpandInternalServerErrorBody](docs/GetExpandInternalServerErrorBody.md) + - [GetExpandNotFoundBody](docs/GetExpandNotFoundBody.md) + - [GetRelationTuplesInternalServerErrorBody](docs/GetRelationTuplesInternalServerErrorBody.md) + - [GetRelationTuplesNotFoundBody](docs/GetRelationTuplesNotFoundBody.md) + - [GetRelationTuplesResponse](docs/GetRelationTuplesResponse.md) + - [HealthNotReadyStatus](docs/HealthNotReadyStatus.md) + - [HealthStatus](docs/HealthStatus.md) + - [InlineResponse200](docs/InlineResponse200.md) + - [InlineResponse2001](docs/InlineResponse2001.md) + - [InlineResponse503](docs/InlineResponse503.md) + - [InternalRelationTuple](docs/InternalRelationTuple.md) + - [IsInstanceAliveInternalServerErrorBody](docs/IsInstanceAliveInternalServerErrorBody.md) + - [PatchDelta](docs/PatchDelta.md) + - [PatchRelationTuplesBadRequestBody](docs/PatchRelationTuplesBadRequestBody.md) + - [PatchRelationTuplesInternalServerErrorBody](docs/PatchRelationTuplesInternalServerErrorBody.md) + - [PatchRelationTuplesNotFoundBody](docs/PatchRelationTuplesNotFoundBody.md) + - [PostCheckBadRequestBody](docs/PostCheckBadRequestBody.md) + - [PostCheckInternalServerErrorBody](docs/PostCheckInternalServerErrorBody.md) + - [RelationQuery](docs/RelationQuery.md) + - [SubjectSet](docs/SubjectSet.md) + - [Version](docs/Version.md) + + +## Documentation For Authorization + + Endpoints do not require authorization. + + +## Documentation for Utility Methods + +Due to the fact that model structure members are all pointers, this package contains +a number of utility functions to easily obtain pointers to values of basic types. +Each of these functions takes a value of the given basic type and returns a pointer to it: + +* `PtrBool` +* `PtrInt` +* `PtrInt32` +* `PtrInt64` +* `PtrFloat` +* `PtrFloat32` +* `PtrFloat64` +* `PtrString` +* `PtrTime` + +## Author + +hi@ory.sh + diff --git a/internal/httpclient-next/api/openapi.yaml b/internal/httpclient-next/api/openapi.yaml new file mode 100644 index 000000000..1a1d65303 --- /dev/null +++ b/internal/httpclient-next/api/openapi.yaml @@ -0,0 +1,1267 @@ +openapi: 3.0.3 +info: + contact: + email: hi@ory.sh + description: | + Documentation for all of Ory Oathkeeper's APIs. + license: + name: Apache 2.0 + title: Ory Oathkeeper API +servers: +- url: / +paths: + /check: + get: + description: To learn how relation tuples and the check works, head over to + [the documentation](../concepts/relation-tuples.mdx). + operationId: getCheck + parameters: + - description: Namespace of the Relation Tuple + explode: true + in: query + name: namespace + required: false + schema: + type: string + style: form + - description: Object of the Relation Tuple + explode: true + in: query + name: object + required: false + schema: + type: string + style: form + - description: Relation of the Relation Tuple + explode: true + in: query + name: relation + required: false + schema: + type: string + style: form + - description: SubjectID of the Relation Tuple + explode: true + in: query + name: subject_id + required: false + schema: + type: string + style: form + - description: Namespace of the Subject Set + explode: true + in: query + name: subject_set.namespace + required: false + schema: + type: string + style: form + - description: Object of the Subject Set + explode: true + in: query + name: subject_set.object + required: false + schema: + type: string + style: form + - description: Relation of the Subject Set + explode: true + in: query + name: subject_set.relation + required: false + schema: + type: string + style: form + - explode: true + in: query + name: max-depth + required: false + schema: + format: int64 + type: integer + style: form + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/getCheckResponse' + description: getCheckResponse + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/genericError' + description: genericError + "403": + content: + application/json: + schema: + $ref: '#/components/schemas/getCheckResponse' + description: getCheckResponse + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/genericError' + description: genericError + summary: Check a relation tuple + tags: + - read + post: + description: To learn how relation tuples and the check works, head over to + [the documentation](../concepts/relation-tuples.mdx). + operationId: postCheck + parameters: + - explode: true + in: query + name: max-depth + required: false + schema: + format: int64 + type: integer + style: form + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RelationQuery' + x-originalParamName: Payload + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/getCheckResponse' + description: getCheckResponse + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/genericError' + description: genericError + "403": + content: + application/json: + schema: + $ref: '#/components/schemas/getCheckResponse' + description: getCheckResponse + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/genericError' + description: genericError + summary: Check a relation tuple + tags: + - read + /expand: + get: + description: Use this endpoint to expand a relation tuple. + operationId: getExpand + parameters: + - description: Namespace of the Subject Set + explode: true + in: query + name: namespace + required: true + schema: + type: string + style: form + - description: Object of the Subject Set + explode: true + in: query + name: object + required: true + schema: + type: string + style: form + - description: Relation of the Subject Set + explode: true + in: query + name: relation + required: true + schema: + type: string + style: form + - explode: true + in: query + name: max-depth + required: false + schema: + format: int64 + type: integer + style: form + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/expandTree' + description: expandTree + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/genericError' + description: genericError + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/genericError' + description: genericError + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/genericError' + description: genericError + summary: Expand a Relation Tuple + tags: + - read + /health/alive: + get: + description: |- + This endpoint returns a HTTP 200 status code when Ory Keto is accepting incoming + HTTP requests. 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. + operationId: isAlive + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/inline_response_200' + description: Ory Keto is ready to accept connections. + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/genericError' + description: genericError + summary: Check HTTP Server Status + tags: + - metadata + /health/ready: + get: + description: |- + This endpoint returns a HTTP 200 status code when Ory Keto 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 Ory Keto, the health status will never + refer to the cluster state, only to a single instance. + operationId: isReady + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/inline_response_200' + description: Ory Keto is ready to accept requests. + "503": + content: + application/json: + schema: + $ref: '#/components/schemas/inline_response_503' + description: Ory Kratos is not yet ready to accept requests. + summary: Check HTTP Server and Database Status + tags: + - metadata + /relation-tuples: + delete: + description: Use this endpoint to delete relation tuples + operationId: deleteRelationTuples + parameters: + - description: Namespace of the Relation Tuple + explode: true + in: query + name: namespace + required: false + schema: + type: string + style: form + - description: Object of the Relation Tuple + explode: true + in: query + name: object + required: false + schema: + type: string + style: form + - description: Relation of the Relation Tuple + explode: true + in: query + name: relation + required: false + schema: + type: string + style: form + - description: SubjectID of the Relation Tuple + explode: true + in: query + name: subject_id + required: false + schema: + type: string + style: form + - description: Namespace of the Subject Set + explode: true + in: query + name: subject_set.namespace + required: false + schema: + type: string + style: form + - description: Object of the Subject Set + explode: true + in: query + name: subject_set.object + required: false + schema: + type: string + style: form + - description: Relation of the Subject Set + explode: true + in: query + name: subject_set.relation + required: false + schema: + type: string + style: form + responses: + "204": + description: Empty responses are sent when, for example, resources are deleted. + The HTTP status code for empty responses is typically 201. + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/genericError' + description: genericError + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/genericError' + description: genericError + summary: Delete Relation Tuples + tags: + - write + get: + description: Get all relation tuples that match the query. Only the namespace + field is required. + operationId: getRelationTuples + parameters: + - explode: true + in: query + name: page_token + required: false + schema: + type: string + style: form + - explode: true + in: query + name: page_size + required: false + schema: + format: int64 + type: integer + style: form + - description: Namespace of the Relation Tuple + explode: true + in: query + name: namespace + required: false + schema: + type: string + style: form + - description: Object of the Relation Tuple + explode: true + in: query + name: object + required: false + schema: + type: string + style: form + - description: Relation of the Relation Tuple + explode: true + in: query + name: relation + required: false + schema: + type: string + style: form + - description: SubjectID of the Relation Tuple + explode: true + in: query + name: subject_id + required: false + schema: + type: string + style: form + - description: Namespace of the Subject Set + explode: true + in: query + name: subject_set.namespace + required: false + schema: + type: string + style: form + - description: Object of the Subject Set + explode: true + in: query + name: subject_set.object + required: false + schema: + type: string + style: form + - description: Relation of the Subject Set + explode: true + in: query + name: subject_set.relation + required: false + schema: + type: string + style: form + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/getRelationTuplesResponse' + description: getRelationTuplesResponse + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/genericError' + description: genericError + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/genericError' + description: genericError + summary: Query relation tuples + tags: + - read + patch: + description: Use this endpoint to patch one or more relation tuples. + operationId: patchRelationTuples + requestBody: + content: + application/json: + schema: + items: + $ref: '#/components/schemas/PatchDelta' + type: array + x-originalParamName: Payload + responses: + "204": + description: Empty responses are sent when, for example, resources are deleted. + The HTTP status code for empty responses is typically 201. + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/genericError' + description: genericError + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/genericError' + description: genericError + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/genericError' + description: genericError + summary: Patch Multiple Relation Tuples + tags: + - write + put: + description: Use this endpoint to create a relation tuple. + operationId: createRelationTuple + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RelationQuery' + x-originalParamName: Payload + responses: + "201": + content: + application/json: + schema: + $ref: '#/components/schemas/RelationQuery' + description: RelationQuery + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/genericError' + description: genericError + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/genericError' + description: genericError + summary: Create a Relation Tuple + tags: + - write + /version: + get: + description: |- + This endpoint returns the version of Ory Keto. + + 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 version will never + refer to the cluster state, only to a single instance. + operationId: getVersion + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/inline_response_200_1' + description: Returns the Ory Keto version. + summary: Return Running Software Version. + tags: + - metadata +components: + responses: + emptyResponse: + description: Empty responses are sent when, for example, resources are deleted. + The HTTP status code for empty responses is typically 201. + schemas: + CreateRelationTupleBadRequestBody: + description: CreateRelationTupleBadRequestBody CreateRelationTupleBadRequestBody + create relation tuple bad request body + properties: + code: + description: code + format: int64 + type: integer + details: + description: details + items: + type: object + type: array + message: + description: message + type: string + reason: + description: reason + type: string + request: + description: request + type: string + status: + description: status + type: string + type: object + CreateRelationTupleInternalServerErrorBody: + description: CreateRelationTupleInternalServerErrorBody CreateRelationTupleInternalServerErrorBody + create relation tuple internal server error body + properties: + code: + description: code + format: int64 + type: integer + details: + description: details + items: + type: object + type: array + message: + description: message + type: string + reason: + description: reason + type: string + request: + description: request + type: string + status: + description: status + type: string + type: object + DeleteRelationTuplesBadRequestBody: + description: DeleteRelationTuplesBadRequestBody DeleteRelationTuplesBadRequestBody + DeleteRelationTuplesBadRequestBody DeleteRelationTuplesBadRequestBody DeleteRelationTuplesBadRequestBody + delete relation tuples bad request body + properties: + code: + description: code + format: int64 + type: integer + details: + description: details + items: + type: object + type: array + message: + description: message + type: string + reason: + description: reason + type: string + request: + description: request + type: string + status: + description: status + type: string + type: object + DeleteRelationTuplesInternalServerErrorBody: + description: DeleteRelationTuplesInternalServerErrorBody DeleteRelationTuplesInternalServerErrorBody + delete relation tuples internal server error body + properties: + code: + description: code + format: int64 + type: integer + details: + description: details + items: + type: object + type: array + message: + description: message + type: string + reason: + description: reason + type: string + request: + description: request + type: string + status: + description: status + type: string + type: object + GetCheckBadRequestBody: + description: GetCheckBadRequestBody GetCheckBadRequestBody GetCheckBadRequestBody + GetCheckBadRequestBody GetCheckBadRequestBody get check bad request body + properties: + code: + description: code + format: int64 + type: integer + details: + description: details + items: + type: object + type: array + message: + description: message + type: string + reason: + description: reason + type: string + request: + description: request + type: string + status: + description: status + type: string + type: object + GetCheckInternalServerErrorBody: + description: GetCheckInternalServerErrorBody GetCheckInternalServerErrorBody + GetCheckInternalServerErrorBody get check internal server error body + properties: + code: + description: code + format: int64 + type: integer + details: + description: details + items: + type: object + type: array + message: + description: message + type: string + reason: + description: reason + type: string + request: + description: request + type: string + status: + description: status + type: string + type: object + GetExpandBadRequestBody: + description: GetExpandBadRequestBody GetExpandBadRequestBody GetExpandBadRequestBody + GetExpandBadRequestBody get expand bad request body + properties: + code: + description: code + format: int64 + type: integer + details: + description: details + items: + type: object + type: array + message: + description: message + type: string + reason: + description: reason + type: string + request: + description: request + type: string + status: + description: status + type: string + type: object + GetExpandInternalServerErrorBody: + description: GetExpandInternalServerErrorBody GetExpandInternalServerErrorBody + get expand internal server error body + properties: + code: + description: code + format: int64 + type: integer + details: + description: details + items: + type: object + type: array + message: + description: message + type: string + reason: + description: reason + type: string + request: + description: request + type: string + status: + description: status + type: string + type: object + GetExpandNotFoundBody: + description: GetExpandNotFoundBody GetExpandNotFoundBody GetExpandNotFoundBody + GetExpandNotFoundBody get expand not found body + properties: + code: + description: code + format: int64 + type: integer + details: + description: details + items: + type: object + type: array + message: + description: message + type: string + reason: + description: reason + type: string + request: + description: request + type: string + status: + description: status + type: string + type: object + GetRelationTuplesInternalServerErrorBody: + description: GetRelationTuplesInternalServerErrorBody GetRelationTuplesInternalServerErrorBody + get relation tuples internal server error body + properties: + code: + description: code + format: int64 + type: integer + details: + description: details + items: + type: object + type: array + message: + description: message + type: string + reason: + description: reason + type: string + request: + description: request + type: string + status: + description: status + type: string + type: object + GetRelationTuplesNotFoundBody: + description: GetRelationTuplesNotFoundBody GetRelationTuplesNotFoundBody get + relation tuples not found body + properties: + code: + description: code + format: int64 + type: integer + details: + description: details + items: + type: object + type: array + message: + description: message + type: string + reason: + description: reason + type: string + request: + description: request + type: string + status: + description: status + type: string + type: object + InternalRelationTuple: + example: + subject_id: subject_id + namespace: namespace + object: object + relation: relation + subject_set: + namespace: namespace + object: object + relation: relation + properties: + namespace: + description: Namespace of the Relation Tuple + type: string + object: + description: Object of the Relation Tuple + type: string + relation: + description: Relation of the Relation Tuple + type: string + subject_id: + description: |- + SubjectID of the Relation Tuple + + Either SubjectSet or SubjectID are required. + type: string + subject_set: + $ref: '#/components/schemas/SubjectSet' + required: + - namespace + - object + - relation + type: object + IsInstanceAliveInternalServerErrorBody: + description: IsInstanceAliveInternalServerErrorBody IsInstanceAliveInternalServerErrorBody + IsInstanceAliveInternalServerErrorBody IsInstanceAliveInternalServerErrorBody + is instance alive internal server error body + properties: + code: + description: code + format: int64 + type: integer + details: + description: details + items: + type: object + type: array + message: + description: message + type: string + reason: + description: reason + type: string + request: + description: request + type: string + status: + description: status + type: string + type: object + PatchDelta: + description: PatchDelta PatchDelta PatchDelta PatchDelta PatchDelta PatchDelta + patch delta + example: + relation_tuple: + subject_id: subject_id + namespace: namespace + object: object + relation: relation + subject_set: + namespace: namespace + object: object + relation: relation + action: '[[[[[[insert delete]]]]]]' + properties: + action: + description: action + enum: + - '[[[[[[insert delete]]]]]]' + type: string + relation_tuple: + $ref: '#/components/schemas/InternalRelationTuple' + type: object + PatchRelationTuplesBadRequestBody: + description: PatchRelationTuplesBadRequestBody PatchRelationTuplesBadRequestBody + patch relation tuples bad request body + properties: + code: + description: code + format: int64 + type: integer + details: + description: details + items: + type: object + type: array + message: + description: message + type: string + reason: + description: reason + type: string + request: + description: request + type: string + status: + description: status + type: string + type: object + PatchRelationTuplesInternalServerErrorBody: + description: PatchRelationTuplesInternalServerErrorBody PatchRelationTuplesInternalServerErrorBody + patch relation tuples internal server error body + properties: + code: + description: code + format: int64 + type: integer + details: + description: details + items: + type: object + type: array + message: + description: message + type: string + reason: + description: reason + type: string + request: + description: request + type: string + status: + description: status + type: string + type: object + PatchRelationTuplesNotFoundBody: + description: PatchRelationTuplesNotFoundBody PatchRelationTuplesNotFoundBody + patch relation tuples not found body + properties: + code: + description: code + format: int64 + type: integer + details: + description: details + items: + type: object + type: array + message: + description: message + type: string + reason: + description: reason + type: string + request: + description: request + type: string + status: + description: status + type: string + type: object + PostCheckBadRequestBody: + description: PostCheckBadRequestBody PostCheckBadRequestBody PostCheckBadRequestBody + PostCheckBadRequestBody PostCheckBadRequestBody PostCheckBadRequestBody post + check bad request body + properties: + code: + description: code + format: int64 + type: integer + details: + description: details + items: + type: object + type: array + message: + description: message + type: string + reason: + description: reason + type: string + request: + description: request + type: string + status: + description: status + type: string + type: object + PostCheckInternalServerErrorBody: + description: PostCheckInternalServerErrorBody PostCheckInternalServerErrorBody + post check internal server error body + properties: + code: + description: code + format: int64 + type: integer + details: + description: details + items: + type: object + type: array + message: + description: message + type: string + reason: + description: reason + type: string + request: + description: request + type: string + status: + description: status + type: string + type: object + RelationQuery: + description: RelationQuery RelationQuery RelationQuery RelationQuery RelationQuery + RelationQuery relation query + example: + subject_id: subject_id + namespace: namespace + object: object + relation: relation + subject_set: + namespace: namespace + object: object + relation: relation + properties: + namespace: + description: Namespace of the Relation Tuple + type: string + object: + description: Object of the Relation Tuple + type: string + relation: + description: Relation of the Relation Tuple + type: string + subject_id: + description: |- + SubjectID of the Relation Tuple + + Either SubjectSet or SubjectID can be provided. + type: string + subject_set: + $ref: '#/components/schemas/SubjectSet' + type: object + SubjectSet: + example: + namespace: namespace + object: object + relation: relation + properties: + namespace: + description: Namespace of the Subject Set + type: string + object: + description: Object of the Subject Set + type: string + relation: + description: Relation of the Subject Set + type: string + required: + - namespace + - object + - relation + type: object + UUID: + format: uuid4 + type: string + expandTree: + example: + subject_id: subject_id + children: + - null + - null + type: union + subject_set: + namespace: namespace + object: object + relation: relation + properties: + children: + description: children + items: + $ref: '#/components/schemas/expandTree' + type: array + subject_id: + description: subject id + type: string + subject_set: + $ref: '#/components/schemas/SubjectSet' + type: + enum: + - union + - exclusion + - intersection + - leaf + type: string + required: + - type + type: object + genericError: + description: The standard error format + properties: + code: + description: code + format: int64 + type: integer + details: + description: details + items: + additionalProperties: true + type: object + type: array + message: + description: message + type: string + reason: + description: reason + type: string + request: + description: request + type: string + status: + description: status + type: string + type: object + getCheckResponse: + description: The content of the allowed field is mirrored in the HTTP status + code. + example: + allowed: true + properties: + allowed: + description: whether the relation tuple is allowed + type: boolean + required: + - allowed + title: GetCheckResponse Represents the response for a check request. + type: object + getRelationTuplesResponse: + description: GetRelationTuplesResponse GetRelationTuplesResponse GetRelationTuplesResponse + GetRelationTuplesResponse GetRelationTuplesResponse get relation tuples response + example: + next_page_token: next_page_token + relation_tuples: + - subject_id: subject_id + namespace: namespace + object: object + relation: relation + subject_set: + namespace: namespace + object: object + relation: relation + - subject_id: subject_id + namespace: namespace + object: object + relation: relation + subject_set: + namespace: namespace + object: object + relation: relation + properties: + next_page_token: + description: |- + The opaque token to provide in a subsequent request + to get the next page. It is the empty string iff this is + the last page. + type: string + relation_tuples: + description: relation tuples + items: + $ref: '#/components/schemas/InternalRelationTuple' + type: array + type: object + healthNotReadyStatus: + properties: + errors: + additionalProperties: + type: string + description: Errors contains a list of errors that caused the not ready + status. + type: object + type: object + healthStatus: + description: HealthStatus health status + properties: + status: + description: Status always contains "ok". + type: string + type: object + subject: + description: Subject Subject Subject subject + type: object + version: + properties: + version: + description: Version is the service's version. + type: string + type: object + inline_response_200: + example: + status: status + properties: + status: + description: Always "ok". + type: string + required: + - status + type: object + inline_response_503: + properties: + errors: + additionalProperties: + type: string + description: Errors contains a list of errors that caused the not ready + status. + type: object + required: + - errors + type: object + inline_response_200_1: + example: + version: version + properties: + version: + description: The version of Ory Keto. + type: string + required: + - version + type: object diff --git a/internal/httpclient-next/api_metadata.go b/internal/httpclient-next/api_metadata.go new file mode 100644 index 000000000..0318ee000 --- /dev/null +++ b/internal/httpclient-next/api_metadata.go @@ -0,0 +1,434 @@ +/* + * Ory Oathkeeper API + * + * Documentation for all of Ory Oathkeeper's APIs. + * + * API version: 1.0.0 + * Contact: hi@ory.sh + */ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package client + +import ( + "bytes" + "context" + "io/ioutil" + "net/http" + "net/url" +) + +// Linger please +var ( + _ context.Context +) + +type MetadataApi interface { + + /* + * GetVersion Return Running Software Version. + * This endpoint returns the version of Ory Keto. + + 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 version will never + refer to the cluster state, only to a single instance. + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @return MetadataApiApiGetVersionRequest + */ + GetVersion(ctx context.Context) MetadataApiApiGetVersionRequest + + /* + * GetVersionExecute executes the request + * @return InlineResponse2001 + */ + GetVersionExecute(r MetadataApiApiGetVersionRequest) (*InlineResponse2001, *http.Response, error) + + /* + * IsAlive Check HTTP Server Status + * This endpoint returns a HTTP 200 status code when Ory Keto is accepting incoming + HTTP requests. 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. + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @return MetadataApiApiIsAliveRequest + */ + IsAlive(ctx context.Context) MetadataApiApiIsAliveRequest + + /* + * IsAliveExecute executes the request + * @return InlineResponse200 + */ + IsAliveExecute(r MetadataApiApiIsAliveRequest) (*InlineResponse200, *http.Response, error) + + /* + * IsReady Check HTTP Server and Database Status + * This endpoint returns a HTTP 200 status code when Ory Keto 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 Ory Keto, the health status will never + refer to the cluster state, only to a single instance. + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @return MetadataApiApiIsReadyRequest + */ + IsReady(ctx context.Context) MetadataApiApiIsReadyRequest + + /* + * IsReadyExecute executes the request + * @return InlineResponse200 + */ + IsReadyExecute(r MetadataApiApiIsReadyRequest) (*InlineResponse200, *http.Response, error) +} + +// MetadataApiService MetadataApi service +type MetadataApiService service + +type MetadataApiApiGetVersionRequest struct { + ctx context.Context + ApiService MetadataApi +} + +func (r MetadataApiApiGetVersionRequest) Execute() (*InlineResponse2001, *http.Response, error) { + return r.ApiService.GetVersionExecute(r) +} + +/* + * GetVersion Return Running Software Version. + * This endpoint returns the version of Ory Keto. + +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 version will never +refer to the cluster state, only to a single instance. + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @return MetadataApiApiGetVersionRequest +*/ +func (a *MetadataApiService) GetVersion(ctx context.Context) MetadataApiApiGetVersionRequest { + return MetadataApiApiGetVersionRequest{ + ApiService: a, + ctx: ctx, + } +} + +/* + * Execute executes the request + * @return InlineResponse2001 + */ +func (a *MetadataApiService) GetVersionExecute(r MetadataApiApiGetVersionRequest) (*InlineResponse2001, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodGet + localVarPostBody interface{} + localVarFormFileName string + localVarFileName string + localVarFileBytes []byte + localVarReturnValue *InlineResponse2001 + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "MetadataApiService.GetVersion") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/version" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = ioutil.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} + +type MetadataApiApiIsAliveRequest struct { + ctx context.Context + ApiService MetadataApi +} + +func (r MetadataApiApiIsAliveRequest) Execute() (*InlineResponse200, *http.Response, error) { + return r.ApiService.IsAliveExecute(r) +} + +/* + * IsAlive Check HTTP Server Status + * This endpoint returns a HTTP 200 status code when Ory Keto is accepting incoming +HTTP requests. 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. + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @return MetadataApiApiIsAliveRequest +*/ +func (a *MetadataApiService) IsAlive(ctx context.Context) MetadataApiApiIsAliveRequest { + return MetadataApiApiIsAliveRequest{ + ApiService: a, + ctx: ctx, + } +} + +/* + * Execute executes the request + * @return InlineResponse200 + */ +func (a *MetadataApiService) IsAliveExecute(r MetadataApiApiIsAliveRequest) (*InlineResponse200, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodGet + localVarPostBody interface{} + localVarFormFileName string + localVarFileName string + localVarFileBytes []byte + localVarReturnValue *InlineResponse200 + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "MetadataApiService.IsAlive") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/health/alive" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = ioutil.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 500 { + var v GenericError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} + +type MetadataApiApiIsReadyRequest struct { + ctx context.Context + ApiService MetadataApi +} + +func (r MetadataApiApiIsReadyRequest) Execute() (*InlineResponse200, *http.Response, error) { + return r.ApiService.IsReadyExecute(r) +} + +/* + * IsReady Check HTTP Server and Database Status + * This endpoint returns a HTTP 200 status code when Ory Keto 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 Ory Keto, the health status will never +refer to the cluster state, only to a single instance. + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @return MetadataApiApiIsReadyRequest +*/ +func (a *MetadataApiService) IsReady(ctx context.Context) MetadataApiApiIsReadyRequest { + return MetadataApiApiIsReadyRequest{ + ApiService: a, + ctx: ctx, + } +} + +/* + * Execute executes the request + * @return InlineResponse200 + */ +func (a *MetadataApiService) IsReadyExecute(r MetadataApiApiIsReadyRequest) (*InlineResponse200, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodGet + localVarPostBody interface{} + localVarFormFileName string + localVarFileName string + localVarFileBytes []byte + localVarReturnValue *InlineResponse200 + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "MetadataApiService.IsReady") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/health/ready" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = ioutil.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 503 { + var v InlineResponse503 + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} diff --git a/internal/httpclient-next/api_read.go b/internal/httpclient-next/api_read.go new file mode 100644 index 000000000..47fb7bddd --- /dev/null +++ b/internal/httpclient-next/api_read.go @@ -0,0 +1,787 @@ +/* + * Ory Oathkeeper API + * + * Documentation for all of Ory Oathkeeper's APIs. + * + * API version: 1.0.0 + * Contact: hi@ory.sh + */ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package client + +import ( + "bytes" + "context" + "io/ioutil" + "net/http" + "net/url" +) + +// Linger please +var ( + _ context.Context +) + +type ReadApi interface { + + /* + * GetCheck Check a relation tuple + * To learn how relation tuples and the check works, head over to [the documentation](../concepts/relation-tuples.mdx). + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @return ReadApiApiGetCheckRequest + */ + GetCheck(ctx context.Context) ReadApiApiGetCheckRequest + + /* + * GetCheckExecute executes the request + * @return GetCheckResponse + */ + GetCheckExecute(r ReadApiApiGetCheckRequest) (*GetCheckResponse, *http.Response, error) + + /* + * GetExpand Expand a Relation Tuple + * Use this endpoint to expand a relation tuple. + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @return ReadApiApiGetExpandRequest + */ + GetExpand(ctx context.Context) ReadApiApiGetExpandRequest + + /* + * GetExpandExecute executes the request + * @return ExpandTree + */ + GetExpandExecute(r ReadApiApiGetExpandRequest) (*ExpandTree, *http.Response, error) + + /* + * GetRelationTuples Query relation tuples + * Get all relation tuples that match the query. Only the namespace field is required. + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @return ReadApiApiGetRelationTuplesRequest + */ + GetRelationTuples(ctx context.Context) ReadApiApiGetRelationTuplesRequest + + /* + * GetRelationTuplesExecute executes the request + * @return GetRelationTuplesResponse + */ + GetRelationTuplesExecute(r ReadApiApiGetRelationTuplesRequest) (*GetRelationTuplesResponse, *http.Response, error) + + /* + * PostCheck Check a relation tuple + * To learn how relation tuples and the check works, head over to [the documentation](../concepts/relation-tuples.mdx). + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @return ReadApiApiPostCheckRequest + */ + PostCheck(ctx context.Context) ReadApiApiPostCheckRequest + + /* + * PostCheckExecute executes the request + * @return GetCheckResponse + */ + PostCheckExecute(r ReadApiApiPostCheckRequest) (*GetCheckResponse, *http.Response, error) +} + +// ReadApiService ReadApi service +type ReadApiService service + +type ReadApiApiGetCheckRequest struct { + ctx context.Context + ApiService ReadApi + namespace *string + object *string + relation *string + subjectId *string + subjectSetNamespace *string + subjectSetObject *string + subjectSetRelation *string + maxDepth *int64 +} + +func (r ReadApiApiGetCheckRequest) Namespace(namespace string) ReadApiApiGetCheckRequest { + r.namespace = &namespace + return r +} +func (r ReadApiApiGetCheckRequest) Object(object string) ReadApiApiGetCheckRequest { + r.object = &object + return r +} +func (r ReadApiApiGetCheckRequest) Relation(relation string) ReadApiApiGetCheckRequest { + r.relation = &relation + return r +} +func (r ReadApiApiGetCheckRequest) SubjectId(subjectId string) ReadApiApiGetCheckRequest { + r.subjectId = &subjectId + return r +} +func (r ReadApiApiGetCheckRequest) SubjectSetNamespace(subjectSetNamespace string) ReadApiApiGetCheckRequest { + r.subjectSetNamespace = &subjectSetNamespace + return r +} +func (r ReadApiApiGetCheckRequest) SubjectSetObject(subjectSetObject string) ReadApiApiGetCheckRequest { + r.subjectSetObject = &subjectSetObject + return r +} +func (r ReadApiApiGetCheckRequest) SubjectSetRelation(subjectSetRelation string) ReadApiApiGetCheckRequest { + r.subjectSetRelation = &subjectSetRelation + return r +} +func (r ReadApiApiGetCheckRequest) MaxDepth(maxDepth int64) ReadApiApiGetCheckRequest { + r.maxDepth = &maxDepth + return r +} + +func (r ReadApiApiGetCheckRequest) Execute() (*GetCheckResponse, *http.Response, error) { + return r.ApiService.GetCheckExecute(r) +} + +/* + * GetCheck Check a relation tuple + * To learn how relation tuples and the check works, head over to [the documentation](../concepts/relation-tuples.mdx). + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @return ReadApiApiGetCheckRequest + */ +func (a *ReadApiService) GetCheck(ctx context.Context) ReadApiApiGetCheckRequest { + return ReadApiApiGetCheckRequest{ + ApiService: a, + ctx: ctx, + } +} + +/* + * Execute executes the request + * @return GetCheckResponse + */ +func (a *ReadApiService) GetCheckExecute(r ReadApiApiGetCheckRequest) (*GetCheckResponse, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodGet + localVarPostBody interface{} + localVarFormFileName string + localVarFileName string + localVarFileBytes []byte + localVarReturnValue *GetCheckResponse + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "ReadApiService.GetCheck") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/check" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + if r.namespace != nil { + localVarQueryParams.Add("namespace", parameterToString(*r.namespace, "")) + } + if r.object != nil { + localVarQueryParams.Add("object", parameterToString(*r.object, "")) + } + if r.relation != nil { + localVarQueryParams.Add("relation", parameterToString(*r.relation, "")) + } + if r.subjectId != nil { + localVarQueryParams.Add("subject_id", parameterToString(*r.subjectId, "")) + } + if r.subjectSetNamespace != nil { + localVarQueryParams.Add("subject_set.namespace", parameterToString(*r.subjectSetNamespace, "")) + } + if r.subjectSetObject != nil { + localVarQueryParams.Add("subject_set.object", parameterToString(*r.subjectSetObject, "")) + } + if r.subjectSetRelation != nil { + localVarQueryParams.Add("subject_set.relation", parameterToString(*r.subjectSetRelation, "")) + } + if r.maxDepth != nil { + localVarQueryParams.Add("max-depth", parameterToString(*r.maxDepth, "")) + } + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = ioutil.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 400 { + var v GenericError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 403 { + var v GetCheckResponse + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 500 { + var v GenericError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} + +type ReadApiApiGetExpandRequest struct { + ctx context.Context + ApiService ReadApi + namespace *string + object *string + relation *string + maxDepth *int64 +} + +func (r ReadApiApiGetExpandRequest) Namespace(namespace string) ReadApiApiGetExpandRequest { + r.namespace = &namespace + return r +} +func (r ReadApiApiGetExpandRequest) Object(object string) ReadApiApiGetExpandRequest { + r.object = &object + return r +} +func (r ReadApiApiGetExpandRequest) Relation(relation string) ReadApiApiGetExpandRequest { + r.relation = &relation + return r +} +func (r ReadApiApiGetExpandRequest) MaxDepth(maxDepth int64) ReadApiApiGetExpandRequest { + r.maxDepth = &maxDepth + return r +} + +func (r ReadApiApiGetExpandRequest) Execute() (*ExpandTree, *http.Response, error) { + return r.ApiService.GetExpandExecute(r) +} + +/* + * GetExpand Expand a Relation Tuple + * Use this endpoint to expand a relation tuple. + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @return ReadApiApiGetExpandRequest + */ +func (a *ReadApiService) GetExpand(ctx context.Context) ReadApiApiGetExpandRequest { + return ReadApiApiGetExpandRequest{ + ApiService: a, + ctx: ctx, + } +} + +/* + * Execute executes the request + * @return ExpandTree + */ +func (a *ReadApiService) GetExpandExecute(r ReadApiApiGetExpandRequest) (*ExpandTree, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodGet + localVarPostBody interface{} + localVarFormFileName string + localVarFileName string + localVarFileBytes []byte + localVarReturnValue *ExpandTree + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "ReadApiService.GetExpand") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/expand" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + if r.namespace == nil { + return localVarReturnValue, nil, reportError("namespace is required and must be specified") + } + if r.object == nil { + return localVarReturnValue, nil, reportError("object is required and must be specified") + } + if r.relation == nil { + return localVarReturnValue, nil, reportError("relation is required and must be specified") + } + + localVarQueryParams.Add("namespace", parameterToString(*r.namespace, "")) + localVarQueryParams.Add("object", parameterToString(*r.object, "")) + localVarQueryParams.Add("relation", parameterToString(*r.relation, "")) + if r.maxDepth != nil { + localVarQueryParams.Add("max-depth", parameterToString(*r.maxDepth, "")) + } + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = ioutil.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 400 { + var v GenericError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 404 { + var v GenericError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 500 { + var v GenericError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} + +type ReadApiApiGetRelationTuplesRequest struct { + ctx context.Context + ApiService ReadApi + pageToken *string + pageSize *int64 + namespace *string + object *string + relation *string + subjectId *string + subjectSetNamespace *string + subjectSetObject *string + subjectSetRelation *string +} + +func (r ReadApiApiGetRelationTuplesRequest) PageToken(pageToken string) ReadApiApiGetRelationTuplesRequest { + r.pageToken = &pageToken + return r +} +func (r ReadApiApiGetRelationTuplesRequest) PageSize(pageSize int64) ReadApiApiGetRelationTuplesRequest { + r.pageSize = &pageSize + return r +} +func (r ReadApiApiGetRelationTuplesRequest) Namespace(namespace string) ReadApiApiGetRelationTuplesRequest { + r.namespace = &namespace + return r +} +func (r ReadApiApiGetRelationTuplesRequest) Object(object string) ReadApiApiGetRelationTuplesRequest { + r.object = &object + return r +} +func (r ReadApiApiGetRelationTuplesRequest) Relation(relation string) ReadApiApiGetRelationTuplesRequest { + r.relation = &relation + return r +} +func (r ReadApiApiGetRelationTuplesRequest) SubjectId(subjectId string) ReadApiApiGetRelationTuplesRequest { + r.subjectId = &subjectId + return r +} +func (r ReadApiApiGetRelationTuplesRequest) SubjectSetNamespace(subjectSetNamespace string) ReadApiApiGetRelationTuplesRequest { + r.subjectSetNamespace = &subjectSetNamespace + return r +} +func (r ReadApiApiGetRelationTuplesRequest) SubjectSetObject(subjectSetObject string) ReadApiApiGetRelationTuplesRequest { + r.subjectSetObject = &subjectSetObject + return r +} +func (r ReadApiApiGetRelationTuplesRequest) SubjectSetRelation(subjectSetRelation string) ReadApiApiGetRelationTuplesRequest { + r.subjectSetRelation = &subjectSetRelation + return r +} + +func (r ReadApiApiGetRelationTuplesRequest) Execute() (*GetRelationTuplesResponse, *http.Response, error) { + return r.ApiService.GetRelationTuplesExecute(r) +} + +/* + * GetRelationTuples Query relation tuples + * Get all relation tuples that match the query. Only the namespace field is required. + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @return ReadApiApiGetRelationTuplesRequest + */ +func (a *ReadApiService) GetRelationTuples(ctx context.Context) ReadApiApiGetRelationTuplesRequest { + return ReadApiApiGetRelationTuplesRequest{ + ApiService: a, + ctx: ctx, + } +} + +/* + * Execute executes the request + * @return GetRelationTuplesResponse + */ +func (a *ReadApiService) GetRelationTuplesExecute(r ReadApiApiGetRelationTuplesRequest) (*GetRelationTuplesResponse, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodGet + localVarPostBody interface{} + localVarFormFileName string + localVarFileName string + localVarFileBytes []byte + localVarReturnValue *GetRelationTuplesResponse + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "ReadApiService.GetRelationTuples") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/relation-tuples" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + if r.pageToken != nil { + localVarQueryParams.Add("page_token", parameterToString(*r.pageToken, "")) + } + if r.pageSize != nil { + localVarQueryParams.Add("page_size", parameterToString(*r.pageSize, "")) + } + if r.namespace != nil { + localVarQueryParams.Add("namespace", parameterToString(*r.namespace, "")) + } + if r.object != nil { + localVarQueryParams.Add("object", parameterToString(*r.object, "")) + } + if r.relation != nil { + localVarQueryParams.Add("relation", parameterToString(*r.relation, "")) + } + if r.subjectId != nil { + localVarQueryParams.Add("subject_id", parameterToString(*r.subjectId, "")) + } + if r.subjectSetNamespace != nil { + localVarQueryParams.Add("subject_set.namespace", parameterToString(*r.subjectSetNamespace, "")) + } + if r.subjectSetObject != nil { + localVarQueryParams.Add("subject_set.object", parameterToString(*r.subjectSetObject, "")) + } + if r.subjectSetRelation != nil { + localVarQueryParams.Add("subject_set.relation", parameterToString(*r.subjectSetRelation, "")) + } + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = ioutil.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 404 { + var v GenericError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 500 { + var v GenericError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} + +type ReadApiApiPostCheckRequest struct { + ctx context.Context + ApiService ReadApi + maxDepth *int64 + relationQuery *RelationQuery +} + +func (r ReadApiApiPostCheckRequest) MaxDepth(maxDepth int64) ReadApiApiPostCheckRequest { + r.maxDepth = &maxDepth + return r +} +func (r ReadApiApiPostCheckRequest) RelationQuery(relationQuery RelationQuery) ReadApiApiPostCheckRequest { + r.relationQuery = &relationQuery + return r +} + +func (r ReadApiApiPostCheckRequest) Execute() (*GetCheckResponse, *http.Response, error) { + return r.ApiService.PostCheckExecute(r) +} + +/* + * PostCheck Check a relation tuple + * To learn how relation tuples and the check works, head over to [the documentation](../concepts/relation-tuples.mdx). + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @return ReadApiApiPostCheckRequest + */ +func (a *ReadApiService) PostCheck(ctx context.Context) ReadApiApiPostCheckRequest { + return ReadApiApiPostCheckRequest{ + ApiService: a, + ctx: ctx, + } +} + +/* + * Execute executes the request + * @return GetCheckResponse + */ +func (a *ReadApiService) PostCheckExecute(r ReadApiApiPostCheckRequest) (*GetCheckResponse, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodPost + localVarPostBody interface{} + localVarFormFileName string + localVarFileName string + localVarFileBytes []byte + localVarReturnValue *GetCheckResponse + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "ReadApiService.PostCheck") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/check" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + if r.maxDepth != nil { + localVarQueryParams.Add("max-depth", parameterToString(*r.maxDepth, "")) + } + // to determine the Content-Type header + localVarHTTPContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + // body params + localVarPostBody = r.relationQuery + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = ioutil.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 400 { + var v GenericError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 403 { + var v GetCheckResponse + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 500 { + var v GenericError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} diff --git a/internal/httpclient-next/api_write.go b/internal/httpclient-next/api_write.go new file mode 100644 index 000000000..0bf936978 --- /dev/null +++ b/internal/httpclient-next/api_write.go @@ -0,0 +1,492 @@ +/* + * Ory Oathkeeper API + * + * Documentation for all of Ory Oathkeeper's APIs. + * + * API version: 1.0.0 + * Contact: hi@ory.sh + */ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package client + +import ( + "bytes" + "context" + "io/ioutil" + "net/http" + "net/url" +) + +// Linger please +var ( + _ context.Context +) + +type WriteApi interface { + + /* + * CreateRelationTuple Create a Relation Tuple + * Use this endpoint to create a relation tuple. + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @return WriteApiApiCreateRelationTupleRequest + */ + CreateRelationTuple(ctx context.Context) WriteApiApiCreateRelationTupleRequest + + /* + * CreateRelationTupleExecute executes the request + * @return RelationQuery + */ + CreateRelationTupleExecute(r WriteApiApiCreateRelationTupleRequest) (*RelationQuery, *http.Response, error) + + /* + * DeleteRelationTuples Delete Relation Tuples + * Use this endpoint to delete relation tuples + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @return WriteApiApiDeleteRelationTuplesRequest + */ + DeleteRelationTuples(ctx context.Context) WriteApiApiDeleteRelationTuplesRequest + + /* + * DeleteRelationTuplesExecute executes the request + */ + DeleteRelationTuplesExecute(r WriteApiApiDeleteRelationTuplesRequest) (*http.Response, error) + + /* + * PatchRelationTuples Patch Multiple Relation Tuples + * Use this endpoint to patch one or more relation tuples. + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @return WriteApiApiPatchRelationTuplesRequest + */ + PatchRelationTuples(ctx context.Context) WriteApiApiPatchRelationTuplesRequest + + /* + * PatchRelationTuplesExecute executes the request + */ + PatchRelationTuplesExecute(r WriteApiApiPatchRelationTuplesRequest) (*http.Response, error) +} + +// WriteApiService WriteApi service +type WriteApiService service + +type WriteApiApiCreateRelationTupleRequest struct { + ctx context.Context + ApiService WriteApi + relationQuery *RelationQuery +} + +func (r WriteApiApiCreateRelationTupleRequest) RelationQuery(relationQuery RelationQuery) WriteApiApiCreateRelationTupleRequest { + r.relationQuery = &relationQuery + return r +} + +func (r WriteApiApiCreateRelationTupleRequest) Execute() (*RelationQuery, *http.Response, error) { + return r.ApiService.CreateRelationTupleExecute(r) +} + +/* + * CreateRelationTuple Create a Relation Tuple + * Use this endpoint to create a relation tuple. + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @return WriteApiApiCreateRelationTupleRequest + */ +func (a *WriteApiService) CreateRelationTuple(ctx context.Context) WriteApiApiCreateRelationTupleRequest { + return WriteApiApiCreateRelationTupleRequest{ + ApiService: a, + ctx: ctx, + } +} + +/* + * Execute executes the request + * @return RelationQuery + */ +func (a *WriteApiService) CreateRelationTupleExecute(r WriteApiApiCreateRelationTupleRequest) (*RelationQuery, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodPut + localVarPostBody interface{} + localVarFormFileName string + localVarFileName string + localVarFileBytes []byte + localVarReturnValue *RelationQuery + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "WriteApiService.CreateRelationTuple") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/relation-tuples" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHTTPContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + // body params + localVarPostBody = r.relationQuery + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = ioutil.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 400 { + var v GenericError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 500 { + var v GenericError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} + +type WriteApiApiDeleteRelationTuplesRequest struct { + ctx context.Context + ApiService WriteApi + namespace *string + object *string + relation *string + subjectId *string + subjectSetNamespace *string + subjectSetObject *string + subjectSetRelation *string +} + +func (r WriteApiApiDeleteRelationTuplesRequest) Namespace(namespace string) WriteApiApiDeleteRelationTuplesRequest { + r.namespace = &namespace + return r +} +func (r WriteApiApiDeleteRelationTuplesRequest) Object(object string) WriteApiApiDeleteRelationTuplesRequest { + r.object = &object + return r +} +func (r WriteApiApiDeleteRelationTuplesRequest) Relation(relation string) WriteApiApiDeleteRelationTuplesRequest { + r.relation = &relation + return r +} +func (r WriteApiApiDeleteRelationTuplesRequest) SubjectId(subjectId string) WriteApiApiDeleteRelationTuplesRequest { + r.subjectId = &subjectId + return r +} +func (r WriteApiApiDeleteRelationTuplesRequest) SubjectSetNamespace(subjectSetNamespace string) WriteApiApiDeleteRelationTuplesRequest { + r.subjectSetNamespace = &subjectSetNamespace + return r +} +func (r WriteApiApiDeleteRelationTuplesRequest) SubjectSetObject(subjectSetObject string) WriteApiApiDeleteRelationTuplesRequest { + r.subjectSetObject = &subjectSetObject + return r +} +func (r WriteApiApiDeleteRelationTuplesRequest) SubjectSetRelation(subjectSetRelation string) WriteApiApiDeleteRelationTuplesRequest { + r.subjectSetRelation = &subjectSetRelation + return r +} + +func (r WriteApiApiDeleteRelationTuplesRequest) Execute() (*http.Response, error) { + return r.ApiService.DeleteRelationTuplesExecute(r) +} + +/* + * DeleteRelationTuples Delete Relation Tuples + * Use this endpoint to delete relation tuples + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @return WriteApiApiDeleteRelationTuplesRequest + */ +func (a *WriteApiService) DeleteRelationTuples(ctx context.Context) WriteApiApiDeleteRelationTuplesRequest { + return WriteApiApiDeleteRelationTuplesRequest{ + ApiService: a, + ctx: ctx, + } +} + +/* + * Execute executes the request + */ +func (a *WriteApiService) DeleteRelationTuplesExecute(r WriteApiApiDeleteRelationTuplesRequest) (*http.Response, error) { + var ( + localVarHTTPMethod = http.MethodDelete + localVarPostBody interface{} + localVarFormFileName string + localVarFileName string + localVarFileBytes []byte + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "WriteApiService.DeleteRelationTuples") + if err != nil { + return nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/relation-tuples" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + if r.namespace != nil { + localVarQueryParams.Add("namespace", parameterToString(*r.namespace, "")) + } + if r.object != nil { + localVarQueryParams.Add("object", parameterToString(*r.object, "")) + } + if r.relation != nil { + localVarQueryParams.Add("relation", parameterToString(*r.relation, "")) + } + if r.subjectId != nil { + localVarQueryParams.Add("subject_id", parameterToString(*r.subjectId, "")) + } + if r.subjectSetNamespace != nil { + localVarQueryParams.Add("subject_set.namespace", parameterToString(*r.subjectSetNamespace, "")) + } + if r.subjectSetObject != nil { + localVarQueryParams.Add("subject_set.object", parameterToString(*r.subjectSetObject, "")) + } + if r.subjectSetRelation != nil { + localVarQueryParams.Add("subject_set.relation", parameterToString(*r.subjectSetRelation, "")) + } + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes) + if err != nil { + return nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarHTTPResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = ioutil.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 400 { + var v GenericError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarHTTPResponse, newErr + } + newErr.model = v + return localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 500 { + var v GenericError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarHTTPResponse, newErr + } + newErr.model = v + } + return localVarHTTPResponse, newErr + } + + return localVarHTTPResponse, nil +} + +type WriteApiApiPatchRelationTuplesRequest struct { + ctx context.Context + ApiService WriteApi + patchDelta *[]PatchDelta +} + +func (r WriteApiApiPatchRelationTuplesRequest) PatchDelta(patchDelta []PatchDelta) WriteApiApiPatchRelationTuplesRequest { + r.patchDelta = &patchDelta + return r +} + +func (r WriteApiApiPatchRelationTuplesRequest) Execute() (*http.Response, error) { + return r.ApiService.PatchRelationTuplesExecute(r) +} + +/* + * PatchRelationTuples Patch Multiple Relation Tuples + * Use this endpoint to patch one or more relation tuples. + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @return WriteApiApiPatchRelationTuplesRequest + */ +func (a *WriteApiService) PatchRelationTuples(ctx context.Context) WriteApiApiPatchRelationTuplesRequest { + return WriteApiApiPatchRelationTuplesRequest{ + ApiService: a, + ctx: ctx, + } +} + +/* + * Execute executes the request + */ +func (a *WriteApiService) PatchRelationTuplesExecute(r WriteApiApiPatchRelationTuplesRequest) (*http.Response, error) { + var ( + localVarHTTPMethod = http.MethodPatch + localVarPostBody interface{} + localVarFormFileName string + localVarFileName string + localVarFileBytes []byte + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "WriteApiService.PatchRelationTuples") + if err != nil { + return nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/relation-tuples" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHTTPContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + // body params + localVarPostBody = r.patchDelta + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes) + if err != nil { + return nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarHTTPResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = ioutil.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 400 { + var v GenericError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarHTTPResponse, newErr + } + newErr.model = v + return localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 404 { + var v GenericError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarHTTPResponse, newErr + } + newErr.model = v + return localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 500 { + var v GenericError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarHTTPResponse, newErr + } + newErr.model = v + } + return localVarHTTPResponse, newErr + } + + return localVarHTTPResponse, nil +} diff --git a/internal/httpclient-next/client.go b/internal/httpclient-next/client.go new file mode 100644 index 000000000..4719d92a2 --- /dev/null +++ b/internal/httpclient-next/client.go @@ -0,0 +1,547 @@ +/* + * Ory Oathkeeper API + * + * Documentation for all of Ory Oathkeeper's APIs. + * + * API version: 1.0.0 + * Contact: hi@ory.sh + */ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package client + +import ( + "bytes" + "context" + "encoding/json" + "encoding/xml" + "errors" + "fmt" + "io" + "log" + "mime/multipart" + "net/http" + "net/http/httputil" + "net/url" + "os" + "path/filepath" + "reflect" + "regexp" + "strconv" + "strings" + "time" + "unicode/utf8" + + "golang.org/x/oauth2" +) + +var ( + jsonCheck = regexp.MustCompile(`(?i:(?:application|text)/(?:vnd\.[^;]+\+)?json)`) + xmlCheck = regexp.MustCompile(`(?i:(?:application|text)/xml)`) +) + +// APIClient manages communication with the Ory Oathkeeper API API v1.0.0 +// In most cases there should be only one, shared, APIClient. +type APIClient struct { + cfg *Configuration + common service // Reuse a single struct instead of allocating one for each service on the heap. + + // API Services + + MetadataApi MetadataApi + + ReadApi ReadApi + + WriteApi WriteApi +} + +type service struct { + client *APIClient +} + +// NewAPIClient creates a new API client. Requires a userAgent string describing your application. +// optionally a custom http.Client to allow for advanced features such as caching. +func NewAPIClient(cfg *Configuration) *APIClient { + if cfg.HTTPClient == nil { + cfg.HTTPClient = http.DefaultClient + } + + c := &APIClient{} + c.cfg = cfg + c.common.client = c + + // API Services + c.MetadataApi = (*MetadataApiService)(&c.common) + c.ReadApi = (*ReadApiService)(&c.common) + c.WriteApi = (*WriteApiService)(&c.common) + + return c +} + +func atoi(in string) (int, error) { + return strconv.Atoi(in) +} + +// selectHeaderContentType select a content type from the available list. +func selectHeaderContentType(contentTypes []string) string { + if len(contentTypes) == 0 { + return "" + } + if contains(contentTypes, "application/json") { + return "application/json" + } + return contentTypes[0] // use the first content type specified in 'consumes' +} + +// selectHeaderAccept join all accept types and return +func selectHeaderAccept(accepts []string) string { + if len(accepts) == 0 { + return "" + } + + if contains(accepts, "application/json") { + return "application/json" + } + + return strings.Join(accepts, ",") +} + +// contains is a case insenstive match, finding needle in a haystack +func contains(haystack []string, needle string) bool { + for _, a := range haystack { + if strings.ToLower(a) == strings.ToLower(needle) { + return true + } + } + return false +} + +// Verify optional parameters are of the correct type. +func typeCheckParameter(obj interface{}, expected string, name string) error { + // Make sure there is an object. + if obj == nil { + return nil + } + + // Check the type is as expected. + if reflect.TypeOf(obj).String() != expected { + return fmt.Errorf("Expected %s to be of type %s but received %s.", name, expected, reflect.TypeOf(obj).String()) + } + return nil +} + +// parameterToString convert interface{} parameters to string, using a delimiter if format is provided. +func parameterToString(obj interface{}, collectionFormat string) string { + var delimiter string + + switch collectionFormat { + case "pipes": + delimiter = "|" + case "ssv": + delimiter = " " + case "tsv": + delimiter = "\t" + case "csv": + delimiter = "," + } + + if reflect.TypeOf(obj).Kind() == reflect.Slice { + return strings.Trim(strings.Replace(fmt.Sprint(obj), " ", delimiter, -1), "[]") + } else if t, ok := obj.(time.Time); ok { + return t.Format(time.RFC3339) + } + + return fmt.Sprintf("%v", obj) +} + +// helper for converting interface{} parameters to json strings +func parameterToJson(obj interface{}) (string, error) { + jsonBuf, err := json.Marshal(obj) + if err != nil { + return "", err + } + return string(jsonBuf), err +} + +// callAPI do the request. +func (c *APIClient) callAPI(request *http.Request) (*http.Response, error) { + if c.cfg.Debug { + dump, err := httputil.DumpRequestOut(request, true) + if err != nil { + return nil, err + } + log.Printf("\n%s\n", string(dump)) + } + + resp, err := c.cfg.HTTPClient.Do(request) + if err != nil { + return resp, err + } + + if c.cfg.Debug { + dump, err := httputil.DumpResponse(resp, true) + if err != nil { + return resp, err + } + log.Printf("\n%s\n", string(dump)) + } + return resp, err +} + +// Allow modification of underlying config for alternate implementations and testing +// Caution: modifying the configuration while live can cause data races and potentially unwanted behavior +func (c *APIClient) GetConfig() *Configuration { + return c.cfg +} + +// prepareRequest build the request +func (c *APIClient) prepareRequest( + ctx context.Context, + path string, method string, + postBody interface{}, + headerParams map[string]string, + queryParams url.Values, + formParams url.Values, + formFileName string, + fileName string, + fileBytes []byte) (localVarRequest *http.Request, err error) { + + var body *bytes.Buffer + + // Detect postBody type and post. + if postBody != nil { + contentType := headerParams["Content-Type"] + if contentType == "" { + contentType = detectContentType(postBody) + headerParams["Content-Type"] = contentType + } + + body, err = setBody(postBody, contentType) + if err != nil { + return nil, err + } + } + + // add form parameters and file if available. + if strings.HasPrefix(headerParams["Content-Type"], "multipart/form-data") && len(formParams) > 0 || (len(fileBytes) > 0 && fileName != "") { + if body != nil { + return nil, errors.New("Cannot specify postBody and multipart form at the same time.") + } + body = &bytes.Buffer{} + w := multipart.NewWriter(body) + + for k, v := range formParams { + for _, iv := range v { + if strings.HasPrefix(k, "@") { // file + err = addFile(w, k[1:], iv) + if err != nil { + return nil, err + } + } else { // form value + w.WriteField(k, iv) + } + } + } + if len(fileBytes) > 0 && fileName != "" { + w.Boundary() + //_, fileNm := filepath.Split(fileName) + part, err := w.CreateFormFile(formFileName, filepath.Base(fileName)) + if err != nil { + return nil, err + } + _, err = part.Write(fileBytes) + if err != nil { + return nil, err + } + } + + // Set the Boundary in the Content-Type + headerParams["Content-Type"] = w.FormDataContentType() + + // Set Content-Length + headerParams["Content-Length"] = fmt.Sprintf("%d", body.Len()) + w.Close() + } + + if strings.HasPrefix(headerParams["Content-Type"], "application/x-www-form-urlencoded") && len(formParams) > 0 { + if body != nil { + return nil, errors.New("Cannot specify postBody and x-www-form-urlencoded form at the same time.") + } + body = &bytes.Buffer{} + body.WriteString(formParams.Encode()) + // Set Content-Length + headerParams["Content-Length"] = fmt.Sprintf("%d", body.Len()) + } + + // Setup path and query parameters + url, err := url.Parse(path) + if err != nil { + return nil, err + } + + // Override request host, if applicable + if c.cfg.Host != "" { + url.Host = c.cfg.Host + } + + // Override request scheme, if applicable + if c.cfg.Scheme != "" { + url.Scheme = c.cfg.Scheme + } + + // Adding Query Param + query := url.Query() + for k, v := range queryParams { + for _, iv := range v { + query.Add(k, iv) + } + } + + // Encode the parameters. + url.RawQuery = query.Encode() + + // Generate a new request + if body != nil { + localVarRequest, err = http.NewRequest(method, url.String(), body) + } else { + localVarRequest, err = http.NewRequest(method, url.String(), nil) + } + if err != nil { + return nil, err + } + + // add header parameters, if any + if len(headerParams) > 0 { + headers := http.Header{} + for h, v := range headerParams { + headers.Set(h, v) + } + localVarRequest.Header = headers + } + + // Add the user agent to the request. + localVarRequest.Header.Add("User-Agent", c.cfg.UserAgent) + + if ctx != nil { + // add context to the request + localVarRequest = localVarRequest.WithContext(ctx) + + // Walk through any authentication. + + // OAuth2 authentication + if tok, ok := ctx.Value(ContextOAuth2).(oauth2.TokenSource); ok { + // We were able to grab an oauth2 token from the context + var latestToken *oauth2.Token + if latestToken, err = tok.Token(); err != nil { + return nil, err + } + + latestToken.SetAuthHeader(localVarRequest) + } + + // Basic HTTP Authentication + if auth, ok := ctx.Value(ContextBasicAuth).(BasicAuth); ok { + localVarRequest.SetBasicAuth(auth.UserName, auth.Password) + } + + // AccessToken Authentication + if auth, ok := ctx.Value(ContextAccessToken).(string); ok { + localVarRequest.Header.Add("Authorization", "Bearer "+auth) + } + + } + + for header, value := range c.cfg.DefaultHeader { + localVarRequest.Header.Add(header, value) + } + return localVarRequest, nil +} + +func (c *APIClient) decode(v interface{}, b []byte, contentType string) (err error) { + if len(b) == 0 { + return nil + } + if s, ok := v.(*string); ok { + *s = string(b) + return nil + } + if xmlCheck.MatchString(contentType) { + if err = xml.Unmarshal(b, v); err != nil { + return err + } + return nil + } + if jsonCheck.MatchString(contentType) { + if actualObj, ok := v.(interface{ GetActualInstance() interface{} }); ok { // oneOf, anyOf schemas + if unmarshalObj, ok := actualObj.(interface{ UnmarshalJSON([]byte) error }); ok { // make sure it has UnmarshalJSON defined + if err = unmarshalObj.UnmarshalJSON(b); err != nil { + return err + } + } else { + return errors.New("Unknown type with GetActualInstance but no unmarshalObj.UnmarshalJSON defined") + } + } else if err = json.Unmarshal(b, v); err != nil { // simple model + return err + } + return nil + } + return errors.New("undefined response type") +} + +// Add a file to the multipart request +func addFile(w *multipart.Writer, fieldName, path string) error { + file, err := os.Open(path) + if err != nil { + return err + } + defer file.Close() + + part, err := w.CreateFormFile(fieldName, filepath.Base(path)) + if err != nil { + return err + } + _, err = io.Copy(part, file) + + return err +} + +// Prevent trying to import "fmt" +func reportError(format string, a ...interface{}) error { + return fmt.Errorf(format, a...) +} + +// Prevent trying to import "bytes" +func newStrictDecoder(data []byte) *json.Decoder { + dec := json.NewDecoder(bytes.NewBuffer(data)) + dec.DisallowUnknownFields() + return dec +} + +// Set request body from an interface{} +func setBody(body interface{}, contentType string) (bodyBuf *bytes.Buffer, err error) { + if bodyBuf == nil { + bodyBuf = &bytes.Buffer{} + } + + if reader, ok := body.(io.Reader); ok { + _, err = bodyBuf.ReadFrom(reader) + } else if b, ok := body.([]byte); ok { + _, err = bodyBuf.Write(b) + } else if s, ok := body.(string); ok { + _, err = bodyBuf.WriteString(s) + } else if s, ok := body.(*string); ok { + _, err = bodyBuf.WriteString(*s) + } else if jsonCheck.MatchString(contentType) { + err = json.NewEncoder(bodyBuf).Encode(body) + } else if xmlCheck.MatchString(contentType) { + err = xml.NewEncoder(bodyBuf).Encode(body) + } + + if err != nil { + return nil, err + } + + if bodyBuf.Len() == 0 { + err = fmt.Errorf("Invalid body type %s\n", contentType) + return nil, err + } + return bodyBuf, nil +} + +// detectContentType method is used to figure out `Request.Body` content type for request header +func detectContentType(body interface{}) string { + contentType := "text/plain; charset=utf-8" + kind := reflect.TypeOf(body).Kind() + + switch kind { + case reflect.Struct, reflect.Map, reflect.Ptr: + contentType = "application/json; charset=utf-8" + case reflect.String: + contentType = "text/plain; charset=utf-8" + default: + if b, ok := body.([]byte); ok { + contentType = http.DetectContentType(b) + } else if kind == reflect.Slice { + contentType = "application/json; charset=utf-8" + } + } + + return contentType +} + +// Ripped from https://github.com/gregjones/httpcache/blob/master/httpcache.go +type cacheControl map[string]string + +func parseCacheControl(headers http.Header) cacheControl { + cc := cacheControl{} + ccHeader := headers.Get("Cache-Control") + for _, part := range strings.Split(ccHeader, ",") { + part = strings.Trim(part, " ") + if part == "" { + continue + } + if strings.ContainsRune(part, '=') { + keyval := strings.Split(part, "=") + cc[strings.Trim(keyval[0], " ")] = strings.Trim(keyval[1], ",") + } else { + cc[part] = "" + } + } + return cc +} + +// CacheExpires helper function to determine remaining time before repeating a request. +func CacheExpires(r *http.Response) time.Time { + // Figure out when the cache expires. + var expires time.Time + now, err := time.Parse(time.RFC1123, r.Header.Get("date")) + if err != nil { + return time.Now() + } + respCacheControl := parseCacheControl(r.Header) + + if maxAge, ok := respCacheControl["max-age"]; ok { + lifetime, err := time.ParseDuration(maxAge + "s") + if err != nil { + expires = now + } else { + expires = now.Add(lifetime) + } + } else { + expiresHeader := r.Header.Get("Expires") + if expiresHeader != "" { + expires, err = time.Parse(time.RFC1123, expiresHeader) + if err != nil { + expires = now + } + } + } + return expires +} + +func strlen(s string) int { + return utf8.RuneCountInString(s) +} + +// GenericOpenAPIError Provides access to the body, error and model on returned errors. +type GenericOpenAPIError struct { + body []byte + error string + model interface{} +} + +// Error returns non-empty string if there was an error. +func (e GenericOpenAPIError) Error() string { + return e.error +} + +// Body returns the raw bytes of the response +func (e GenericOpenAPIError) Body() []byte { + return e.body +} + +// Model returns the unpacked model of the error +func (e GenericOpenAPIError) Model() interface{} { + return e.model +} diff --git a/internal/httpclient-next/configuration.go b/internal/httpclient-next/configuration.go new file mode 100644 index 000000000..01502f903 --- /dev/null +++ b/internal/httpclient-next/configuration.go @@ -0,0 +1,230 @@ +/* + * Ory Oathkeeper API + * + * Documentation for all of Ory Oathkeeper's APIs. + * + * API version: 1.0.0 + * Contact: hi@ory.sh + */ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package client + +import ( + "context" + "fmt" + "net/http" + "strings" +) + +// contextKeys are used to identify the type of value in the context. +// Since these are string, it is possible to get a short description of the +// context key for logging and debugging using key.String(). + +type contextKey string + +func (c contextKey) String() string { + return "auth " + string(c) +} + +var ( + // ContextOAuth2 takes an oauth2.TokenSource as authentication for the request. + ContextOAuth2 = contextKey("token") + + // ContextBasicAuth takes BasicAuth as authentication for the request. + ContextBasicAuth = contextKey("basic") + + // ContextAccessToken takes a string oauth2 access token as authentication for the request. + ContextAccessToken = contextKey("accesstoken") + + // ContextAPIKeys takes a string apikey as authentication for the request + ContextAPIKeys = contextKey("apiKeys") + + // ContextHttpSignatureAuth takes HttpSignatureAuth as authentication for the request. + ContextHttpSignatureAuth = contextKey("httpsignature") + + // ContextServerIndex uses a server configuration from the index. + ContextServerIndex = contextKey("serverIndex") + + // ContextOperationServerIndices uses a server configuration from the index mapping. + ContextOperationServerIndices = contextKey("serverOperationIndices") + + // ContextServerVariables overrides a server configuration variables. + ContextServerVariables = contextKey("serverVariables") + + // ContextOperationServerVariables overrides a server configuration variables using operation specific values. + ContextOperationServerVariables = contextKey("serverOperationVariables") +) + +// BasicAuth provides basic http authentication to a request passed via context using ContextBasicAuth +type BasicAuth struct { + UserName string `json:"userName,omitempty"` + Password string `json:"password,omitempty"` +} + +// APIKey provides API key based authentication to a request passed via context using ContextAPIKey +type APIKey struct { + Key string + Prefix string +} + +// ServerVariable stores the information about a server variable +type ServerVariable struct { + Description string + DefaultValue string + EnumValues []string +} + +// ServerConfiguration stores the information about a server +type ServerConfiguration struct { + URL string + Description string + Variables map[string]ServerVariable +} + +// ServerConfigurations stores multiple ServerConfiguration items +type ServerConfigurations []ServerConfiguration + +// Configuration stores the configuration of the API client +type Configuration struct { + Host string `json:"host,omitempty"` + Scheme string `json:"scheme,omitempty"` + DefaultHeader map[string]string `json:"defaultHeader,omitempty"` + UserAgent string `json:"userAgent,omitempty"` + Debug bool `json:"debug,omitempty"` + Servers ServerConfigurations + OperationServers map[string]ServerConfigurations + HTTPClient *http.Client +} + +// NewConfiguration returns a new Configuration object +func NewConfiguration() *Configuration { + cfg := &Configuration{ + DefaultHeader: make(map[string]string), + UserAgent: "OpenAPI-Generator/1.0.0/go", + Debug: false, + Servers: ServerConfigurations{ + { + URL: "", + Description: "No description provided", + }, + }, + OperationServers: map[string]ServerConfigurations{}, + } + return cfg +} + +// AddDefaultHeader adds a new HTTP header to the default header in the request +func (c *Configuration) AddDefaultHeader(key string, value string) { + c.DefaultHeader[key] = value +} + +// URL formats template on a index using given variables +func (sc ServerConfigurations) URL(index int, variables map[string]string) (string, error) { + if index < 0 || len(sc) <= index { + return "", fmt.Errorf("Index %v out of range %v", index, len(sc)-1) + } + server := sc[index] + url := server.URL + + // go through variables and replace placeholders + for name, variable := range server.Variables { + if value, ok := variables[name]; ok { + found := bool(len(variable.EnumValues) == 0) + for _, enumValue := range variable.EnumValues { + if value == enumValue { + found = true + } + } + if !found { + return "", fmt.Errorf("The variable %s in the server URL has invalid value %v. Must be %v", name, value, variable.EnumValues) + } + url = strings.Replace(url, "{"+name+"}", value, -1) + } else { + url = strings.Replace(url, "{"+name+"}", variable.DefaultValue, -1) + } + } + return url, nil +} + +// ServerURL returns URL based on server settings +func (c *Configuration) ServerURL(index int, variables map[string]string) (string, error) { + return c.Servers.URL(index, variables) +} + +func getServerIndex(ctx context.Context) (int, error) { + si := ctx.Value(ContextServerIndex) + if si != nil { + if index, ok := si.(int); ok { + return index, nil + } + return 0, reportError("Invalid type %T should be int", si) + } + return 0, nil +} + +func getServerOperationIndex(ctx context.Context, endpoint string) (int, error) { + osi := ctx.Value(ContextOperationServerIndices) + if osi != nil { + if operationIndices, ok := osi.(map[string]int); !ok { + return 0, reportError("Invalid type %T should be map[string]int", osi) + } else { + index, ok := operationIndices[endpoint] + if ok { + return index, nil + } + } + } + return getServerIndex(ctx) +} + +func getServerVariables(ctx context.Context) (map[string]string, error) { + sv := ctx.Value(ContextServerVariables) + if sv != nil { + if variables, ok := sv.(map[string]string); ok { + return variables, nil + } + return nil, reportError("ctx value of ContextServerVariables has invalid type %T should be map[string]string", sv) + } + return nil, nil +} + +func getServerOperationVariables(ctx context.Context, endpoint string) (map[string]string, error) { + osv := ctx.Value(ContextOperationServerVariables) + if osv != nil { + if operationVariables, ok := osv.(map[string]map[string]string); !ok { + return nil, reportError("ctx value of ContextOperationServerVariables has invalid type %T should be map[string]map[string]string", osv) + } else { + variables, ok := operationVariables[endpoint] + if ok { + return variables, nil + } + } + } + return getServerVariables(ctx) +} + +// ServerURLWithContext returns a new server URL given an endpoint +func (c *Configuration) ServerURLWithContext(ctx context.Context, endpoint string) (string, error) { + sc, ok := c.OperationServers[endpoint] + if !ok { + sc = c.Servers + } + + if ctx == nil { + return sc.URL(0, nil) + } + + index, err := getServerOperationIndex(ctx, endpoint) + if err != nil { + return "", err + } + + variables, err := getServerOperationVariables(ctx, endpoint) + if err != nil { + return "", err + } + + return sc.URL(index, variables) +} diff --git a/internal/httpclient-next/docs/CreateRelationTupleBadRequestBody.md b/internal/httpclient-next/docs/CreateRelationTupleBadRequestBody.md new file mode 100644 index 000000000..9827754d4 --- /dev/null +++ b/internal/httpclient-next/docs/CreateRelationTupleBadRequestBody.md @@ -0,0 +1,186 @@ +# CreateRelationTupleBadRequestBody + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Code** | Pointer to **int64** | code | [optional] +**Details** | Pointer to **[]map[string]interface{}** | details | [optional] +**Message** | Pointer to **string** | message | [optional] +**Reason** | Pointer to **string** | reason | [optional] +**Request** | Pointer to **string** | request | [optional] +**Status** | Pointer to **string** | status | [optional] + +## Methods + +### NewCreateRelationTupleBadRequestBody + +`func NewCreateRelationTupleBadRequestBody() *CreateRelationTupleBadRequestBody` + +NewCreateRelationTupleBadRequestBody instantiates a new CreateRelationTupleBadRequestBody object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewCreateRelationTupleBadRequestBodyWithDefaults + +`func NewCreateRelationTupleBadRequestBodyWithDefaults() *CreateRelationTupleBadRequestBody` + +NewCreateRelationTupleBadRequestBodyWithDefaults instantiates a new CreateRelationTupleBadRequestBody object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetCode + +`func (o *CreateRelationTupleBadRequestBody) GetCode() int64` + +GetCode returns the Code field if non-nil, zero value otherwise. + +### GetCodeOk + +`func (o *CreateRelationTupleBadRequestBody) GetCodeOk() (*int64, bool)` + +GetCodeOk returns a tuple with the Code field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetCode + +`func (o *CreateRelationTupleBadRequestBody) SetCode(v int64)` + +SetCode sets Code field to given value. + +### HasCode + +`func (o *CreateRelationTupleBadRequestBody) HasCode() bool` + +HasCode returns a boolean if a field has been set. + +### GetDetails + +`func (o *CreateRelationTupleBadRequestBody) GetDetails() []map[string]interface{}` + +GetDetails returns the Details field if non-nil, zero value otherwise. + +### GetDetailsOk + +`func (o *CreateRelationTupleBadRequestBody) GetDetailsOk() (*[]map[string]interface{}, bool)` + +GetDetailsOk returns a tuple with the Details field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetDetails + +`func (o *CreateRelationTupleBadRequestBody) SetDetails(v []map[string]interface{})` + +SetDetails sets Details field to given value. + +### HasDetails + +`func (o *CreateRelationTupleBadRequestBody) HasDetails() bool` + +HasDetails returns a boolean if a field has been set. + +### GetMessage + +`func (o *CreateRelationTupleBadRequestBody) GetMessage() string` + +GetMessage returns the Message field if non-nil, zero value otherwise. + +### GetMessageOk + +`func (o *CreateRelationTupleBadRequestBody) GetMessageOk() (*string, bool)` + +GetMessageOk returns a tuple with the Message field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetMessage + +`func (o *CreateRelationTupleBadRequestBody) SetMessage(v string)` + +SetMessage sets Message field to given value. + +### HasMessage + +`func (o *CreateRelationTupleBadRequestBody) HasMessage() bool` + +HasMessage returns a boolean if a field has been set. + +### GetReason + +`func (o *CreateRelationTupleBadRequestBody) GetReason() string` + +GetReason returns the Reason field if non-nil, zero value otherwise. + +### GetReasonOk + +`func (o *CreateRelationTupleBadRequestBody) GetReasonOk() (*string, bool)` + +GetReasonOk returns a tuple with the Reason field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetReason + +`func (o *CreateRelationTupleBadRequestBody) SetReason(v string)` + +SetReason sets Reason field to given value. + +### HasReason + +`func (o *CreateRelationTupleBadRequestBody) HasReason() bool` + +HasReason returns a boolean if a field has been set. + +### GetRequest + +`func (o *CreateRelationTupleBadRequestBody) GetRequest() string` + +GetRequest returns the Request field if non-nil, zero value otherwise. + +### GetRequestOk + +`func (o *CreateRelationTupleBadRequestBody) GetRequestOk() (*string, bool)` + +GetRequestOk returns a tuple with the Request field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetRequest + +`func (o *CreateRelationTupleBadRequestBody) SetRequest(v string)` + +SetRequest sets Request field to given value. + +### HasRequest + +`func (o *CreateRelationTupleBadRequestBody) HasRequest() bool` + +HasRequest returns a boolean if a field has been set. + +### GetStatus + +`func (o *CreateRelationTupleBadRequestBody) GetStatus() string` + +GetStatus returns the Status field if non-nil, zero value otherwise. + +### GetStatusOk + +`func (o *CreateRelationTupleBadRequestBody) GetStatusOk() (*string, bool)` + +GetStatusOk returns a tuple with the Status field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetStatus + +`func (o *CreateRelationTupleBadRequestBody) SetStatus(v string)` + +SetStatus sets Status field to given value. + +### HasStatus + +`func (o *CreateRelationTupleBadRequestBody) HasStatus() bool` + +HasStatus returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/internal/httpclient-next/docs/CreateRelationTupleInternalServerErrorBody.md b/internal/httpclient-next/docs/CreateRelationTupleInternalServerErrorBody.md new file mode 100644 index 000000000..bde129663 --- /dev/null +++ b/internal/httpclient-next/docs/CreateRelationTupleInternalServerErrorBody.md @@ -0,0 +1,186 @@ +# CreateRelationTupleInternalServerErrorBody + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Code** | Pointer to **int64** | code | [optional] +**Details** | Pointer to **[]map[string]interface{}** | details | [optional] +**Message** | Pointer to **string** | message | [optional] +**Reason** | Pointer to **string** | reason | [optional] +**Request** | Pointer to **string** | request | [optional] +**Status** | Pointer to **string** | status | [optional] + +## Methods + +### NewCreateRelationTupleInternalServerErrorBody + +`func NewCreateRelationTupleInternalServerErrorBody() *CreateRelationTupleInternalServerErrorBody` + +NewCreateRelationTupleInternalServerErrorBody instantiates a new CreateRelationTupleInternalServerErrorBody object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewCreateRelationTupleInternalServerErrorBodyWithDefaults + +`func NewCreateRelationTupleInternalServerErrorBodyWithDefaults() *CreateRelationTupleInternalServerErrorBody` + +NewCreateRelationTupleInternalServerErrorBodyWithDefaults instantiates a new CreateRelationTupleInternalServerErrorBody object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetCode + +`func (o *CreateRelationTupleInternalServerErrorBody) GetCode() int64` + +GetCode returns the Code field if non-nil, zero value otherwise. + +### GetCodeOk + +`func (o *CreateRelationTupleInternalServerErrorBody) GetCodeOk() (*int64, bool)` + +GetCodeOk returns a tuple with the Code field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetCode + +`func (o *CreateRelationTupleInternalServerErrorBody) SetCode(v int64)` + +SetCode sets Code field to given value. + +### HasCode + +`func (o *CreateRelationTupleInternalServerErrorBody) HasCode() bool` + +HasCode returns a boolean if a field has been set. + +### GetDetails + +`func (o *CreateRelationTupleInternalServerErrorBody) GetDetails() []map[string]interface{}` + +GetDetails returns the Details field if non-nil, zero value otherwise. + +### GetDetailsOk + +`func (o *CreateRelationTupleInternalServerErrorBody) GetDetailsOk() (*[]map[string]interface{}, bool)` + +GetDetailsOk returns a tuple with the Details field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetDetails + +`func (o *CreateRelationTupleInternalServerErrorBody) SetDetails(v []map[string]interface{})` + +SetDetails sets Details field to given value. + +### HasDetails + +`func (o *CreateRelationTupleInternalServerErrorBody) HasDetails() bool` + +HasDetails returns a boolean if a field has been set. + +### GetMessage + +`func (o *CreateRelationTupleInternalServerErrorBody) GetMessage() string` + +GetMessage returns the Message field if non-nil, zero value otherwise. + +### GetMessageOk + +`func (o *CreateRelationTupleInternalServerErrorBody) GetMessageOk() (*string, bool)` + +GetMessageOk returns a tuple with the Message field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetMessage + +`func (o *CreateRelationTupleInternalServerErrorBody) SetMessage(v string)` + +SetMessage sets Message field to given value. + +### HasMessage + +`func (o *CreateRelationTupleInternalServerErrorBody) HasMessage() bool` + +HasMessage returns a boolean if a field has been set. + +### GetReason + +`func (o *CreateRelationTupleInternalServerErrorBody) GetReason() string` + +GetReason returns the Reason field if non-nil, zero value otherwise. + +### GetReasonOk + +`func (o *CreateRelationTupleInternalServerErrorBody) GetReasonOk() (*string, bool)` + +GetReasonOk returns a tuple with the Reason field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetReason + +`func (o *CreateRelationTupleInternalServerErrorBody) SetReason(v string)` + +SetReason sets Reason field to given value. + +### HasReason + +`func (o *CreateRelationTupleInternalServerErrorBody) HasReason() bool` + +HasReason returns a boolean if a field has been set. + +### GetRequest + +`func (o *CreateRelationTupleInternalServerErrorBody) GetRequest() string` + +GetRequest returns the Request field if non-nil, zero value otherwise. + +### GetRequestOk + +`func (o *CreateRelationTupleInternalServerErrorBody) GetRequestOk() (*string, bool)` + +GetRequestOk returns a tuple with the Request field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetRequest + +`func (o *CreateRelationTupleInternalServerErrorBody) SetRequest(v string)` + +SetRequest sets Request field to given value. + +### HasRequest + +`func (o *CreateRelationTupleInternalServerErrorBody) HasRequest() bool` + +HasRequest returns a boolean if a field has been set. + +### GetStatus + +`func (o *CreateRelationTupleInternalServerErrorBody) GetStatus() string` + +GetStatus returns the Status field if non-nil, zero value otherwise. + +### GetStatusOk + +`func (o *CreateRelationTupleInternalServerErrorBody) GetStatusOk() (*string, bool)` + +GetStatusOk returns a tuple with the Status field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetStatus + +`func (o *CreateRelationTupleInternalServerErrorBody) SetStatus(v string)` + +SetStatus sets Status field to given value. + +### HasStatus + +`func (o *CreateRelationTupleInternalServerErrorBody) HasStatus() bool` + +HasStatus returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/internal/httpclient-next/docs/DeleteRelationTuplesBadRequestBody.md b/internal/httpclient-next/docs/DeleteRelationTuplesBadRequestBody.md new file mode 100644 index 000000000..22791417e --- /dev/null +++ b/internal/httpclient-next/docs/DeleteRelationTuplesBadRequestBody.md @@ -0,0 +1,186 @@ +# DeleteRelationTuplesBadRequestBody + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Code** | Pointer to **int64** | code | [optional] +**Details** | Pointer to **[]map[string]interface{}** | details | [optional] +**Message** | Pointer to **string** | message | [optional] +**Reason** | Pointer to **string** | reason | [optional] +**Request** | Pointer to **string** | request | [optional] +**Status** | Pointer to **string** | status | [optional] + +## Methods + +### NewDeleteRelationTuplesBadRequestBody + +`func NewDeleteRelationTuplesBadRequestBody() *DeleteRelationTuplesBadRequestBody` + +NewDeleteRelationTuplesBadRequestBody instantiates a new DeleteRelationTuplesBadRequestBody object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewDeleteRelationTuplesBadRequestBodyWithDefaults + +`func NewDeleteRelationTuplesBadRequestBodyWithDefaults() *DeleteRelationTuplesBadRequestBody` + +NewDeleteRelationTuplesBadRequestBodyWithDefaults instantiates a new DeleteRelationTuplesBadRequestBody object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetCode + +`func (o *DeleteRelationTuplesBadRequestBody) GetCode() int64` + +GetCode returns the Code field if non-nil, zero value otherwise. + +### GetCodeOk + +`func (o *DeleteRelationTuplesBadRequestBody) GetCodeOk() (*int64, bool)` + +GetCodeOk returns a tuple with the Code field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetCode + +`func (o *DeleteRelationTuplesBadRequestBody) SetCode(v int64)` + +SetCode sets Code field to given value. + +### HasCode + +`func (o *DeleteRelationTuplesBadRequestBody) HasCode() bool` + +HasCode returns a boolean if a field has been set. + +### GetDetails + +`func (o *DeleteRelationTuplesBadRequestBody) GetDetails() []map[string]interface{}` + +GetDetails returns the Details field if non-nil, zero value otherwise. + +### GetDetailsOk + +`func (o *DeleteRelationTuplesBadRequestBody) GetDetailsOk() (*[]map[string]interface{}, bool)` + +GetDetailsOk returns a tuple with the Details field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetDetails + +`func (o *DeleteRelationTuplesBadRequestBody) SetDetails(v []map[string]interface{})` + +SetDetails sets Details field to given value. + +### HasDetails + +`func (o *DeleteRelationTuplesBadRequestBody) HasDetails() bool` + +HasDetails returns a boolean if a field has been set. + +### GetMessage + +`func (o *DeleteRelationTuplesBadRequestBody) GetMessage() string` + +GetMessage returns the Message field if non-nil, zero value otherwise. + +### GetMessageOk + +`func (o *DeleteRelationTuplesBadRequestBody) GetMessageOk() (*string, bool)` + +GetMessageOk returns a tuple with the Message field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetMessage + +`func (o *DeleteRelationTuplesBadRequestBody) SetMessage(v string)` + +SetMessage sets Message field to given value. + +### HasMessage + +`func (o *DeleteRelationTuplesBadRequestBody) HasMessage() bool` + +HasMessage returns a boolean if a field has been set. + +### GetReason + +`func (o *DeleteRelationTuplesBadRequestBody) GetReason() string` + +GetReason returns the Reason field if non-nil, zero value otherwise. + +### GetReasonOk + +`func (o *DeleteRelationTuplesBadRequestBody) GetReasonOk() (*string, bool)` + +GetReasonOk returns a tuple with the Reason field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetReason + +`func (o *DeleteRelationTuplesBadRequestBody) SetReason(v string)` + +SetReason sets Reason field to given value. + +### HasReason + +`func (o *DeleteRelationTuplesBadRequestBody) HasReason() bool` + +HasReason returns a boolean if a field has been set. + +### GetRequest + +`func (o *DeleteRelationTuplesBadRequestBody) GetRequest() string` + +GetRequest returns the Request field if non-nil, zero value otherwise. + +### GetRequestOk + +`func (o *DeleteRelationTuplesBadRequestBody) GetRequestOk() (*string, bool)` + +GetRequestOk returns a tuple with the Request field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetRequest + +`func (o *DeleteRelationTuplesBadRequestBody) SetRequest(v string)` + +SetRequest sets Request field to given value. + +### HasRequest + +`func (o *DeleteRelationTuplesBadRequestBody) HasRequest() bool` + +HasRequest returns a boolean if a field has been set. + +### GetStatus + +`func (o *DeleteRelationTuplesBadRequestBody) GetStatus() string` + +GetStatus returns the Status field if non-nil, zero value otherwise. + +### GetStatusOk + +`func (o *DeleteRelationTuplesBadRequestBody) GetStatusOk() (*string, bool)` + +GetStatusOk returns a tuple with the Status field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetStatus + +`func (o *DeleteRelationTuplesBadRequestBody) SetStatus(v string)` + +SetStatus sets Status field to given value. + +### HasStatus + +`func (o *DeleteRelationTuplesBadRequestBody) HasStatus() bool` + +HasStatus returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/internal/httpclient-next/docs/DeleteRelationTuplesInternalServerErrorBody.md b/internal/httpclient-next/docs/DeleteRelationTuplesInternalServerErrorBody.md new file mode 100644 index 000000000..174f17e10 --- /dev/null +++ b/internal/httpclient-next/docs/DeleteRelationTuplesInternalServerErrorBody.md @@ -0,0 +1,186 @@ +# DeleteRelationTuplesInternalServerErrorBody + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Code** | Pointer to **int64** | code | [optional] +**Details** | Pointer to **[]map[string]interface{}** | details | [optional] +**Message** | Pointer to **string** | message | [optional] +**Reason** | Pointer to **string** | reason | [optional] +**Request** | Pointer to **string** | request | [optional] +**Status** | Pointer to **string** | status | [optional] + +## Methods + +### NewDeleteRelationTuplesInternalServerErrorBody + +`func NewDeleteRelationTuplesInternalServerErrorBody() *DeleteRelationTuplesInternalServerErrorBody` + +NewDeleteRelationTuplesInternalServerErrorBody instantiates a new DeleteRelationTuplesInternalServerErrorBody object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewDeleteRelationTuplesInternalServerErrorBodyWithDefaults + +`func NewDeleteRelationTuplesInternalServerErrorBodyWithDefaults() *DeleteRelationTuplesInternalServerErrorBody` + +NewDeleteRelationTuplesInternalServerErrorBodyWithDefaults instantiates a new DeleteRelationTuplesInternalServerErrorBody object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetCode + +`func (o *DeleteRelationTuplesInternalServerErrorBody) GetCode() int64` + +GetCode returns the Code field if non-nil, zero value otherwise. + +### GetCodeOk + +`func (o *DeleteRelationTuplesInternalServerErrorBody) GetCodeOk() (*int64, bool)` + +GetCodeOk returns a tuple with the Code field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetCode + +`func (o *DeleteRelationTuplesInternalServerErrorBody) SetCode(v int64)` + +SetCode sets Code field to given value. + +### HasCode + +`func (o *DeleteRelationTuplesInternalServerErrorBody) HasCode() bool` + +HasCode returns a boolean if a field has been set. + +### GetDetails + +`func (o *DeleteRelationTuplesInternalServerErrorBody) GetDetails() []map[string]interface{}` + +GetDetails returns the Details field if non-nil, zero value otherwise. + +### GetDetailsOk + +`func (o *DeleteRelationTuplesInternalServerErrorBody) GetDetailsOk() (*[]map[string]interface{}, bool)` + +GetDetailsOk returns a tuple with the Details field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetDetails + +`func (o *DeleteRelationTuplesInternalServerErrorBody) SetDetails(v []map[string]interface{})` + +SetDetails sets Details field to given value. + +### HasDetails + +`func (o *DeleteRelationTuplesInternalServerErrorBody) HasDetails() bool` + +HasDetails returns a boolean if a field has been set. + +### GetMessage + +`func (o *DeleteRelationTuplesInternalServerErrorBody) GetMessage() string` + +GetMessage returns the Message field if non-nil, zero value otherwise. + +### GetMessageOk + +`func (o *DeleteRelationTuplesInternalServerErrorBody) GetMessageOk() (*string, bool)` + +GetMessageOk returns a tuple with the Message field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetMessage + +`func (o *DeleteRelationTuplesInternalServerErrorBody) SetMessage(v string)` + +SetMessage sets Message field to given value. + +### HasMessage + +`func (o *DeleteRelationTuplesInternalServerErrorBody) HasMessage() bool` + +HasMessage returns a boolean if a field has been set. + +### GetReason + +`func (o *DeleteRelationTuplesInternalServerErrorBody) GetReason() string` + +GetReason returns the Reason field if non-nil, zero value otherwise. + +### GetReasonOk + +`func (o *DeleteRelationTuplesInternalServerErrorBody) GetReasonOk() (*string, bool)` + +GetReasonOk returns a tuple with the Reason field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetReason + +`func (o *DeleteRelationTuplesInternalServerErrorBody) SetReason(v string)` + +SetReason sets Reason field to given value. + +### HasReason + +`func (o *DeleteRelationTuplesInternalServerErrorBody) HasReason() bool` + +HasReason returns a boolean if a field has been set. + +### GetRequest + +`func (o *DeleteRelationTuplesInternalServerErrorBody) GetRequest() string` + +GetRequest returns the Request field if non-nil, zero value otherwise. + +### GetRequestOk + +`func (o *DeleteRelationTuplesInternalServerErrorBody) GetRequestOk() (*string, bool)` + +GetRequestOk returns a tuple with the Request field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetRequest + +`func (o *DeleteRelationTuplesInternalServerErrorBody) SetRequest(v string)` + +SetRequest sets Request field to given value. + +### HasRequest + +`func (o *DeleteRelationTuplesInternalServerErrorBody) HasRequest() bool` + +HasRequest returns a boolean if a field has been set. + +### GetStatus + +`func (o *DeleteRelationTuplesInternalServerErrorBody) GetStatus() string` + +GetStatus returns the Status field if non-nil, zero value otherwise. + +### GetStatusOk + +`func (o *DeleteRelationTuplesInternalServerErrorBody) GetStatusOk() (*string, bool)` + +GetStatusOk returns a tuple with the Status field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetStatus + +`func (o *DeleteRelationTuplesInternalServerErrorBody) SetStatus(v string)` + +SetStatus sets Status field to given value. + +### HasStatus + +`func (o *DeleteRelationTuplesInternalServerErrorBody) HasStatus() bool` + +HasStatus returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/internal/httpclient-next/docs/ExpandTree.md b/internal/httpclient-next/docs/ExpandTree.md new file mode 100644 index 000000000..452538bb9 --- /dev/null +++ b/internal/httpclient-next/docs/ExpandTree.md @@ -0,0 +1,129 @@ +# ExpandTree + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Children** | Pointer to [**[]ExpandTree**](ExpandTree.md) | children | [optional] +**SubjectId** | Pointer to **string** | subject id | [optional] +**SubjectSet** | Pointer to [**SubjectSet**](SubjectSet.md) | | [optional] +**Type** | **string** | | + +## Methods + +### NewExpandTree + +`func NewExpandTree(type_ string, ) *ExpandTree` + +NewExpandTree instantiates a new ExpandTree object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewExpandTreeWithDefaults + +`func NewExpandTreeWithDefaults() *ExpandTree` + +NewExpandTreeWithDefaults instantiates a new ExpandTree object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetChildren + +`func (o *ExpandTree) GetChildren() []ExpandTree` + +GetChildren returns the Children field if non-nil, zero value otherwise. + +### GetChildrenOk + +`func (o *ExpandTree) GetChildrenOk() (*[]ExpandTree, bool)` + +GetChildrenOk returns a tuple with the Children field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetChildren + +`func (o *ExpandTree) SetChildren(v []ExpandTree)` + +SetChildren sets Children field to given value. + +### HasChildren + +`func (o *ExpandTree) HasChildren() bool` + +HasChildren returns a boolean if a field has been set. + +### GetSubjectId + +`func (o *ExpandTree) GetSubjectId() string` + +GetSubjectId returns the SubjectId field if non-nil, zero value otherwise. + +### GetSubjectIdOk + +`func (o *ExpandTree) GetSubjectIdOk() (*string, bool)` + +GetSubjectIdOk returns a tuple with the SubjectId field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetSubjectId + +`func (o *ExpandTree) SetSubjectId(v string)` + +SetSubjectId sets SubjectId field to given value. + +### HasSubjectId + +`func (o *ExpandTree) HasSubjectId() bool` + +HasSubjectId returns a boolean if a field has been set. + +### GetSubjectSet + +`func (o *ExpandTree) GetSubjectSet() SubjectSet` + +GetSubjectSet returns the SubjectSet field if non-nil, zero value otherwise. + +### GetSubjectSetOk + +`func (o *ExpandTree) GetSubjectSetOk() (*SubjectSet, bool)` + +GetSubjectSetOk returns a tuple with the SubjectSet field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetSubjectSet + +`func (o *ExpandTree) SetSubjectSet(v SubjectSet)` + +SetSubjectSet sets SubjectSet field to given value. + +### HasSubjectSet + +`func (o *ExpandTree) HasSubjectSet() bool` + +HasSubjectSet returns a boolean if a field has been set. + +### GetType + +`func (o *ExpandTree) GetType() string` + +GetType returns the Type field if non-nil, zero value otherwise. + +### GetTypeOk + +`func (o *ExpandTree) GetTypeOk() (*string, bool)` + +GetTypeOk returns a tuple with the Type field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetType + +`func (o *ExpandTree) SetType(v string)` + +SetType sets Type field to given value. + + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/internal/httpclient-next/docs/GenericError.md b/internal/httpclient-next/docs/GenericError.md new file mode 100644 index 000000000..019c15911 --- /dev/null +++ b/internal/httpclient-next/docs/GenericError.md @@ -0,0 +1,186 @@ +# GenericError + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Code** | Pointer to **int64** | code | [optional] +**Details** | Pointer to **[]map[string]map[string]interface{}** | details | [optional] +**Message** | Pointer to **string** | message | [optional] +**Reason** | Pointer to **string** | reason | [optional] +**Request** | Pointer to **string** | request | [optional] +**Status** | Pointer to **string** | status | [optional] + +## Methods + +### NewGenericError + +`func NewGenericError() *GenericError` + +NewGenericError instantiates a new GenericError object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewGenericErrorWithDefaults + +`func NewGenericErrorWithDefaults() *GenericError` + +NewGenericErrorWithDefaults instantiates a new GenericError object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetCode + +`func (o *GenericError) GetCode() int64` + +GetCode returns the Code field if non-nil, zero value otherwise. + +### GetCodeOk + +`func (o *GenericError) GetCodeOk() (*int64, bool)` + +GetCodeOk returns a tuple with the Code field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetCode + +`func (o *GenericError) SetCode(v int64)` + +SetCode sets Code field to given value. + +### HasCode + +`func (o *GenericError) HasCode() bool` + +HasCode returns a boolean if a field has been set. + +### GetDetails + +`func (o *GenericError) GetDetails() []map[string]map[string]interface{}` + +GetDetails returns the Details field if non-nil, zero value otherwise. + +### GetDetailsOk + +`func (o *GenericError) GetDetailsOk() (*[]map[string]map[string]interface{}, bool)` + +GetDetailsOk returns a tuple with the Details field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetDetails + +`func (o *GenericError) SetDetails(v []map[string]map[string]interface{})` + +SetDetails sets Details field to given value. + +### HasDetails + +`func (o *GenericError) HasDetails() bool` + +HasDetails returns a boolean if a field has been set. + +### GetMessage + +`func (o *GenericError) GetMessage() string` + +GetMessage returns the Message field if non-nil, zero value otherwise. + +### GetMessageOk + +`func (o *GenericError) GetMessageOk() (*string, bool)` + +GetMessageOk returns a tuple with the Message field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetMessage + +`func (o *GenericError) SetMessage(v string)` + +SetMessage sets Message field to given value. + +### HasMessage + +`func (o *GenericError) HasMessage() bool` + +HasMessage returns a boolean if a field has been set. + +### GetReason + +`func (o *GenericError) GetReason() string` + +GetReason returns the Reason field if non-nil, zero value otherwise. + +### GetReasonOk + +`func (o *GenericError) GetReasonOk() (*string, bool)` + +GetReasonOk returns a tuple with the Reason field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetReason + +`func (o *GenericError) SetReason(v string)` + +SetReason sets Reason field to given value. + +### HasReason + +`func (o *GenericError) HasReason() bool` + +HasReason returns a boolean if a field has been set. + +### GetRequest + +`func (o *GenericError) GetRequest() string` + +GetRequest returns the Request field if non-nil, zero value otherwise. + +### GetRequestOk + +`func (o *GenericError) GetRequestOk() (*string, bool)` + +GetRequestOk returns a tuple with the Request field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetRequest + +`func (o *GenericError) SetRequest(v string)` + +SetRequest sets Request field to given value. + +### HasRequest + +`func (o *GenericError) HasRequest() bool` + +HasRequest returns a boolean if a field has been set. + +### GetStatus + +`func (o *GenericError) GetStatus() string` + +GetStatus returns the Status field if non-nil, zero value otherwise. + +### GetStatusOk + +`func (o *GenericError) GetStatusOk() (*string, bool)` + +GetStatusOk returns a tuple with the Status field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetStatus + +`func (o *GenericError) SetStatus(v string)` + +SetStatus sets Status field to given value. + +### HasStatus + +`func (o *GenericError) HasStatus() bool` + +HasStatus returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/internal/httpclient-next/docs/GetCheckBadRequestBody.md b/internal/httpclient-next/docs/GetCheckBadRequestBody.md new file mode 100644 index 000000000..824e8bee0 --- /dev/null +++ b/internal/httpclient-next/docs/GetCheckBadRequestBody.md @@ -0,0 +1,186 @@ +# GetCheckBadRequestBody + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Code** | Pointer to **int64** | code | [optional] +**Details** | Pointer to **[]map[string]interface{}** | details | [optional] +**Message** | Pointer to **string** | message | [optional] +**Reason** | Pointer to **string** | reason | [optional] +**Request** | Pointer to **string** | request | [optional] +**Status** | Pointer to **string** | status | [optional] + +## Methods + +### NewGetCheckBadRequestBody + +`func NewGetCheckBadRequestBody() *GetCheckBadRequestBody` + +NewGetCheckBadRequestBody instantiates a new GetCheckBadRequestBody object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewGetCheckBadRequestBodyWithDefaults + +`func NewGetCheckBadRequestBodyWithDefaults() *GetCheckBadRequestBody` + +NewGetCheckBadRequestBodyWithDefaults instantiates a new GetCheckBadRequestBody object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetCode + +`func (o *GetCheckBadRequestBody) GetCode() int64` + +GetCode returns the Code field if non-nil, zero value otherwise. + +### GetCodeOk + +`func (o *GetCheckBadRequestBody) GetCodeOk() (*int64, bool)` + +GetCodeOk returns a tuple with the Code field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetCode + +`func (o *GetCheckBadRequestBody) SetCode(v int64)` + +SetCode sets Code field to given value. + +### HasCode + +`func (o *GetCheckBadRequestBody) HasCode() bool` + +HasCode returns a boolean if a field has been set. + +### GetDetails + +`func (o *GetCheckBadRequestBody) GetDetails() []map[string]interface{}` + +GetDetails returns the Details field if non-nil, zero value otherwise. + +### GetDetailsOk + +`func (o *GetCheckBadRequestBody) GetDetailsOk() (*[]map[string]interface{}, bool)` + +GetDetailsOk returns a tuple with the Details field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetDetails + +`func (o *GetCheckBadRequestBody) SetDetails(v []map[string]interface{})` + +SetDetails sets Details field to given value. + +### HasDetails + +`func (o *GetCheckBadRequestBody) HasDetails() bool` + +HasDetails returns a boolean if a field has been set. + +### GetMessage + +`func (o *GetCheckBadRequestBody) GetMessage() string` + +GetMessage returns the Message field if non-nil, zero value otherwise. + +### GetMessageOk + +`func (o *GetCheckBadRequestBody) GetMessageOk() (*string, bool)` + +GetMessageOk returns a tuple with the Message field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetMessage + +`func (o *GetCheckBadRequestBody) SetMessage(v string)` + +SetMessage sets Message field to given value. + +### HasMessage + +`func (o *GetCheckBadRequestBody) HasMessage() bool` + +HasMessage returns a boolean if a field has been set. + +### GetReason + +`func (o *GetCheckBadRequestBody) GetReason() string` + +GetReason returns the Reason field if non-nil, zero value otherwise. + +### GetReasonOk + +`func (o *GetCheckBadRequestBody) GetReasonOk() (*string, bool)` + +GetReasonOk returns a tuple with the Reason field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetReason + +`func (o *GetCheckBadRequestBody) SetReason(v string)` + +SetReason sets Reason field to given value. + +### HasReason + +`func (o *GetCheckBadRequestBody) HasReason() bool` + +HasReason returns a boolean if a field has been set. + +### GetRequest + +`func (o *GetCheckBadRequestBody) GetRequest() string` + +GetRequest returns the Request field if non-nil, zero value otherwise. + +### GetRequestOk + +`func (o *GetCheckBadRequestBody) GetRequestOk() (*string, bool)` + +GetRequestOk returns a tuple with the Request field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetRequest + +`func (o *GetCheckBadRequestBody) SetRequest(v string)` + +SetRequest sets Request field to given value. + +### HasRequest + +`func (o *GetCheckBadRequestBody) HasRequest() bool` + +HasRequest returns a boolean if a field has been set. + +### GetStatus + +`func (o *GetCheckBadRequestBody) GetStatus() string` + +GetStatus returns the Status field if non-nil, zero value otherwise. + +### GetStatusOk + +`func (o *GetCheckBadRequestBody) GetStatusOk() (*string, bool)` + +GetStatusOk returns a tuple with the Status field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetStatus + +`func (o *GetCheckBadRequestBody) SetStatus(v string)` + +SetStatus sets Status field to given value. + +### HasStatus + +`func (o *GetCheckBadRequestBody) HasStatus() bool` + +HasStatus returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/internal/httpclient-next/docs/GetCheckInternalServerErrorBody.md b/internal/httpclient-next/docs/GetCheckInternalServerErrorBody.md new file mode 100644 index 000000000..60f71f223 --- /dev/null +++ b/internal/httpclient-next/docs/GetCheckInternalServerErrorBody.md @@ -0,0 +1,186 @@ +# GetCheckInternalServerErrorBody + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Code** | Pointer to **int64** | code | [optional] +**Details** | Pointer to **[]map[string]interface{}** | details | [optional] +**Message** | Pointer to **string** | message | [optional] +**Reason** | Pointer to **string** | reason | [optional] +**Request** | Pointer to **string** | request | [optional] +**Status** | Pointer to **string** | status | [optional] + +## Methods + +### NewGetCheckInternalServerErrorBody + +`func NewGetCheckInternalServerErrorBody() *GetCheckInternalServerErrorBody` + +NewGetCheckInternalServerErrorBody instantiates a new GetCheckInternalServerErrorBody object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewGetCheckInternalServerErrorBodyWithDefaults + +`func NewGetCheckInternalServerErrorBodyWithDefaults() *GetCheckInternalServerErrorBody` + +NewGetCheckInternalServerErrorBodyWithDefaults instantiates a new GetCheckInternalServerErrorBody object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetCode + +`func (o *GetCheckInternalServerErrorBody) GetCode() int64` + +GetCode returns the Code field if non-nil, zero value otherwise. + +### GetCodeOk + +`func (o *GetCheckInternalServerErrorBody) GetCodeOk() (*int64, bool)` + +GetCodeOk returns a tuple with the Code field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetCode + +`func (o *GetCheckInternalServerErrorBody) SetCode(v int64)` + +SetCode sets Code field to given value. + +### HasCode + +`func (o *GetCheckInternalServerErrorBody) HasCode() bool` + +HasCode returns a boolean if a field has been set. + +### GetDetails + +`func (o *GetCheckInternalServerErrorBody) GetDetails() []map[string]interface{}` + +GetDetails returns the Details field if non-nil, zero value otherwise. + +### GetDetailsOk + +`func (o *GetCheckInternalServerErrorBody) GetDetailsOk() (*[]map[string]interface{}, bool)` + +GetDetailsOk returns a tuple with the Details field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetDetails + +`func (o *GetCheckInternalServerErrorBody) SetDetails(v []map[string]interface{})` + +SetDetails sets Details field to given value. + +### HasDetails + +`func (o *GetCheckInternalServerErrorBody) HasDetails() bool` + +HasDetails returns a boolean if a field has been set. + +### GetMessage + +`func (o *GetCheckInternalServerErrorBody) GetMessage() string` + +GetMessage returns the Message field if non-nil, zero value otherwise. + +### GetMessageOk + +`func (o *GetCheckInternalServerErrorBody) GetMessageOk() (*string, bool)` + +GetMessageOk returns a tuple with the Message field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetMessage + +`func (o *GetCheckInternalServerErrorBody) SetMessage(v string)` + +SetMessage sets Message field to given value. + +### HasMessage + +`func (o *GetCheckInternalServerErrorBody) HasMessage() bool` + +HasMessage returns a boolean if a field has been set. + +### GetReason + +`func (o *GetCheckInternalServerErrorBody) GetReason() string` + +GetReason returns the Reason field if non-nil, zero value otherwise. + +### GetReasonOk + +`func (o *GetCheckInternalServerErrorBody) GetReasonOk() (*string, bool)` + +GetReasonOk returns a tuple with the Reason field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetReason + +`func (o *GetCheckInternalServerErrorBody) SetReason(v string)` + +SetReason sets Reason field to given value. + +### HasReason + +`func (o *GetCheckInternalServerErrorBody) HasReason() bool` + +HasReason returns a boolean if a field has been set. + +### GetRequest + +`func (o *GetCheckInternalServerErrorBody) GetRequest() string` + +GetRequest returns the Request field if non-nil, zero value otherwise. + +### GetRequestOk + +`func (o *GetCheckInternalServerErrorBody) GetRequestOk() (*string, bool)` + +GetRequestOk returns a tuple with the Request field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetRequest + +`func (o *GetCheckInternalServerErrorBody) SetRequest(v string)` + +SetRequest sets Request field to given value. + +### HasRequest + +`func (o *GetCheckInternalServerErrorBody) HasRequest() bool` + +HasRequest returns a boolean if a field has been set. + +### GetStatus + +`func (o *GetCheckInternalServerErrorBody) GetStatus() string` + +GetStatus returns the Status field if non-nil, zero value otherwise. + +### GetStatusOk + +`func (o *GetCheckInternalServerErrorBody) GetStatusOk() (*string, bool)` + +GetStatusOk returns a tuple with the Status field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetStatus + +`func (o *GetCheckInternalServerErrorBody) SetStatus(v string)` + +SetStatus sets Status field to given value. + +### HasStatus + +`func (o *GetCheckInternalServerErrorBody) HasStatus() bool` + +HasStatus returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/internal/httpclient-next/docs/GetCheckResponse.md b/internal/httpclient-next/docs/GetCheckResponse.md new file mode 100644 index 000000000..d3d3b84b9 --- /dev/null +++ b/internal/httpclient-next/docs/GetCheckResponse.md @@ -0,0 +1,51 @@ +# GetCheckResponse + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Allowed** | **bool** | whether the relation tuple is allowed | + +## Methods + +### NewGetCheckResponse + +`func NewGetCheckResponse(allowed bool, ) *GetCheckResponse` + +NewGetCheckResponse instantiates a new GetCheckResponse object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewGetCheckResponseWithDefaults + +`func NewGetCheckResponseWithDefaults() *GetCheckResponse` + +NewGetCheckResponseWithDefaults instantiates a new GetCheckResponse object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetAllowed + +`func (o *GetCheckResponse) GetAllowed() bool` + +GetAllowed returns the Allowed field if non-nil, zero value otherwise. + +### GetAllowedOk + +`func (o *GetCheckResponse) GetAllowedOk() (*bool, bool)` + +GetAllowedOk returns a tuple with the Allowed field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetAllowed + +`func (o *GetCheckResponse) SetAllowed(v bool)` + +SetAllowed sets Allowed field to given value. + + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/internal/httpclient-next/docs/GetExpandBadRequestBody.md b/internal/httpclient-next/docs/GetExpandBadRequestBody.md new file mode 100644 index 000000000..69075f89d --- /dev/null +++ b/internal/httpclient-next/docs/GetExpandBadRequestBody.md @@ -0,0 +1,186 @@ +# GetExpandBadRequestBody + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Code** | Pointer to **int64** | code | [optional] +**Details** | Pointer to **[]map[string]interface{}** | details | [optional] +**Message** | Pointer to **string** | message | [optional] +**Reason** | Pointer to **string** | reason | [optional] +**Request** | Pointer to **string** | request | [optional] +**Status** | Pointer to **string** | status | [optional] + +## Methods + +### NewGetExpandBadRequestBody + +`func NewGetExpandBadRequestBody() *GetExpandBadRequestBody` + +NewGetExpandBadRequestBody instantiates a new GetExpandBadRequestBody object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewGetExpandBadRequestBodyWithDefaults + +`func NewGetExpandBadRequestBodyWithDefaults() *GetExpandBadRequestBody` + +NewGetExpandBadRequestBodyWithDefaults instantiates a new GetExpandBadRequestBody object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetCode + +`func (o *GetExpandBadRequestBody) GetCode() int64` + +GetCode returns the Code field if non-nil, zero value otherwise. + +### GetCodeOk + +`func (o *GetExpandBadRequestBody) GetCodeOk() (*int64, bool)` + +GetCodeOk returns a tuple with the Code field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetCode + +`func (o *GetExpandBadRequestBody) SetCode(v int64)` + +SetCode sets Code field to given value. + +### HasCode + +`func (o *GetExpandBadRequestBody) HasCode() bool` + +HasCode returns a boolean if a field has been set. + +### GetDetails + +`func (o *GetExpandBadRequestBody) GetDetails() []map[string]interface{}` + +GetDetails returns the Details field if non-nil, zero value otherwise. + +### GetDetailsOk + +`func (o *GetExpandBadRequestBody) GetDetailsOk() (*[]map[string]interface{}, bool)` + +GetDetailsOk returns a tuple with the Details field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetDetails + +`func (o *GetExpandBadRequestBody) SetDetails(v []map[string]interface{})` + +SetDetails sets Details field to given value. + +### HasDetails + +`func (o *GetExpandBadRequestBody) HasDetails() bool` + +HasDetails returns a boolean if a field has been set. + +### GetMessage + +`func (o *GetExpandBadRequestBody) GetMessage() string` + +GetMessage returns the Message field if non-nil, zero value otherwise. + +### GetMessageOk + +`func (o *GetExpandBadRequestBody) GetMessageOk() (*string, bool)` + +GetMessageOk returns a tuple with the Message field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetMessage + +`func (o *GetExpandBadRequestBody) SetMessage(v string)` + +SetMessage sets Message field to given value. + +### HasMessage + +`func (o *GetExpandBadRequestBody) HasMessage() bool` + +HasMessage returns a boolean if a field has been set. + +### GetReason + +`func (o *GetExpandBadRequestBody) GetReason() string` + +GetReason returns the Reason field if non-nil, zero value otherwise. + +### GetReasonOk + +`func (o *GetExpandBadRequestBody) GetReasonOk() (*string, bool)` + +GetReasonOk returns a tuple with the Reason field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetReason + +`func (o *GetExpandBadRequestBody) SetReason(v string)` + +SetReason sets Reason field to given value. + +### HasReason + +`func (o *GetExpandBadRequestBody) HasReason() bool` + +HasReason returns a boolean if a field has been set. + +### GetRequest + +`func (o *GetExpandBadRequestBody) GetRequest() string` + +GetRequest returns the Request field if non-nil, zero value otherwise. + +### GetRequestOk + +`func (o *GetExpandBadRequestBody) GetRequestOk() (*string, bool)` + +GetRequestOk returns a tuple with the Request field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetRequest + +`func (o *GetExpandBadRequestBody) SetRequest(v string)` + +SetRequest sets Request field to given value. + +### HasRequest + +`func (o *GetExpandBadRequestBody) HasRequest() bool` + +HasRequest returns a boolean if a field has been set. + +### GetStatus + +`func (o *GetExpandBadRequestBody) GetStatus() string` + +GetStatus returns the Status field if non-nil, zero value otherwise. + +### GetStatusOk + +`func (o *GetExpandBadRequestBody) GetStatusOk() (*string, bool)` + +GetStatusOk returns a tuple with the Status field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetStatus + +`func (o *GetExpandBadRequestBody) SetStatus(v string)` + +SetStatus sets Status field to given value. + +### HasStatus + +`func (o *GetExpandBadRequestBody) HasStatus() bool` + +HasStatus returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/internal/httpclient-next/docs/GetExpandInternalServerErrorBody.md b/internal/httpclient-next/docs/GetExpandInternalServerErrorBody.md new file mode 100644 index 000000000..77d4d9c27 --- /dev/null +++ b/internal/httpclient-next/docs/GetExpandInternalServerErrorBody.md @@ -0,0 +1,186 @@ +# GetExpandInternalServerErrorBody + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Code** | Pointer to **int64** | code | [optional] +**Details** | Pointer to **[]map[string]interface{}** | details | [optional] +**Message** | Pointer to **string** | message | [optional] +**Reason** | Pointer to **string** | reason | [optional] +**Request** | Pointer to **string** | request | [optional] +**Status** | Pointer to **string** | status | [optional] + +## Methods + +### NewGetExpandInternalServerErrorBody + +`func NewGetExpandInternalServerErrorBody() *GetExpandInternalServerErrorBody` + +NewGetExpandInternalServerErrorBody instantiates a new GetExpandInternalServerErrorBody object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewGetExpandInternalServerErrorBodyWithDefaults + +`func NewGetExpandInternalServerErrorBodyWithDefaults() *GetExpandInternalServerErrorBody` + +NewGetExpandInternalServerErrorBodyWithDefaults instantiates a new GetExpandInternalServerErrorBody object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetCode + +`func (o *GetExpandInternalServerErrorBody) GetCode() int64` + +GetCode returns the Code field if non-nil, zero value otherwise. + +### GetCodeOk + +`func (o *GetExpandInternalServerErrorBody) GetCodeOk() (*int64, bool)` + +GetCodeOk returns a tuple with the Code field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetCode + +`func (o *GetExpandInternalServerErrorBody) SetCode(v int64)` + +SetCode sets Code field to given value. + +### HasCode + +`func (o *GetExpandInternalServerErrorBody) HasCode() bool` + +HasCode returns a boolean if a field has been set. + +### GetDetails + +`func (o *GetExpandInternalServerErrorBody) GetDetails() []map[string]interface{}` + +GetDetails returns the Details field if non-nil, zero value otherwise. + +### GetDetailsOk + +`func (o *GetExpandInternalServerErrorBody) GetDetailsOk() (*[]map[string]interface{}, bool)` + +GetDetailsOk returns a tuple with the Details field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetDetails + +`func (o *GetExpandInternalServerErrorBody) SetDetails(v []map[string]interface{})` + +SetDetails sets Details field to given value. + +### HasDetails + +`func (o *GetExpandInternalServerErrorBody) HasDetails() bool` + +HasDetails returns a boolean if a field has been set. + +### GetMessage + +`func (o *GetExpandInternalServerErrorBody) GetMessage() string` + +GetMessage returns the Message field if non-nil, zero value otherwise. + +### GetMessageOk + +`func (o *GetExpandInternalServerErrorBody) GetMessageOk() (*string, bool)` + +GetMessageOk returns a tuple with the Message field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetMessage + +`func (o *GetExpandInternalServerErrorBody) SetMessage(v string)` + +SetMessage sets Message field to given value. + +### HasMessage + +`func (o *GetExpandInternalServerErrorBody) HasMessage() bool` + +HasMessage returns a boolean if a field has been set. + +### GetReason + +`func (o *GetExpandInternalServerErrorBody) GetReason() string` + +GetReason returns the Reason field if non-nil, zero value otherwise. + +### GetReasonOk + +`func (o *GetExpandInternalServerErrorBody) GetReasonOk() (*string, bool)` + +GetReasonOk returns a tuple with the Reason field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetReason + +`func (o *GetExpandInternalServerErrorBody) SetReason(v string)` + +SetReason sets Reason field to given value. + +### HasReason + +`func (o *GetExpandInternalServerErrorBody) HasReason() bool` + +HasReason returns a boolean if a field has been set. + +### GetRequest + +`func (o *GetExpandInternalServerErrorBody) GetRequest() string` + +GetRequest returns the Request field if non-nil, zero value otherwise. + +### GetRequestOk + +`func (o *GetExpandInternalServerErrorBody) GetRequestOk() (*string, bool)` + +GetRequestOk returns a tuple with the Request field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetRequest + +`func (o *GetExpandInternalServerErrorBody) SetRequest(v string)` + +SetRequest sets Request field to given value. + +### HasRequest + +`func (o *GetExpandInternalServerErrorBody) HasRequest() bool` + +HasRequest returns a boolean if a field has been set. + +### GetStatus + +`func (o *GetExpandInternalServerErrorBody) GetStatus() string` + +GetStatus returns the Status field if non-nil, zero value otherwise. + +### GetStatusOk + +`func (o *GetExpandInternalServerErrorBody) GetStatusOk() (*string, bool)` + +GetStatusOk returns a tuple with the Status field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetStatus + +`func (o *GetExpandInternalServerErrorBody) SetStatus(v string)` + +SetStatus sets Status field to given value. + +### HasStatus + +`func (o *GetExpandInternalServerErrorBody) HasStatus() bool` + +HasStatus returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/internal/httpclient-next/docs/GetExpandNotFoundBody.md b/internal/httpclient-next/docs/GetExpandNotFoundBody.md new file mode 100644 index 000000000..9d2b819e2 --- /dev/null +++ b/internal/httpclient-next/docs/GetExpandNotFoundBody.md @@ -0,0 +1,186 @@ +# GetExpandNotFoundBody + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Code** | Pointer to **int64** | code | [optional] +**Details** | Pointer to **[]map[string]interface{}** | details | [optional] +**Message** | Pointer to **string** | message | [optional] +**Reason** | Pointer to **string** | reason | [optional] +**Request** | Pointer to **string** | request | [optional] +**Status** | Pointer to **string** | status | [optional] + +## Methods + +### NewGetExpandNotFoundBody + +`func NewGetExpandNotFoundBody() *GetExpandNotFoundBody` + +NewGetExpandNotFoundBody instantiates a new GetExpandNotFoundBody object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewGetExpandNotFoundBodyWithDefaults + +`func NewGetExpandNotFoundBodyWithDefaults() *GetExpandNotFoundBody` + +NewGetExpandNotFoundBodyWithDefaults instantiates a new GetExpandNotFoundBody object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetCode + +`func (o *GetExpandNotFoundBody) GetCode() int64` + +GetCode returns the Code field if non-nil, zero value otherwise. + +### GetCodeOk + +`func (o *GetExpandNotFoundBody) GetCodeOk() (*int64, bool)` + +GetCodeOk returns a tuple with the Code field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetCode + +`func (o *GetExpandNotFoundBody) SetCode(v int64)` + +SetCode sets Code field to given value. + +### HasCode + +`func (o *GetExpandNotFoundBody) HasCode() bool` + +HasCode returns a boolean if a field has been set. + +### GetDetails + +`func (o *GetExpandNotFoundBody) GetDetails() []map[string]interface{}` + +GetDetails returns the Details field if non-nil, zero value otherwise. + +### GetDetailsOk + +`func (o *GetExpandNotFoundBody) GetDetailsOk() (*[]map[string]interface{}, bool)` + +GetDetailsOk returns a tuple with the Details field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetDetails + +`func (o *GetExpandNotFoundBody) SetDetails(v []map[string]interface{})` + +SetDetails sets Details field to given value. + +### HasDetails + +`func (o *GetExpandNotFoundBody) HasDetails() bool` + +HasDetails returns a boolean if a field has been set. + +### GetMessage + +`func (o *GetExpandNotFoundBody) GetMessage() string` + +GetMessage returns the Message field if non-nil, zero value otherwise. + +### GetMessageOk + +`func (o *GetExpandNotFoundBody) GetMessageOk() (*string, bool)` + +GetMessageOk returns a tuple with the Message field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetMessage + +`func (o *GetExpandNotFoundBody) SetMessage(v string)` + +SetMessage sets Message field to given value. + +### HasMessage + +`func (o *GetExpandNotFoundBody) HasMessage() bool` + +HasMessage returns a boolean if a field has been set. + +### GetReason + +`func (o *GetExpandNotFoundBody) GetReason() string` + +GetReason returns the Reason field if non-nil, zero value otherwise. + +### GetReasonOk + +`func (o *GetExpandNotFoundBody) GetReasonOk() (*string, bool)` + +GetReasonOk returns a tuple with the Reason field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetReason + +`func (o *GetExpandNotFoundBody) SetReason(v string)` + +SetReason sets Reason field to given value. + +### HasReason + +`func (o *GetExpandNotFoundBody) HasReason() bool` + +HasReason returns a boolean if a field has been set. + +### GetRequest + +`func (o *GetExpandNotFoundBody) GetRequest() string` + +GetRequest returns the Request field if non-nil, zero value otherwise. + +### GetRequestOk + +`func (o *GetExpandNotFoundBody) GetRequestOk() (*string, bool)` + +GetRequestOk returns a tuple with the Request field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetRequest + +`func (o *GetExpandNotFoundBody) SetRequest(v string)` + +SetRequest sets Request field to given value. + +### HasRequest + +`func (o *GetExpandNotFoundBody) HasRequest() bool` + +HasRequest returns a boolean if a field has been set. + +### GetStatus + +`func (o *GetExpandNotFoundBody) GetStatus() string` + +GetStatus returns the Status field if non-nil, zero value otherwise. + +### GetStatusOk + +`func (o *GetExpandNotFoundBody) GetStatusOk() (*string, bool)` + +GetStatusOk returns a tuple with the Status field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetStatus + +`func (o *GetExpandNotFoundBody) SetStatus(v string)` + +SetStatus sets Status field to given value. + +### HasStatus + +`func (o *GetExpandNotFoundBody) HasStatus() bool` + +HasStatus returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/internal/httpclient-next/docs/GetRelationTuplesInternalServerErrorBody.md b/internal/httpclient-next/docs/GetRelationTuplesInternalServerErrorBody.md new file mode 100644 index 000000000..b2bf02db6 --- /dev/null +++ b/internal/httpclient-next/docs/GetRelationTuplesInternalServerErrorBody.md @@ -0,0 +1,186 @@ +# GetRelationTuplesInternalServerErrorBody + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Code** | Pointer to **int64** | code | [optional] +**Details** | Pointer to **[]map[string]interface{}** | details | [optional] +**Message** | Pointer to **string** | message | [optional] +**Reason** | Pointer to **string** | reason | [optional] +**Request** | Pointer to **string** | request | [optional] +**Status** | Pointer to **string** | status | [optional] + +## Methods + +### NewGetRelationTuplesInternalServerErrorBody + +`func NewGetRelationTuplesInternalServerErrorBody() *GetRelationTuplesInternalServerErrorBody` + +NewGetRelationTuplesInternalServerErrorBody instantiates a new GetRelationTuplesInternalServerErrorBody object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewGetRelationTuplesInternalServerErrorBodyWithDefaults + +`func NewGetRelationTuplesInternalServerErrorBodyWithDefaults() *GetRelationTuplesInternalServerErrorBody` + +NewGetRelationTuplesInternalServerErrorBodyWithDefaults instantiates a new GetRelationTuplesInternalServerErrorBody object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetCode + +`func (o *GetRelationTuplesInternalServerErrorBody) GetCode() int64` + +GetCode returns the Code field if non-nil, zero value otherwise. + +### GetCodeOk + +`func (o *GetRelationTuplesInternalServerErrorBody) GetCodeOk() (*int64, bool)` + +GetCodeOk returns a tuple with the Code field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetCode + +`func (o *GetRelationTuplesInternalServerErrorBody) SetCode(v int64)` + +SetCode sets Code field to given value. + +### HasCode + +`func (o *GetRelationTuplesInternalServerErrorBody) HasCode() bool` + +HasCode returns a boolean if a field has been set. + +### GetDetails + +`func (o *GetRelationTuplesInternalServerErrorBody) GetDetails() []map[string]interface{}` + +GetDetails returns the Details field if non-nil, zero value otherwise. + +### GetDetailsOk + +`func (o *GetRelationTuplesInternalServerErrorBody) GetDetailsOk() (*[]map[string]interface{}, bool)` + +GetDetailsOk returns a tuple with the Details field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetDetails + +`func (o *GetRelationTuplesInternalServerErrorBody) SetDetails(v []map[string]interface{})` + +SetDetails sets Details field to given value. + +### HasDetails + +`func (o *GetRelationTuplesInternalServerErrorBody) HasDetails() bool` + +HasDetails returns a boolean if a field has been set. + +### GetMessage + +`func (o *GetRelationTuplesInternalServerErrorBody) GetMessage() string` + +GetMessage returns the Message field if non-nil, zero value otherwise. + +### GetMessageOk + +`func (o *GetRelationTuplesInternalServerErrorBody) GetMessageOk() (*string, bool)` + +GetMessageOk returns a tuple with the Message field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetMessage + +`func (o *GetRelationTuplesInternalServerErrorBody) SetMessage(v string)` + +SetMessage sets Message field to given value. + +### HasMessage + +`func (o *GetRelationTuplesInternalServerErrorBody) HasMessage() bool` + +HasMessage returns a boolean if a field has been set. + +### GetReason + +`func (o *GetRelationTuplesInternalServerErrorBody) GetReason() string` + +GetReason returns the Reason field if non-nil, zero value otherwise. + +### GetReasonOk + +`func (o *GetRelationTuplesInternalServerErrorBody) GetReasonOk() (*string, bool)` + +GetReasonOk returns a tuple with the Reason field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetReason + +`func (o *GetRelationTuplesInternalServerErrorBody) SetReason(v string)` + +SetReason sets Reason field to given value. + +### HasReason + +`func (o *GetRelationTuplesInternalServerErrorBody) HasReason() bool` + +HasReason returns a boolean if a field has been set. + +### GetRequest + +`func (o *GetRelationTuplesInternalServerErrorBody) GetRequest() string` + +GetRequest returns the Request field if non-nil, zero value otherwise. + +### GetRequestOk + +`func (o *GetRelationTuplesInternalServerErrorBody) GetRequestOk() (*string, bool)` + +GetRequestOk returns a tuple with the Request field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetRequest + +`func (o *GetRelationTuplesInternalServerErrorBody) SetRequest(v string)` + +SetRequest sets Request field to given value. + +### HasRequest + +`func (o *GetRelationTuplesInternalServerErrorBody) HasRequest() bool` + +HasRequest returns a boolean if a field has been set. + +### GetStatus + +`func (o *GetRelationTuplesInternalServerErrorBody) GetStatus() string` + +GetStatus returns the Status field if non-nil, zero value otherwise. + +### GetStatusOk + +`func (o *GetRelationTuplesInternalServerErrorBody) GetStatusOk() (*string, bool)` + +GetStatusOk returns a tuple with the Status field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetStatus + +`func (o *GetRelationTuplesInternalServerErrorBody) SetStatus(v string)` + +SetStatus sets Status field to given value. + +### HasStatus + +`func (o *GetRelationTuplesInternalServerErrorBody) HasStatus() bool` + +HasStatus returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/internal/httpclient-next/docs/GetRelationTuplesNotFoundBody.md b/internal/httpclient-next/docs/GetRelationTuplesNotFoundBody.md new file mode 100644 index 000000000..5282ba372 --- /dev/null +++ b/internal/httpclient-next/docs/GetRelationTuplesNotFoundBody.md @@ -0,0 +1,186 @@ +# GetRelationTuplesNotFoundBody + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Code** | Pointer to **int64** | code | [optional] +**Details** | Pointer to **[]map[string]interface{}** | details | [optional] +**Message** | Pointer to **string** | message | [optional] +**Reason** | Pointer to **string** | reason | [optional] +**Request** | Pointer to **string** | request | [optional] +**Status** | Pointer to **string** | status | [optional] + +## Methods + +### NewGetRelationTuplesNotFoundBody + +`func NewGetRelationTuplesNotFoundBody() *GetRelationTuplesNotFoundBody` + +NewGetRelationTuplesNotFoundBody instantiates a new GetRelationTuplesNotFoundBody object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewGetRelationTuplesNotFoundBodyWithDefaults + +`func NewGetRelationTuplesNotFoundBodyWithDefaults() *GetRelationTuplesNotFoundBody` + +NewGetRelationTuplesNotFoundBodyWithDefaults instantiates a new GetRelationTuplesNotFoundBody object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetCode + +`func (o *GetRelationTuplesNotFoundBody) GetCode() int64` + +GetCode returns the Code field if non-nil, zero value otherwise. + +### GetCodeOk + +`func (o *GetRelationTuplesNotFoundBody) GetCodeOk() (*int64, bool)` + +GetCodeOk returns a tuple with the Code field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetCode + +`func (o *GetRelationTuplesNotFoundBody) SetCode(v int64)` + +SetCode sets Code field to given value. + +### HasCode + +`func (o *GetRelationTuplesNotFoundBody) HasCode() bool` + +HasCode returns a boolean if a field has been set. + +### GetDetails + +`func (o *GetRelationTuplesNotFoundBody) GetDetails() []map[string]interface{}` + +GetDetails returns the Details field if non-nil, zero value otherwise. + +### GetDetailsOk + +`func (o *GetRelationTuplesNotFoundBody) GetDetailsOk() (*[]map[string]interface{}, bool)` + +GetDetailsOk returns a tuple with the Details field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetDetails + +`func (o *GetRelationTuplesNotFoundBody) SetDetails(v []map[string]interface{})` + +SetDetails sets Details field to given value. + +### HasDetails + +`func (o *GetRelationTuplesNotFoundBody) HasDetails() bool` + +HasDetails returns a boolean if a field has been set. + +### GetMessage + +`func (o *GetRelationTuplesNotFoundBody) GetMessage() string` + +GetMessage returns the Message field if non-nil, zero value otherwise. + +### GetMessageOk + +`func (o *GetRelationTuplesNotFoundBody) GetMessageOk() (*string, bool)` + +GetMessageOk returns a tuple with the Message field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetMessage + +`func (o *GetRelationTuplesNotFoundBody) SetMessage(v string)` + +SetMessage sets Message field to given value. + +### HasMessage + +`func (o *GetRelationTuplesNotFoundBody) HasMessage() bool` + +HasMessage returns a boolean if a field has been set. + +### GetReason + +`func (o *GetRelationTuplesNotFoundBody) GetReason() string` + +GetReason returns the Reason field if non-nil, zero value otherwise. + +### GetReasonOk + +`func (o *GetRelationTuplesNotFoundBody) GetReasonOk() (*string, bool)` + +GetReasonOk returns a tuple with the Reason field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetReason + +`func (o *GetRelationTuplesNotFoundBody) SetReason(v string)` + +SetReason sets Reason field to given value. + +### HasReason + +`func (o *GetRelationTuplesNotFoundBody) HasReason() bool` + +HasReason returns a boolean if a field has been set. + +### GetRequest + +`func (o *GetRelationTuplesNotFoundBody) GetRequest() string` + +GetRequest returns the Request field if non-nil, zero value otherwise. + +### GetRequestOk + +`func (o *GetRelationTuplesNotFoundBody) GetRequestOk() (*string, bool)` + +GetRequestOk returns a tuple with the Request field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetRequest + +`func (o *GetRelationTuplesNotFoundBody) SetRequest(v string)` + +SetRequest sets Request field to given value. + +### HasRequest + +`func (o *GetRelationTuplesNotFoundBody) HasRequest() bool` + +HasRequest returns a boolean if a field has been set. + +### GetStatus + +`func (o *GetRelationTuplesNotFoundBody) GetStatus() string` + +GetStatus returns the Status field if non-nil, zero value otherwise. + +### GetStatusOk + +`func (o *GetRelationTuplesNotFoundBody) GetStatusOk() (*string, bool)` + +GetStatusOk returns a tuple with the Status field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetStatus + +`func (o *GetRelationTuplesNotFoundBody) SetStatus(v string)` + +SetStatus sets Status field to given value. + +### HasStatus + +`func (o *GetRelationTuplesNotFoundBody) HasStatus() bool` + +HasStatus returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/internal/httpclient-next/docs/GetRelationTuplesResponse.md b/internal/httpclient-next/docs/GetRelationTuplesResponse.md new file mode 100644 index 000000000..0b8075ec0 --- /dev/null +++ b/internal/httpclient-next/docs/GetRelationTuplesResponse.md @@ -0,0 +1,82 @@ +# GetRelationTuplesResponse + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**NextPageToken** | Pointer to **string** | The opaque token to provide in a subsequent request to get the next page. It is the empty string iff this is the last page. | [optional] +**RelationTuples** | Pointer to [**[]InternalRelationTuple**](InternalRelationTuple.md) | relation tuples | [optional] + +## Methods + +### NewGetRelationTuplesResponse + +`func NewGetRelationTuplesResponse() *GetRelationTuplesResponse` + +NewGetRelationTuplesResponse instantiates a new GetRelationTuplesResponse object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewGetRelationTuplesResponseWithDefaults + +`func NewGetRelationTuplesResponseWithDefaults() *GetRelationTuplesResponse` + +NewGetRelationTuplesResponseWithDefaults instantiates a new GetRelationTuplesResponse object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetNextPageToken + +`func (o *GetRelationTuplesResponse) GetNextPageToken() string` + +GetNextPageToken returns the NextPageToken field if non-nil, zero value otherwise. + +### GetNextPageTokenOk + +`func (o *GetRelationTuplesResponse) GetNextPageTokenOk() (*string, bool)` + +GetNextPageTokenOk returns a tuple with the NextPageToken field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetNextPageToken + +`func (o *GetRelationTuplesResponse) SetNextPageToken(v string)` + +SetNextPageToken sets NextPageToken field to given value. + +### HasNextPageToken + +`func (o *GetRelationTuplesResponse) HasNextPageToken() bool` + +HasNextPageToken returns a boolean if a field has been set. + +### GetRelationTuples + +`func (o *GetRelationTuplesResponse) GetRelationTuples() []InternalRelationTuple` + +GetRelationTuples returns the RelationTuples field if non-nil, zero value otherwise. + +### GetRelationTuplesOk + +`func (o *GetRelationTuplesResponse) GetRelationTuplesOk() (*[]InternalRelationTuple, bool)` + +GetRelationTuplesOk returns a tuple with the RelationTuples field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetRelationTuples + +`func (o *GetRelationTuplesResponse) SetRelationTuples(v []InternalRelationTuple)` + +SetRelationTuples sets RelationTuples field to given value. + +### HasRelationTuples + +`func (o *GetRelationTuplesResponse) HasRelationTuples() bool` + +HasRelationTuples returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/internal/httpclient-next/docs/HealthNotReadyStatus.md b/internal/httpclient-next/docs/HealthNotReadyStatus.md new file mode 100644 index 000000000..9c40dcf5f --- /dev/null +++ b/internal/httpclient-next/docs/HealthNotReadyStatus.md @@ -0,0 +1,56 @@ +# HealthNotReadyStatus + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Errors** | Pointer to **map[string]string** | Errors contains a list of errors that caused the not ready status. | [optional] + +## Methods + +### NewHealthNotReadyStatus + +`func NewHealthNotReadyStatus() *HealthNotReadyStatus` + +NewHealthNotReadyStatus instantiates a new HealthNotReadyStatus object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewHealthNotReadyStatusWithDefaults + +`func NewHealthNotReadyStatusWithDefaults() *HealthNotReadyStatus` + +NewHealthNotReadyStatusWithDefaults instantiates a new HealthNotReadyStatus object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetErrors + +`func (o *HealthNotReadyStatus) GetErrors() map[string]string` + +GetErrors returns the Errors field if non-nil, zero value otherwise. + +### GetErrorsOk + +`func (o *HealthNotReadyStatus) GetErrorsOk() (*map[string]string, bool)` + +GetErrorsOk returns a tuple with the Errors field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetErrors + +`func (o *HealthNotReadyStatus) SetErrors(v map[string]string)` + +SetErrors sets Errors field to given value. + +### HasErrors + +`func (o *HealthNotReadyStatus) HasErrors() bool` + +HasErrors returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/internal/httpclient-next/docs/HealthStatus.md b/internal/httpclient-next/docs/HealthStatus.md new file mode 100644 index 000000000..0173b4251 --- /dev/null +++ b/internal/httpclient-next/docs/HealthStatus.md @@ -0,0 +1,56 @@ +# HealthStatus + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Status** | Pointer to **string** | Status always contains \"ok\". | [optional] + +## Methods + +### NewHealthStatus + +`func NewHealthStatus() *HealthStatus` + +NewHealthStatus instantiates a new HealthStatus object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewHealthStatusWithDefaults + +`func NewHealthStatusWithDefaults() *HealthStatus` + +NewHealthStatusWithDefaults instantiates a new HealthStatus object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetStatus + +`func (o *HealthStatus) GetStatus() string` + +GetStatus returns the Status field if non-nil, zero value otherwise. + +### GetStatusOk + +`func (o *HealthStatus) GetStatusOk() (*string, bool)` + +GetStatusOk returns a tuple with the Status field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetStatus + +`func (o *HealthStatus) SetStatus(v string)` + +SetStatus sets Status field to given value. + +### HasStatus + +`func (o *HealthStatus) HasStatus() bool` + +HasStatus returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/internal/httpclient-next/docs/InlineResponse200.md b/internal/httpclient-next/docs/InlineResponse200.md new file mode 100644 index 000000000..430ba9b99 --- /dev/null +++ b/internal/httpclient-next/docs/InlineResponse200.md @@ -0,0 +1,51 @@ +# InlineResponse200 + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Status** | **string** | Always \"ok\". | + +## Methods + +### NewInlineResponse200 + +`func NewInlineResponse200(status string, ) *InlineResponse200` + +NewInlineResponse200 instantiates a new InlineResponse200 object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewInlineResponse200WithDefaults + +`func NewInlineResponse200WithDefaults() *InlineResponse200` + +NewInlineResponse200WithDefaults instantiates a new InlineResponse200 object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetStatus + +`func (o *InlineResponse200) GetStatus() string` + +GetStatus returns the Status field if non-nil, zero value otherwise. + +### GetStatusOk + +`func (o *InlineResponse200) GetStatusOk() (*string, bool)` + +GetStatusOk returns a tuple with the Status field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetStatus + +`func (o *InlineResponse200) SetStatus(v string)` + +SetStatus sets Status field to given value. + + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/internal/httpclient-next/docs/InlineResponse2001.md b/internal/httpclient-next/docs/InlineResponse2001.md new file mode 100644 index 000000000..4102597f2 --- /dev/null +++ b/internal/httpclient-next/docs/InlineResponse2001.md @@ -0,0 +1,51 @@ +# InlineResponse2001 + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Version** | **string** | The version of Ory Keto. | + +## Methods + +### NewInlineResponse2001 + +`func NewInlineResponse2001(version string, ) *InlineResponse2001` + +NewInlineResponse2001 instantiates a new InlineResponse2001 object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewInlineResponse2001WithDefaults + +`func NewInlineResponse2001WithDefaults() *InlineResponse2001` + +NewInlineResponse2001WithDefaults instantiates a new InlineResponse2001 object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetVersion + +`func (o *InlineResponse2001) GetVersion() string` + +GetVersion returns the Version field if non-nil, zero value otherwise. + +### GetVersionOk + +`func (o *InlineResponse2001) GetVersionOk() (*string, bool)` + +GetVersionOk returns a tuple with the Version field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetVersion + +`func (o *InlineResponse2001) SetVersion(v string)` + +SetVersion sets Version field to given value. + + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/internal/httpclient-next/docs/InlineResponse503.md b/internal/httpclient-next/docs/InlineResponse503.md new file mode 100644 index 000000000..3a79177f1 --- /dev/null +++ b/internal/httpclient-next/docs/InlineResponse503.md @@ -0,0 +1,51 @@ +# InlineResponse503 + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Errors** | **map[string]string** | Errors contains a list of errors that caused the not ready status. | + +## Methods + +### NewInlineResponse503 + +`func NewInlineResponse503(errors map[string]string, ) *InlineResponse503` + +NewInlineResponse503 instantiates a new InlineResponse503 object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewInlineResponse503WithDefaults + +`func NewInlineResponse503WithDefaults() *InlineResponse503` + +NewInlineResponse503WithDefaults instantiates a new InlineResponse503 object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetErrors + +`func (o *InlineResponse503) GetErrors() map[string]string` + +GetErrors returns the Errors field if non-nil, zero value otherwise. + +### GetErrorsOk + +`func (o *InlineResponse503) GetErrorsOk() (*map[string]string, bool)` + +GetErrorsOk returns a tuple with the Errors field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetErrors + +`func (o *InlineResponse503) SetErrors(v map[string]string)` + +SetErrors sets Errors field to given value. + + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/internal/httpclient-next/docs/InternalRelationTuple.md b/internal/httpclient-next/docs/InternalRelationTuple.md new file mode 100644 index 000000000..888a4ec9e --- /dev/null +++ b/internal/httpclient-next/docs/InternalRelationTuple.md @@ -0,0 +1,145 @@ +# InternalRelationTuple + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Namespace** | **string** | Namespace of the Relation Tuple | +**Object** | **string** | Object of the Relation Tuple | +**Relation** | **string** | Relation of the Relation Tuple | +**SubjectId** | Pointer to **string** | SubjectID of the Relation Tuple Either SubjectSet or SubjectID are required. | [optional] +**SubjectSet** | Pointer to [**SubjectSet**](SubjectSet.md) | | [optional] + +## Methods + +### NewInternalRelationTuple + +`func NewInternalRelationTuple(namespace string, object string, relation string, ) *InternalRelationTuple` + +NewInternalRelationTuple instantiates a new InternalRelationTuple object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewInternalRelationTupleWithDefaults + +`func NewInternalRelationTupleWithDefaults() *InternalRelationTuple` + +NewInternalRelationTupleWithDefaults instantiates a new InternalRelationTuple object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetNamespace + +`func (o *InternalRelationTuple) GetNamespace() string` + +GetNamespace returns the Namespace field if non-nil, zero value otherwise. + +### GetNamespaceOk + +`func (o *InternalRelationTuple) GetNamespaceOk() (*string, bool)` + +GetNamespaceOk returns a tuple with the Namespace field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetNamespace + +`func (o *InternalRelationTuple) SetNamespace(v string)` + +SetNamespace sets Namespace field to given value. + + +### GetObject + +`func (o *InternalRelationTuple) GetObject() string` + +GetObject returns the Object field if non-nil, zero value otherwise. + +### GetObjectOk + +`func (o *InternalRelationTuple) GetObjectOk() (*string, bool)` + +GetObjectOk returns a tuple with the Object field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetObject + +`func (o *InternalRelationTuple) SetObject(v string)` + +SetObject sets Object field to given value. + + +### GetRelation + +`func (o *InternalRelationTuple) GetRelation() string` + +GetRelation returns the Relation field if non-nil, zero value otherwise. + +### GetRelationOk + +`func (o *InternalRelationTuple) GetRelationOk() (*string, bool)` + +GetRelationOk returns a tuple with the Relation field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetRelation + +`func (o *InternalRelationTuple) SetRelation(v string)` + +SetRelation sets Relation field to given value. + + +### GetSubjectId + +`func (o *InternalRelationTuple) GetSubjectId() string` + +GetSubjectId returns the SubjectId field if non-nil, zero value otherwise. + +### GetSubjectIdOk + +`func (o *InternalRelationTuple) GetSubjectIdOk() (*string, bool)` + +GetSubjectIdOk returns a tuple with the SubjectId field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetSubjectId + +`func (o *InternalRelationTuple) SetSubjectId(v string)` + +SetSubjectId sets SubjectId field to given value. + +### HasSubjectId + +`func (o *InternalRelationTuple) HasSubjectId() bool` + +HasSubjectId returns a boolean if a field has been set. + +### GetSubjectSet + +`func (o *InternalRelationTuple) GetSubjectSet() SubjectSet` + +GetSubjectSet returns the SubjectSet field if non-nil, zero value otherwise. + +### GetSubjectSetOk + +`func (o *InternalRelationTuple) GetSubjectSetOk() (*SubjectSet, bool)` + +GetSubjectSetOk returns a tuple with the SubjectSet field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetSubjectSet + +`func (o *InternalRelationTuple) SetSubjectSet(v SubjectSet)` + +SetSubjectSet sets SubjectSet field to given value. + +### HasSubjectSet + +`func (o *InternalRelationTuple) HasSubjectSet() bool` + +HasSubjectSet returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/internal/httpclient-next/docs/IsInstanceAliveInternalServerErrorBody.md b/internal/httpclient-next/docs/IsInstanceAliveInternalServerErrorBody.md new file mode 100644 index 000000000..f9b8d0167 --- /dev/null +++ b/internal/httpclient-next/docs/IsInstanceAliveInternalServerErrorBody.md @@ -0,0 +1,186 @@ +# IsInstanceAliveInternalServerErrorBody + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Code** | Pointer to **int64** | code | [optional] +**Details** | Pointer to **[]map[string]interface{}** | details | [optional] +**Message** | Pointer to **string** | message | [optional] +**Reason** | Pointer to **string** | reason | [optional] +**Request** | Pointer to **string** | request | [optional] +**Status** | Pointer to **string** | status | [optional] + +## Methods + +### NewIsInstanceAliveInternalServerErrorBody + +`func NewIsInstanceAliveInternalServerErrorBody() *IsInstanceAliveInternalServerErrorBody` + +NewIsInstanceAliveInternalServerErrorBody instantiates a new IsInstanceAliveInternalServerErrorBody object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewIsInstanceAliveInternalServerErrorBodyWithDefaults + +`func NewIsInstanceAliveInternalServerErrorBodyWithDefaults() *IsInstanceAliveInternalServerErrorBody` + +NewIsInstanceAliveInternalServerErrorBodyWithDefaults instantiates a new IsInstanceAliveInternalServerErrorBody object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetCode + +`func (o *IsInstanceAliveInternalServerErrorBody) GetCode() int64` + +GetCode returns the Code field if non-nil, zero value otherwise. + +### GetCodeOk + +`func (o *IsInstanceAliveInternalServerErrorBody) GetCodeOk() (*int64, bool)` + +GetCodeOk returns a tuple with the Code field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetCode + +`func (o *IsInstanceAliveInternalServerErrorBody) SetCode(v int64)` + +SetCode sets Code field to given value. + +### HasCode + +`func (o *IsInstanceAliveInternalServerErrorBody) HasCode() bool` + +HasCode returns a boolean if a field has been set. + +### GetDetails + +`func (o *IsInstanceAliveInternalServerErrorBody) GetDetails() []map[string]interface{}` + +GetDetails returns the Details field if non-nil, zero value otherwise. + +### GetDetailsOk + +`func (o *IsInstanceAliveInternalServerErrorBody) GetDetailsOk() (*[]map[string]interface{}, bool)` + +GetDetailsOk returns a tuple with the Details field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetDetails + +`func (o *IsInstanceAliveInternalServerErrorBody) SetDetails(v []map[string]interface{})` + +SetDetails sets Details field to given value. + +### HasDetails + +`func (o *IsInstanceAliveInternalServerErrorBody) HasDetails() bool` + +HasDetails returns a boolean if a field has been set. + +### GetMessage + +`func (o *IsInstanceAliveInternalServerErrorBody) GetMessage() string` + +GetMessage returns the Message field if non-nil, zero value otherwise. + +### GetMessageOk + +`func (o *IsInstanceAliveInternalServerErrorBody) GetMessageOk() (*string, bool)` + +GetMessageOk returns a tuple with the Message field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetMessage + +`func (o *IsInstanceAliveInternalServerErrorBody) SetMessage(v string)` + +SetMessage sets Message field to given value. + +### HasMessage + +`func (o *IsInstanceAliveInternalServerErrorBody) HasMessage() bool` + +HasMessage returns a boolean if a field has been set. + +### GetReason + +`func (o *IsInstanceAliveInternalServerErrorBody) GetReason() string` + +GetReason returns the Reason field if non-nil, zero value otherwise. + +### GetReasonOk + +`func (o *IsInstanceAliveInternalServerErrorBody) GetReasonOk() (*string, bool)` + +GetReasonOk returns a tuple with the Reason field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetReason + +`func (o *IsInstanceAliveInternalServerErrorBody) SetReason(v string)` + +SetReason sets Reason field to given value. + +### HasReason + +`func (o *IsInstanceAliveInternalServerErrorBody) HasReason() bool` + +HasReason returns a boolean if a field has been set. + +### GetRequest + +`func (o *IsInstanceAliveInternalServerErrorBody) GetRequest() string` + +GetRequest returns the Request field if non-nil, zero value otherwise. + +### GetRequestOk + +`func (o *IsInstanceAliveInternalServerErrorBody) GetRequestOk() (*string, bool)` + +GetRequestOk returns a tuple with the Request field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetRequest + +`func (o *IsInstanceAliveInternalServerErrorBody) SetRequest(v string)` + +SetRequest sets Request field to given value. + +### HasRequest + +`func (o *IsInstanceAliveInternalServerErrorBody) HasRequest() bool` + +HasRequest returns a boolean if a field has been set. + +### GetStatus + +`func (o *IsInstanceAliveInternalServerErrorBody) GetStatus() string` + +GetStatus returns the Status field if non-nil, zero value otherwise. + +### GetStatusOk + +`func (o *IsInstanceAliveInternalServerErrorBody) GetStatusOk() (*string, bool)` + +GetStatusOk returns a tuple with the Status field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetStatus + +`func (o *IsInstanceAliveInternalServerErrorBody) SetStatus(v string)` + +SetStatus sets Status field to given value. + +### HasStatus + +`func (o *IsInstanceAliveInternalServerErrorBody) HasStatus() bool` + +HasStatus returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/internal/httpclient-next/docs/MetadataApi.md b/internal/httpclient-next/docs/MetadataApi.md new file mode 100644 index 000000000..ff2c9bb07 --- /dev/null +++ b/internal/httpclient-next/docs/MetadataApi.md @@ -0,0 +1,194 @@ +# \MetadataApi + +All URIs are relative to *http://localhost* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**GetVersion**](MetadataApi.md#GetVersion) | **Get** /version | Return Running Software Version. +[**IsAlive**](MetadataApi.md#IsAlive) | **Get** /health/alive | Check HTTP Server Status +[**IsReady**](MetadataApi.md#IsReady) | **Get** /health/ready | Check HTTP Server and Database Status + + + +## GetVersion + +> InlineResponse2001 GetVersion(ctx).Execute() + +Return Running Software Version. + + + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "./openapi" +) + +func main() { + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + resp, r, err := apiClient.MetadataApi.GetVersion(context.Background()).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `MetadataApi.GetVersion``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } + // response from `GetVersion`: InlineResponse2001 + fmt.Fprintf(os.Stdout, "Response from `MetadataApi.GetVersion`: %v\n", resp) +} +``` + +### Path Parameters + +This endpoint does not need any parameter. + +### Other Parameters + +Other parameters are passed through a pointer to a apiGetVersionRequest struct via the builder pattern + + +### Return type + +[**InlineResponse2001**](InlineResponse2001.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + + +## IsAlive + +> InlineResponse200 IsAlive(ctx).Execute() + +Check HTTP Server Status + + + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "./openapi" +) + +func main() { + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + resp, r, err := apiClient.MetadataApi.IsAlive(context.Background()).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `MetadataApi.IsAlive``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } + // response from `IsAlive`: InlineResponse200 + fmt.Fprintf(os.Stdout, "Response from `MetadataApi.IsAlive`: %v\n", resp) +} +``` + +### Path Parameters + +This endpoint does not need any parameter. + +### Other Parameters + +Other parameters are passed through a pointer to a apiIsAliveRequest struct via the builder pattern + + +### Return type + +[**InlineResponse200**](InlineResponse200.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + + +## IsReady + +> InlineResponse200 IsReady(ctx).Execute() + +Check HTTP Server and Database Status + + + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "./openapi" +) + +func main() { + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + resp, r, err := apiClient.MetadataApi.IsReady(context.Background()).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `MetadataApi.IsReady``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } + // response from `IsReady`: InlineResponse200 + fmt.Fprintf(os.Stdout, "Response from `MetadataApi.IsReady`: %v\n", resp) +} +``` + +### Path Parameters + +This endpoint does not need any parameter. + +### Other Parameters + +Other parameters are passed through a pointer to a apiIsReadyRequest struct via the builder pattern + + +### Return type + +[**InlineResponse200**](InlineResponse200.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + diff --git a/internal/httpclient-next/docs/PatchDelta.md b/internal/httpclient-next/docs/PatchDelta.md new file mode 100644 index 000000000..4b6a14f70 --- /dev/null +++ b/internal/httpclient-next/docs/PatchDelta.md @@ -0,0 +1,82 @@ +# PatchDelta + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Action** | Pointer to **string** | action | [optional] +**RelationTuple** | Pointer to [**InternalRelationTuple**](InternalRelationTuple.md) | | [optional] + +## Methods + +### NewPatchDelta + +`func NewPatchDelta() *PatchDelta` + +NewPatchDelta instantiates a new PatchDelta object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewPatchDeltaWithDefaults + +`func NewPatchDeltaWithDefaults() *PatchDelta` + +NewPatchDeltaWithDefaults instantiates a new PatchDelta object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetAction + +`func (o *PatchDelta) GetAction() string` + +GetAction returns the Action field if non-nil, zero value otherwise. + +### GetActionOk + +`func (o *PatchDelta) GetActionOk() (*string, bool)` + +GetActionOk returns a tuple with the Action field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetAction + +`func (o *PatchDelta) SetAction(v string)` + +SetAction sets Action field to given value. + +### HasAction + +`func (o *PatchDelta) HasAction() bool` + +HasAction returns a boolean if a field has been set. + +### GetRelationTuple + +`func (o *PatchDelta) GetRelationTuple() InternalRelationTuple` + +GetRelationTuple returns the RelationTuple field if non-nil, zero value otherwise. + +### GetRelationTupleOk + +`func (o *PatchDelta) GetRelationTupleOk() (*InternalRelationTuple, bool)` + +GetRelationTupleOk returns a tuple with the RelationTuple field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetRelationTuple + +`func (o *PatchDelta) SetRelationTuple(v InternalRelationTuple)` + +SetRelationTuple sets RelationTuple field to given value. + +### HasRelationTuple + +`func (o *PatchDelta) HasRelationTuple() bool` + +HasRelationTuple returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/internal/httpclient-next/docs/PatchRelationTuplesBadRequestBody.md b/internal/httpclient-next/docs/PatchRelationTuplesBadRequestBody.md new file mode 100644 index 000000000..7a17b72a0 --- /dev/null +++ b/internal/httpclient-next/docs/PatchRelationTuplesBadRequestBody.md @@ -0,0 +1,186 @@ +# PatchRelationTuplesBadRequestBody + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Code** | Pointer to **int64** | code | [optional] +**Details** | Pointer to **[]map[string]interface{}** | details | [optional] +**Message** | Pointer to **string** | message | [optional] +**Reason** | Pointer to **string** | reason | [optional] +**Request** | Pointer to **string** | request | [optional] +**Status** | Pointer to **string** | status | [optional] + +## Methods + +### NewPatchRelationTuplesBadRequestBody + +`func NewPatchRelationTuplesBadRequestBody() *PatchRelationTuplesBadRequestBody` + +NewPatchRelationTuplesBadRequestBody instantiates a new PatchRelationTuplesBadRequestBody object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewPatchRelationTuplesBadRequestBodyWithDefaults + +`func NewPatchRelationTuplesBadRequestBodyWithDefaults() *PatchRelationTuplesBadRequestBody` + +NewPatchRelationTuplesBadRequestBodyWithDefaults instantiates a new PatchRelationTuplesBadRequestBody object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetCode + +`func (o *PatchRelationTuplesBadRequestBody) GetCode() int64` + +GetCode returns the Code field if non-nil, zero value otherwise. + +### GetCodeOk + +`func (o *PatchRelationTuplesBadRequestBody) GetCodeOk() (*int64, bool)` + +GetCodeOk returns a tuple with the Code field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetCode + +`func (o *PatchRelationTuplesBadRequestBody) SetCode(v int64)` + +SetCode sets Code field to given value. + +### HasCode + +`func (o *PatchRelationTuplesBadRequestBody) HasCode() bool` + +HasCode returns a boolean if a field has been set. + +### GetDetails + +`func (o *PatchRelationTuplesBadRequestBody) GetDetails() []map[string]interface{}` + +GetDetails returns the Details field if non-nil, zero value otherwise. + +### GetDetailsOk + +`func (o *PatchRelationTuplesBadRequestBody) GetDetailsOk() (*[]map[string]interface{}, bool)` + +GetDetailsOk returns a tuple with the Details field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetDetails + +`func (o *PatchRelationTuplesBadRequestBody) SetDetails(v []map[string]interface{})` + +SetDetails sets Details field to given value. + +### HasDetails + +`func (o *PatchRelationTuplesBadRequestBody) HasDetails() bool` + +HasDetails returns a boolean if a field has been set. + +### GetMessage + +`func (o *PatchRelationTuplesBadRequestBody) GetMessage() string` + +GetMessage returns the Message field if non-nil, zero value otherwise. + +### GetMessageOk + +`func (o *PatchRelationTuplesBadRequestBody) GetMessageOk() (*string, bool)` + +GetMessageOk returns a tuple with the Message field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetMessage + +`func (o *PatchRelationTuplesBadRequestBody) SetMessage(v string)` + +SetMessage sets Message field to given value. + +### HasMessage + +`func (o *PatchRelationTuplesBadRequestBody) HasMessage() bool` + +HasMessage returns a boolean if a field has been set. + +### GetReason + +`func (o *PatchRelationTuplesBadRequestBody) GetReason() string` + +GetReason returns the Reason field if non-nil, zero value otherwise. + +### GetReasonOk + +`func (o *PatchRelationTuplesBadRequestBody) GetReasonOk() (*string, bool)` + +GetReasonOk returns a tuple with the Reason field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetReason + +`func (o *PatchRelationTuplesBadRequestBody) SetReason(v string)` + +SetReason sets Reason field to given value. + +### HasReason + +`func (o *PatchRelationTuplesBadRequestBody) HasReason() bool` + +HasReason returns a boolean if a field has been set. + +### GetRequest + +`func (o *PatchRelationTuplesBadRequestBody) GetRequest() string` + +GetRequest returns the Request field if non-nil, zero value otherwise. + +### GetRequestOk + +`func (o *PatchRelationTuplesBadRequestBody) GetRequestOk() (*string, bool)` + +GetRequestOk returns a tuple with the Request field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetRequest + +`func (o *PatchRelationTuplesBadRequestBody) SetRequest(v string)` + +SetRequest sets Request field to given value. + +### HasRequest + +`func (o *PatchRelationTuplesBadRequestBody) HasRequest() bool` + +HasRequest returns a boolean if a field has been set. + +### GetStatus + +`func (o *PatchRelationTuplesBadRequestBody) GetStatus() string` + +GetStatus returns the Status field if non-nil, zero value otherwise. + +### GetStatusOk + +`func (o *PatchRelationTuplesBadRequestBody) GetStatusOk() (*string, bool)` + +GetStatusOk returns a tuple with the Status field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetStatus + +`func (o *PatchRelationTuplesBadRequestBody) SetStatus(v string)` + +SetStatus sets Status field to given value. + +### HasStatus + +`func (o *PatchRelationTuplesBadRequestBody) HasStatus() bool` + +HasStatus returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/internal/httpclient-next/docs/PatchRelationTuplesInternalServerErrorBody.md b/internal/httpclient-next/docs/PatchRelationTuplesInternalServerErrorBody.md new file mode 100644 index 000000000..5a77c8c07 --- /dev/null +++ b/internal/httpclient-next/docs/PatchRelationTuplesInternalServerErrorBody.md @@ -0,0 +1,186 @@ +# PatchRelationTuplesInternalServerErrorBody + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Code** | Pointer to **int64** | code | [optional] +**Details** | Pointer to **[]map[string]interface{}** | details | [optional] +**Message** | Pointer to **string** | message | [optional] +**Reason** | Pointer to **string** | reason | [optional] +**Request** | Pointer to **string** | request | [optional] +**Status** | Pointer to **string** | status | [optional] + +## Methods + +### NewPatchRelationTuplesInternalServerErrorBody + +`func NewPatchRelationTuplesInternalServerErrorBody() *PatchRelationTuplesInternalServerErrorBody` + +NewPatchRelationTuplesInternalServerErrorBody instantiates a new PatchRelationTuplesInternalServerErrorBody object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewPatchRelationTuplesInternalServerErrorBodyWithDefaults + +`func NewPatchRelationTuplesInternalServerErrorBodyWithDefaults() *PatchRelationTuplesInternalServerErrorBody` + +NewPatchRelationTuplesInternalServerErrorBodyWithDefaults instantiates a new PatchRelationTuplesInternalServerErrorBody object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetCode + +`func (o *PatchRelationTuplesInternalServerErrorBody) GetCode() int64` + +GetCode returns the Code field if non-nil, zero value otherwise. + +### GetCodeOk + +`func (o *PatchRelationTuplesInternalServerErrorBody) GetCodeOk() (*int64, bool)` + +GetCodeOk returns a tuple with the Code field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetCode + +`func (o *PatchRelationTuplesInternalServerErrorBody) SetCode(v int64)` + +SetCode sets Code field to given value. + +### HasCode + +`func (o *PatchRelationTuplesInternalServerErrorBody) HasCode() bool` + +HasCode returns a boolean if a field has been set. + +### GetDetails + +`func (o *PatchRelationTuplesInternalServerErrorBody) GetDetails() []map[string]interface{}` + +GetDetails returns the Details field if non-nil, zero value otherwise. + +### GetDetailsOk + +`func (o *PatchRelationTuplesInternalServerErrorBody) GetDetailsOk() (*[]map[string]interface{}, bool)` + +GetDetailsOk returns a tuple with the Details field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetDetails + +`func (o *PatchRelationTuplesInternalServerErrorBody) SetDetails(v []map[string]interface{})` + +SetDetails sets Details field to given value. + +### HasDetails + +`func (o *PatchRelationTuplesInternalServerErrorBody) HasDetails() bool` + +HasDetails returns a boolean if a field has been set. + +### GetMessage + +`func (o *PatchRelationTuplesInternalServerErrorBody) GetMessage() string` + +GetMessage returns the Message field if non-nil, zero value otherwise. + +### GetMessageOk + +`func (o *PatchRelationTuplesInternalServerErrorBody) GetMessageOk() (*string, bool)` + +GetMessageOk returns a tuple with the Message field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetMessage + +`func (o *PatchRelationTuplesInternalServerErrorBody) SetMessage(v string)` + +SetMessage sets Message field to given value. + +### HasMessage + +`func (o *PatchRelationTuplesInternalServerErrorBody) HasMessage() bool` + +HasMessage returns a boolean if a field has been set. + +### GetReason + +`func (o *PatchRelationTuplesInternalServerErrorBody) GetReason() string` + +GetReason returns the Reason field if non-nil, zero value otherwise. + +### GetReasonOk + +`func (o *PatchRelationTuplesInternalServerErrorBody) GetReasonOk() (*string, bool)` + +GetReasonOk returns a tuple with the Reason field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetReason + +`func (o *PatchRelationTuplesInternalServerErrorBody) SetReason(v string)` + +SetReason sets Reason field to given value. + +### HasReason + +`func (o *PatchRelationTuplesInternalServerErrorBody) HasReason() bool` + +HasReason returns a boolean if a field has been set. + +### GetRequest + +`func (o *PatchRelationTuplesInternalServerErrorBody) GetRequest() string` + +GetRequest returns the Request field if non-nil, zero value otherwise. + +### GetRequestOk + +`func (o *PatchRelationTuplesInternalServerErrorBody) GetRequestOk() (*string, bool)` + +GetRequestOk returns a tuple with the Request field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetRequest + +`func (o *PatchRelationTuplesInternalServerErrorBody) SetRequest(v string)` + +SetRequest sets Request field to given value. + +### HasRequest + +`func (o *PatchRelationTuplesInternalServerErrorBody) HasRequest() bool` + +HasRequest returns a boolean if a field has been set. + +### GetStatus + +`func (o *PatchRelationTuplesInternalServerErrorBody) GetStatus() string` + +GetStatus returns the Status field if non-nil, zero value otherwise. + +### GetStatusOk + +`func (o *PatchRelationTuplesInternalServerErrorBody) GetStatusOk() (*string, bool)` + +GetStatusOk returns a tuple with the Status field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetStatus + +`func (o *PatchRelationTuplesInternalServerErrorBody) SetStatus(v string)` + +SetStatus sets Status field to given value. + +### HasStatus + +`func (o *PatchRelationTuplesInternalServerErrorBody) HasStatus() bool` + +HasStatus returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/internal/httpclient-next/docs/PatchRelationTuplesNotFoundBody.md b/internal/httpclient-next/docs/PatchRelationTuplesNotFoundBody.md new file mode 100644 index 000000000..f330de244 --- /dev/null +++ b/internal/httpclient-next/docs/PatchRelationTuplesNotFoundBody.md @@ -0,0 +1,186 @@ +# PatchRelationTuplesNotFoundBody + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Code** | Pointer to **int64** | code | [optional] +**Details** | Pointer to **[]map[string]interface{}** | details | [optional] +**Message** | Pointer to **string** | message | [optional] +**Reason** | Pointer to **string** | reason | [optional] +**Request** | Pointer to **string** | request | [optional] +**Status** | Pointer to **string** | status | [optional] + +## Methods + +### NewPatchRelationTuplesNotFoundBody + +`func NewPatchRelationTuplesNotFoundBody() *PatchRelationTuplesNotFoundBody` + +NewPatchRelationTuplesNotFoundBody instantiates a new PatchRelationTuplesNotFoundBody object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewPatchRelationTuplesNotFoundBodyWithDefaults + +`func NewPatchRelationTuplesNotFoundBodyWithDefaults() *PatchRelationTuplesNotFoundBody` + +NewPatchRelationTuplesNotFoundBodyWithDefaults instantiates a new PatchRelationTuplesNotFoundBody object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetCode + +`func (o *PatchRelationTuplesNotFoundBody) GetCode() int64` + +GetCode returns the Code field if non-nil, zero value otherwise. + +### GetCodeOk + +`func (o *PatchRelationTuplesNotFoundBody) GetCodeOk() (*int64, bool)` + +GetCodeOk returns a tuple with the Code field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetCode + +`func (o *PatchRelationTuplesNotFoundBody) SetCode(v int64)` + +SetCode sets Code field to given value. + +### HasCode + +`func (o *PatchRelationTuplesNotFoundBody) HasCode() bool` + +HasCode returns a boolean if a field has been set. + +### GetDetails + +`func (o *PatchRelationTuplesNotFoundBody) GetDetails() []map[string]interface{}` + +GetDetails returns the Details field if non-nil, zero value otherwise. + +### GetDetailsOk + +`func (o *PatchRelationTuplesNotFoundBody) GetDetailsOk() (*[]map[string]interface{}, bool)` + +GetDetailsOk returns a tuple with the Details field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetDetails + +`func (o *PatchRelationTuplesNotFoundBody) SetDetails(v []map[string]interface{})` + +SetDetails sets Details field to given value. + +### HasDetails + +`func (o *PatchRelationTuplesNotFoundBody) HasDetails() bool` + +HasDetails returns a boolean if a field has been set. + +### GetMessage + +`func (o *PatchRelationTuplesNotFoundBody) GetMessage() string` + +GetMessage returns the Message field if non-nil, zero value otherwise. + +### GetMessageOk + +`func (o *PatchRelationTuplesNotFoundBody) GetMessageOk() (*string, bool)` + +GetMessageOk returns a tuple with the Message field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetMessage + +`func (o *PatchRelationTuplesNotFoundBody) SetMessage(v string)` + +SetMessage sets Message field to given value. + +### HasMessage + +`func (o *PatchRelationTuplesNotFoundBody) HasMessage() bool` + +HasMessage returns a boolean if a field has been set. + +### GetReason + +`func (o *PatchRelationTuplesNotFoundBody) GetReason() string` + +GetReason returns the Reason field if non-nil, zero value otherwise. + +### GetReasonOk + +`func (o *PatchRelationTuplesNotFoundBody) GetReasonOk() (*string, bool)` + +GetReasonOk returns a tuple with the Reason field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetReason + +`func (o *PatchRelationTuplesNotFoundBody) SetReason(v string)` + +SetReason sets Reason field to given value. + +### HasReason + +`func (o *PatchRelationTuplesNotFoundBody) HasReason() bool` + +HasReason returns a boolean if a field has been set. + +### GetRequest + +`func (o *PatchRelationTuplesNotFoundBody) GetRequest() string` + +GetRequest returns the Request field if non-nil, zero value otherwise. + +### GetRequestOk + +`func (o *PatchRelationTuplesNotFoundBody) GetRequestOk() (*string, bool)` + +GetRequestOk returns a tuple with the Request field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetRequest + +`func (o *PatchRelationTuplesNotFoundBody) SetRequest(v string)` + +SetRequest sets Request field to given value. + +### HasRequest + +`func (o *PatchRelationTuplesNotFoundBody) HasRequest() bool` + +HasRequest returns a boolean if a field has been set. + +### GetStatus + +`func (o *PatchRelationTuplesNotFoundBody) GetStatus() string` + +GetStatus returns the Status field if non-nil, zero value otherwise. + +### GetStatusOk + +`func (o *PatchRelationTuplesNotFoundBody) GetStatusOk() (*string, bool)` + +GetStatusOk returns a tuple with the Status field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetStatus + +`func (o *PatchRelationTuplesNotFoundBody) SetStatus(v string)` + +SetStatus sets Status field to given value. + +### HasStatus + +`func (o *PatchRelationTuplesNotFoundBody) HasStatus() bool` + +HasStatus returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/internal/httpclient-next/docs/PostCheckBadRequestBody.md b/internal/httpclient-next/docs/PostCheckBadRequestBody.md new file mode 100644 index 000000000..15251601b --- /dev/null +++ b/internal/httpclient-next/docs/PostCheckBadRequestBody.md @@ -0,0 +1,186 @@ +# PostCheckBadRequestBody + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Code** | Pointer to **int64** | code | [optional] +**Details** | Pointer to **[]map[string]interface{}** | details | [optional] +**Message** | Pointer to **string** | message | [optional] +**Reason** | Pointer to **string** | reason | [optional] +**Request** | Pointer to **string** | request | [optional] +**Status** | Pointer to **string** | status | [optional] + +## Methods + +### NewPostCheckBadRequestBody + +`func NewPostCheckBadRequestBody() *PostCheckBadRequestBody` + +NewPostCheckBadRequestBody instantiates a new PostCheckBadRequestBody object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewPostCheckBadRequestBodyWithDefaults + +`func NewPostCheckBadRequestBodyWithDefaults() *PostCheckBadRequestBody` + +NewPostCheckBadRequestBodyWithDefaults instantiates a new PostCheckBadRequestBody object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetCode + +`func (o *PostCheckBadRequestBody) GetCode() int64` + +GetCode returns the Code field if non-nil, zero value otherwise. + +### GetCodeOk + +`func (o *PostCheckBadRequestBody) GetCodeOk() (*int64, bool)` + +GetCodeOk returns a tuple with the Code field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetCode + +`func (o *PostCheckBadRequestBody) SetCode(v int64)` + +SetCode sets Code field to given value. + +### HasCode + +`func (o *PostCheckBadRequestBody) HasCode() bool` + +HasCode returns a boolean if a field has been set. + +### GetDetails + +`func (o *PostCheckBadRequestBody) GetDetails() []map[string]interface{}` + +GetDetails returns the Details field if non-nil, zero value otherwise. + +### GetDetailsOk + +`func (o *PostCheckBadRequestBody) GetDetailsOk() (*[]map[string]interface{}, bool)` + +GetDetailsOk returns a tuple with the Details field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetDetails + +`func (o *PostCheckBadRequestBody) SetDetails(v []map[string]interface{})` + +SetDetails sets Details field to given value. + +### HasDetails + +`func (o *PostCheckBadRequestBody) HasDetails() bool` + +HasDetails returns a boolean if a field has been set. + +### GetMessage + +`func (o *PostCheckBadRequestBody) GetMessage() string` + +GetMessage returns the Message field if non-nil, zero value otherwise. + +### GetMessageOk + +`func (o *PostCheckBadRequestBody) GetMessageOk() (*string, bool)` + +GetMessageOk returns a tuple with the Message field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetMessage + +`func (o *PostCheckBadRequestBody) SetMessage(v string)` + +SetMessage sets Message field to given value. + +### HasMessage + +`func (o *PostCheckBadRequestBody) HasMessage() bool` + +HasMessage returns a boolean if a field has been set. + +### GetReason + +`func (o *PostCheckBadRequestBody) GetReason() string` + +GetReason returns the Reason field if non-nil, zero value otherwise. + +### GetReasonOk + +`func (o *PostCheckBadRequestBody) GetReasonOk() (*string, bool)` + +GetReasonOk returns a tuple with the Reason field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetReason + +`func (o *PostCheckBadRequestBody) SetReason(v string)` + +SetReason sets Reason field to given value. + +### HasReason + +`func (o *PostCheckBadRequestBody) HasReason() bool` + +HasReason returns a boolean if a field has been set. + +### GetRequest + +`func (o *PostCheckBadRequestBody) GetRequest() string` + +GetRequest returns the Request field if non-nil, zero value otherwise. + +### GetRequestOk + +`func (o *PostCheckBadRequestBody) GetRequestOk() (*string, bool)` + +GetRequestOk returns a tuple with the Request field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetRequest + +`func (o *PostCheckBadRequestBody) SetRequest(v string)` + +SetRequest sets Request field to given value. + +### HasRequest + +`func (o *PostCheckBadRequestBody) HasRequest() bool` + +HasRequest returns a boolean if a field has been set. + +### GetStatus + +`func (o *PostCheckBadRequestBody) GetStatus() string` + +GetStatus returns the Status field if non-nil, zero value otherwise. + +### GetStatusOk + +`func (o *PostCheckBadRequestBody) GetStatusOk() (*string, bool)` + +GetStatusOk returns a tuple with the Status field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetStatus + +`func (o *PostCheckBadRequestBody) SetStatus(v string)` + +SetStatus sets Status field to given value. + +### HasStatus + +`func (o *PostCheckBadRequestBody) HasStatus() bool` + +HasStatus returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/internal/httpclient-next/docs/PostCheckInternalServerErrorBody.md b/internal/httpclient-next/docs/PostCheckInternalServerErrorBody.md new file mode 100644 index 000000000..57cfd4b55 --- /dev/null +++ b/internal/httpclient-next/docs/PostCheckInternalServerErrorBody.md @@ -0,0 +1,186 @@ +# PostCheckInternalServerErrorBody + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Code** | Pointer to **int64** | code | [optional] +**Details** | Pointer to **[]map[string]interface{}** | details | [optional] +**Message** | Pointer to **string** | message | [optional] +**Reason** | Pointer to **string** | reason | [optional] +**Request** | Pointer to **string** | request | [optional] +**Status** | Pointer to **string** | status | [optional] + +## Methods + +### NewPostCheckInternalServerErrorBody + +`func NewPostCheckInternalServerErrorBody() *PostCheckInternalServerErrorBody` + +NewPostCheckInternalServerErrorBody instantiates a new PostCheckInternalServerErrorBody object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewPostCheckInternalServerErrorBodyWithDefaults + +`func NewPostCheckInternalServerErrorBodyWithDefaults() *PostCheckInternalServerErrorBody` + +NewPostCheckInternalServerErrorBodyWithDefaults instantiates a new PostCheckInternalServerErrorBody object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetCode + +`func (o *PostCheckInternalServerErrorBody) GetCode() int64` + +GetCode returns the Code field if non-nil, zero value otherwise. + +### GetCodeOk + +`func (o *PostCheckInternalServerErrorBody) GetCodeOk() (*int64, bool)` + +GetCodeOk returns a tuple with the Code field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetCode + +`func (o *PostCheckInternalServerErrorBody) SetCode(v int64)` + +SetCode sets Code field to given value. + +### HasCode + +`func (o *PostCheckInternalServerErrorBody) HasCode() bool` + +HasCode returns a boolean if a field has been set. + +### GetDetails + +`func (o *PostCheckInternalServerErrorBody) GetDetails() []map[string]interface{}` + +GetDetails returns the Details field if non-nil, zero value otherwise. + +### GetDetailsOk + +`func (o *PostCheckInternalServerErrorBody) GetDetailsOk() (*[]map[string]interface{}, bool)` + +GetDetailsOk returns a tuple with the Details field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetDetails + +`func (o *PostCheckInternalServerErrorBody) SetDetails(v []map[string]interface{})` + +SetDetails sets Details field to given value. + +### HasDetails + +`func (o *PostCheckInternalServerErrorBody) HasDetails() bool` + +HasDetails returns a boolean if a field has been set. + +### GetMessage + +`func (o *PostCheckInternalServerErrorBody) GetMessage() string` + +GetMessage returns the Message field if non-nil, zero value otherwise. + +### GetMessageOk + +`func (o *PostCheckInternalServerErrorBody) GetMessageOk() (*string, bool)` + +GetMessageOk returns a tuple with the Message field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetMessage + +`func (o *PostCheckInternalServerErrorBody) SetMessage(v string)` + +SetMessage sets Message field to given value. + +### HasMessage + +`func (o *PostCheckInternalServerErrorBody) HasMessage() bool` + +HasMessage returns a boolean if a field has been set. + +### GetReason + +`func (o *PostCheckInternalServerErrorBody) GetReason() string` + +GetReason returns the Reason field if non-nil, zero value otherwise. + +### GetReasonOk + +`func (o *PostCheckInternalServerErrorBody) GetReasonOk() (*string, bool)` + +GetReasonOk returns a tuple with the Reason field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetReason + +`func (o *PostCheckInternalServerErrorBody) SetReason(v string)` + +SetReason sets Reason field to given value. + +### HasReason + +`func (o *PostCheckInternalServerErrorBody) HasReason() bool` + +HasReason returns a boolean if a field has been set. + +### GetRequest + +`func (o *PostCheckInternalServerErrorBody) GetRequest() string` + +GetRequest returns the Request field if non-nil, zero value otherwise. + +### GetRequestOk + +`func (o *PostCheckInternalServerErrorBody) GetRequestOk() (*string, bool)` + +GetRequestOk returns a tuple with the Request field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetRequest + +`func (o *PostCheckInternalServerErrorBody) SetRequest(v string)` + +SetRequest sets Request field to given value. + +### HasRequest + +`func (o *PostCheckInternalServerErrorBody) HasRequest() bool` + +HasRequest returns a boolean if a field has been set. + +### GetStatus + +`func (o *PostCheckInternalServerErrorBody) GetStatus() string` + +GetStatus returns the Status field if non-nil, zero value otherwise. + +### GetStatusOk + +`func (o *PostCheckInternalServerErrorBody) GetStatusOk() (*string, bool)` + +GetStatusOk returns a tuple with the Status field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetStatus + +`func (o *PostCheckInternalServerErrorBody) SetStatus(v string)` + +SetStatus sets Status field to given value. + +### HasStatus + +`func (o *PostCheckInternalServerErrorBody) HasStatus() bool` + +HasStatus returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/internal/httpclient-next/docs/ReadApi.md b/internal/httpclient-next/docs/ReadApi.md new file mode 100644 index 000000000..765a26f0d --- /dev/null +++ b/internal/httpclient-next/docs/ReadApi.md @@ -0,0 +1,314 @@ +# \ReadApi + +All URIs are relative to *http://localhost* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**GetCheck**](ReadApi.md#GetCheck) | **Get** /check | Check a relation tuple +[**GetExpand**](ReadApi.md#GetExpand) | **Get** /expand | Expand a Relation Tuple +[**GetRelationTuples**](ReadApi.md#GetRelationTuples) | **Get** /relation-tuples | Query relation tuples +[**PostCheck**](ReadApi.md#PostCheck) | **Post** /check | Check a relation tuple + + + +## GetCheck + +> GetCheckResponse GetCheck(ctx).Namespace(namespace).Object(object).Relation(relation).SubjectId(subjectId).SubjectSetNamespace(subjectSetNamespace).SubjectSetObject(subjectSetObject).SubjectSetRelation(subjectSetRelation).MaxDepth(maxDepth).Execute() + +Check a relation tuple + + + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "./openapi" +) + +func main() { + namespace := "namespace_example" // string | Namespace of the Relation Tuple (optional) + object := "object_example" // string | Object of the Relation Tuple (optional) + relation := "relation_example" // string | Relation of the Relation Tuple (optional) + subjectId := "subjectId_example" // string | SubjectID of the Relation Tuple (optional) + subjectSetNamespace := "subjectSetNamespace_example" // string | Namespace of the Subject Set (optional) + subjectSetObject := "subjectSetObject_example" // string | Object of the Subject Set (optional) + subjectSetRelation := "subjectSetRelation_example" // string | Relation of the Subject Set (optional) + maxDepth := int64(789) // int64 | (optional) + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + resp, r, err := apiClient.ReadApi.GetCheck(context.Background()).Namespace(namespace).Object(object).Relation(relation).SubjectId(subjectId).SubjectSetNamespace(subjectSetNamespace).SubjectSetObject(subjectSetObject).SubjectSetRelation(subjectSetRelation).MaxDepth(maxDepth).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `ReadApi.GetCheck``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } + // response from `GetCheck`: GetCheckResponse + fmt.Fprintf(os.Stdout, "Response from `ReadApi.GetCheck`: %v\n", resp) +} +``` + +### Path Parameters + + + +### Other Parameters + +Other parameters are passed through a pointer to a apiGetCheckRequest struct via the builder pattern + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **namespace** | **string** | Namespace of the Relation Tuple | + **object** | **string** | Object of the Relation Tuple | + **relation** | **string** | Relation of the Relation Tuple | + **subjectId** | **string** | SubjectID of the Relation Tuple | + **subjectSetNamespace** | **string** | Namespace of the Subject Set | + **subjectSetObject** | **string** | Object of the Subject Set | + **subjectSetRelation** | **string** | Relation of the Subject Set | + **maxDepth** | **int64** | | + +### Return type + +[**GetCheckResponse**](GetCheckResponse.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + + +## GetExpand + +> ExpandTree GetExpand(ctx).Namespace(namespace).Object(object).Relation(relation).MaxDepth(maxDepth).Execute() + +Expand a Relation Tuple + + + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "./openapi" +) + +func main() { + namespace := "namespace_example" // string | Namespace of the Subject Set + object := "object_example" // string | Object of the Subject Set + relation := "relation_example" // string | Relation of the Subject Set + maxDepth := int64(789) // int64 | (optional) + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + resp, r, err := apiClient.ReadApi.GetExpand(context.Background()).Namespace(namespace).Object(object).Relation(relation).MaxDepth(maxDepth).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `ReadApi.GetExpand``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } + // response from `GetExpand`: ExpandTree + fmt.Fprintf(os.Stdout, "Response from `ReadApi.GetExpand`: %v\n", resp) +} +``` + +### Path Parameters + + + +### Other Parameters + +Other parameters are passed through a pointer to a apiGetExpandRequest struct via the builder pattern + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **namespace** | **string** | Namespace of the Subject Set | + **object** | **string** | Object of the Subject Set | + **relation** | **string** | Relation of the Subject Set | + **maxDepth** | **int64** | | + +### Return type + +[**ExpandTree**](ExpandTree.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + + +## GetRelationTuples + +> GetRelationTuplesResponse GetRelationTuples(ctx).PageToken(pageToken).PageSize(pageSize).Namespace(namespace).Object(object).Relation(relation).SubjectId(subjectId).SubjectSetNamespace(subjectSetNamespace).SubjectSetObject(subjectSetObject).SubjectSetRelation(subjectSetRelation).Execute() + +Query relation tuples + + + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "./openapi" +) + +func main() { + pageToken := "pageToken_example" // string | (optional) + pageSize := int64(789) // int64 | (optional) + namespace := "namespace_example" // string | Namespace of the Relation Tuple (optional) + object := "object_example" // string | Object of the Relation Tuple (optional) + relation := "relation_example" // string | Relation of the Relation Tuple (optional) + subjectId := "subjectId_example" // string | SubjectID of the Relation Tuple (optional) + subjectSetNamespace := "subjectSetNamespace_example" // string | Namespace of the Subject Set (optional) + subjectSetObject := "subjectSetObject_example" // string | Object of the Subject Set (optional) + subjectSetRelation := "subjectSetRelation_example" // string | Relation of the Subject Set (optional) + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + resp, r, err := apiClient.ReadApi.GetRelationTuples(context.Background()).PageToken(pageToken).PageSize(pageSize).Namespace(namespace).Object(object).Relation(relation).SubjectId(subjectId).SubjectSetNamespace(subjectSetNamespace).SubjectSetObject(subjectSetObject).SubjectSetRelation(subjectSetRelation).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `ReadApi.GetRelationTuples``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } + // response from `GetRelationTuples`: GetRelationTuplesResponse + fmt.Fprintf(os.Stdout, "Response from `ReadApi.GetRelationTuples`: %v\n", resp) +} +``` + +### Path Parameters + + + +### Other Parameters + +Other parameters are passed through a pointer to a apiGetRelationTuplesRequest struct via the builder pattern + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **pageToken** | **string** | | + **pageSize** | **int64** | | + **namespace** | **string** | Namespace of the Relation Tuple | + **object** | **string** | Object of the Relation Tuple | + **relation** | **string** | Relation of the Relation Tuple | + **subjectId** | **string** | SubjectID of the Relation Tuple | + **subjectSetNamespace** | **string** | Namespace of the Subject Set | + **subjectSetObject** | **string** | Object of the Subject Set | + **subjectSetRelation** | **string** | Relation of the Subject Set | + +### Return type + +[**GetRelationTuplesResponse**](GetRelationTuplesResponse.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + + +## PostCheck + +> GetCheckResponse PostCheck(ctx).MaxDepth(maxDepth).RelationQuery(relationQuery).Execute() + +Check a relation tuple + + + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "./openapi" +) + +func main() { + maxDepth := int64(789) // int64 | (optional) + relationQuery := *openapiclient.NewRelationQuery() // RelationQuery | (optional) + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + resp, r, err := apiClient.ReadApi.PostCheck(context.Background()).MaxDepth(maxDepth).RelationQuery(relationQuery).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `ReadApi.PostCheck``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } + // response from `PostCheck`: GetCheckResponse + fmt.Fprintf(os.Stdout, "Response from `ReadApi.PostCheck`: %v\n", resp) +} +``` + +### Path Parameters + + + +### Other Parameters + +Other parameters are passed through a pointer to a apiPostCheckRequest struct via the builder pattern + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **maxDepth** | **int64** | | + **relationQuery** | [**RelationQuery**](RelationQuery.md) | | + +### Return type + +[**GetCheckResponse**](GetCheckResponse.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + diff --git a/internal/httpclient-next/docs/RelationQuery.md b/internal/httpclient-next/docs/RelationQuery.md new file mode 100644 index 000000000..c76234e2a --- /dev/null +++ b/internal/httpclient-next/docs/RelationQuery.md @@ -0,0 +1,160 @@ +# RelationQuery + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Namespace** | Pointer to **string** | Namespace of the Relation Tuple | [optional] +**Object** | Pointer to **string** | Object of the Relation Tuple | [optional] +**Relation** | Pointer to **string** | Relation of the Relation Tuple | [optional] +**SubjectId** | Pointer to **string** | SubjectID of the Relation Tuple Either SubjectSet or SubjectID can be provided. | [optional] +**SubjectSet** | Pointer to [**SubjectSet**](SubjectSet.md) | | [optional] + +## Methods + +### NewRelationQuery + +`func NewRelationQuery() *RelationQuery` + +NewRelationQuery instantiates a new RelationQuery object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewRelationQueryWithDefaults + +`func NewRelationQueryWithDefaults() *RelationQuery` + +NewRelationQueryWithDefaults instantiates a new RelationQuery object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetNamespace + +`func (o *RelationQuery) GetNamespace() string` + +GetNamespace returns the Namespace field if non-nil, zero value otherwise. + +### GetNamespaceOk + +`func (o *RelationQuery) GetNamespaceOk() (*string, bool)` + +GetNamespaceOk returns a tuple with the Namespace field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetNamespace + +`func (o *RelationQuery) SetNamespace(v string)` + +SetNamespace sets Namespace field to given value. + +### HasNamespace + +`func (o *RelationQuery) HasNamespace() bool` + +HasNamespace returns a boolean if a field has been set. + +### GetObject + +`func (o *RelationQuery) GetObject() string` + +GetObject returns the Object field if non-nil, zero value otherwise. + +### GetObjectOk + +`func (o *RelationQuery) GetObjectOk() (*string, bool)` + +GetObjectOk returns a tuple with the Object field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetObject + +`func (o *RelationQuery) SetObject(v string)` + +SetObject sets Object field to given value. + +### HasObject + +`func (o *RelationQuery) HasObject() bool` + +HasObject returns a boolean if a field has been set. + +### GetRelation + +`func (o *RelationQuery) GetRelation() string` + +GetRelation returns the Relation field if non-nil, zero value otherwise. + +### GetRelationOk + +`func (o *RelationQuery) GetRelationOk() (*string, bool)` + +GetRelationOk returns a tuple with the Relation field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetRelation + +`func (o *RelationQuery) SetRelation(v string)` + +SetRelation sets Relation field to given value. + +### HasRelation + +`func (o *RelationQuery) HasRelation() bool` + +HasRelation returns a boolean if a field has been set. + +### GetSubjectId + +`func (o *RelationQuery) GetSubjectId() string` + +GetSubjectId returns the SubjectId field if non-nil, zero value otherwise. + +### GetSubjectIdOk + +`func (o *RelationQuery) GetSubjectIdOk() (*string, bool)` + +GetSubjectIdOk returns a tuple with the SubjectId field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetSubjectId + +`func (o *RelationQuery) SetSubjectId(v string)` + +SetSubjectId sets SubjectId field to given value. + +### HasSubjectId + +`func (o *RelationQuery) HasSubjectId() bool` + +HasSubjectId returns a boolean if a field has been set. + +### GetSubjectSet + +`func (o *RelationQuery) GetSubjectSet() SubjectSet` + +GetSubjectSet returns the SubjectSet field if non-nil, zero value otherwise. + +### GetSubjectSetOk + +`func (o *RelationQuery) GetSubjectSetOk() (*SubjectSet, bool)` + +GetSubjectSetOk returns a tuple with the SubjectSet field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetSubjectSet + +`func (o *RelationQuery) SetSubjectSet(v SubjectSet)` + +SetSubjectSet sets SubjectSet field to given value. + +### HasSubjectSet + +`func (o *RelationQuery) HasSubjectSet() bool` + +HasSubjectSet returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/internal/httpclient-next/docs/SubjectSet.md b/internal/httpclient-next/docs/SubjectSet.md new file mode 100644 index 000000000..194228eda --- /dev/null +++ b/internal/httpclient-next/docs/SubjectSet.md @@ -0,0 +1,93 @@ +# SubjectSet + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Namespace** | **string** | Namespace of the Subject Set | +**Object** | **string** | Object of the Subject Set | +**Relation** | **string** | Relation of the Subject Set | + +## Methods + +### NewSubjectSet + +`func NewSubjectSet(namespace string, object string, relation string, ) *SubjectSet` + +NewSubjectSet instantiates a new SubjectSet object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewSubjectSetWithDefaults + +`func NewSubjectSetWithDefaults() *SubjectSet` + +NewSubjectSetWithDefaults instantiates a new SubjectSet object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetNamespace + +`func (o *SubjectSet) GetNamespace() string` + +GetNamespace returns the Namespace field if non-nil, zero value otherwise. + +### GetNamespaceOk + +`func (o *SubjectSet) GetNamespaceOk() (*string, bool)` + +GetNamespaceOk returns a tuple with the Namespace field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetNamespace + +`func (o *SubjectSet) SetNamespace(v string)` + +SetNamespace sets Namespace field to given value. + + +### GetObject + +`func (o *SubjectSet) GetObject() string` + +GetObject returns the Object field if non-nil, zero value otherwise. + +### GetObjectOk + +`func (o *SubjectSet) GetObjectOk() (*string, bool)` + +GetObjectOk returns a tuple with the Object field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetObject + +`func (o *SubjectSet) SetObject(v string)` + +SetObject sets Object field to given value. + + +### GetRelation + +`func (o *SubjectSet) GetRelation() string` + +GetRelation returns the Relation field if non-nil, zero value otherwise. + +### GetRelationOk + +`func (o *SubjectSet) GetRelationOk() (*string, bool)` + +GetRelationOk returns a tuple with the Relation field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetRelation + +`func (o *SubjectSet) SetRelation(v string)` + +SetRelation sets Relation field to given value. + + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/internal/httpclient-next/docs/Version.md b/internal/httpclient-next/docs/Version.md new file mode 100644 index 000000000..c186956b8 --- /dev/null +++ b/internal/httpclient-next/docs/Version.md @@ -0,0 +1,56 @@ +# Version + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Version** | Pointer to **string** | Version is the service's version. | [optional] + +## Methods + +### NewVersion + +`func NewVersion() *Version` + +NewVersion instantiates a new Version object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewVersionWithDefaults + +`func NewVersionWithDefaults() *Version` + +NewVersionWithDefaults instantiates a new Version object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetVersion + +`func (o *Version) GetVersion() string` + +GetVersion returns the Version field if non-nil, zero value otherwise. + +### GetVersionOk + +`func (o *Version) GetVersionOk() (*string, bool)` + +GetVersionOk returns a tuple with the Version field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetVersion + +`func (o *Version) SetVersion(v string)` + +SetVersion sets Version field to given value. + +### HasVersion + +`func (o *Version) HasVersion() bool` + +HasVersion returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/internal/httpclient-next/docs/WriteApi.md b/internal/httpclient-next/docs/WriteApi.md new file mode 100644 index 000000000..226a94346 --- /dev/null +++ b/internal/httpclient-next/docs/WriteApi.md @@ -0,0 +1,217 @@ +# \WriteApi + +All URIs are relative to *http://localhost* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**CreateRelationTuple**](WriteApi.md#CreateRelationTuple) | **Put** /relation-tuples | Create a Relation Tuple +[**DeleteRelationTuples**](WriteApi.md#DeleteRelationTuples) | **Delete** /relation-tuples | Delete Relation Tuples +[**PatchRelationTuples**](WriteApi.md#PatchRelationTuples) | **Patch** /relation-tuples | Patch Multiple Relation Tuples + + + +## CreateRelationTuple + +> RelationQuery CreateRelationTuple(ctx).RelationQuery(relationQuery).Execute() + +Create a Relation Tuple + + + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "./openapi" +) + +func main() { + relationQuery := *openapiclient.NewRelationQuery() // RelationQuery | (optional) + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + resp, r, err := apiClient.WriteApi.CreateRelationTuple(context.Background()).RelationQuery(relationQuery).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `WriteApi.CreateRelationTuple``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } + // response from `CreateRelationTuple`: RelationQuery + fmt.Fprintf(os.Stdout, "Response from `WriteApi.CreateRelationTuple`: %v\n", resp) +} +``` + +### Path Parameters + + + +### Other Parameters + +Other parameters are passed through a pointer to a apiCreateRelationTupleRequest struct via the builder pattern + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **relationQuery** | [**RelationQuery**](RelationQuery.md) | | + +### Return type + +[**RelationQuery**](RelationQuery.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + + +## DeleteRelationTuples + +> DeleteRelationTuples(ctx).Namespace(namespace).Object(object).Relation(relation).SubjectId(subjectId).SubjectSetNamespace(subjectSetNamespace).SubjectSetObject(subjectSetObject).SubjectSetRelation(subjectSetRelation).Execute() + +Delete Relation Tuples + + + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "./openapi" +) + +func main() { + namespace := "namespace_example" // string | Namespace of the Relation Tuple (optional) + object := "object_example" // string | Object of the Relation Tuple (optional) + relation := "relation_example" // string | Relation of the Relation Tuple (optional) + subjectId := "subjectId_example" // string | SubjectID of the Relation Tuple (optional) + subjectSetNamespace := "subjectSetNamespace_example" // string | Namespace of the Subject Set (optional) + subjectSetObject := "subjectSetObject_example" // string | Object of the Subject Set (optional) + subjectSetRelation := "subjectSetRelation_example" // string | Relation of the Subject Set (optional) + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + resp, r, err := apiClient.WriteApi.DeleteRelationTuples(context.Background()).Namespace(namespace).Object(object).Relation(relation).SubjectId(subjectId).SubjectSetNamespace(subjectSetNamespace).SubjectSetObject(subjectSetObject).SubjectSetRelation(subjectSetRelation).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `WriteApi.DeleteRelationTuples``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } +} +``` + +### Path Parameters + + + +### Other Parameters + +Other parameters are passed through a pointer to a apiDeleteRelationTuplesRequest struct via the builder pattern + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **namespace** | **string** | Namespace of the Relation Tuple | + **object** | **string** | Object of the Relation Tuple | + **relation** | **string** | Relation of the Relation Tuple | + **subjectId** | **string** | SubjectID of the Relation Tuple | + **subjectSetNamespace** | **string** | Namespace of the Subject Set | + **subjectSetObject** | **string** | Object of the Subject Set | + **subjectSetRelation** | **string** | Relation of the Subject Set | + +### Return type + + (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + + +## PatchRelationTuples + +> PatchRelationTuples(ctx).PatchDelta(patchDelta).Execute() + +Patch Multiple Relation Tuples + + + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "./openapi" +) + +func main() { + patchDelta := []openapiclient.PatchDelta{*openapiclient.NewPatchDelta()} // []PatchDelta | (optional) + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + resp, r, err := apiClient.WriteApi.PatchRelationTuples(context.Background()).PatchDelta(patchDelta).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `WriteApi.PatchRelationTuples``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } +} +``` + +### Path Parameters + + + +### Other Parameters + +Other parameters are passed through a pointer to a apiPatchRelationTuplesRequest struct via the builder pattern + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **patchDelta** | [**[]PatchDelta**](PatchDelta.md) | | + +### Return type + + (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + diff --git a/internal/httpclient-next/git_push.sh b/internal/httpclient-next/git_push.sh new file mode 100644 index 000000000..18f76bfd9 --- /dev/null +++ b/internal/httpclient-next/git_push.sh @@ -0,0 +1,58 @@ +#!/bin/sh +# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/ +# +# Usage example: /bin/sh ./git_push.sh wing328 openapi-pestore-perl "minor update" "gitlab.com" + +git_user_id=$1 +git_repo_id=$2 +release_note=$3 +git_host=$4 + +if [ "$git_host" = "" ]; then + git_host="github.com" + echo "[INFO] No command line input provided. Set \$git_host to $git_host" +fi + +if [ "$git_user_id" = "" ]; then + git_user_id="ory" + echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id" +fi + +if [ "$git_repo_id" = "" ]; then + git_repo_id="keto-client-go" + echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id" +fi + +if [ "$release_note" = "" ]; then + release_note="Minor update" + echo "[INFO] No command line input provided. Set \$release_note to $release_note" +fi + +# Initialize the local directory as a Git repository +git init + +# Adds the files in the local repository and stages them for commit. +git add . + +# Commits the tracked changes and prepares them to be pushed to a remote repository. +git commit -m "$release_note" + +# Sets the new remote +git_remote=`git remote` +if [ "$git_remote" = "" ]; then # git remote not defined + + if [ "$GIT_TOKEN" = "" ]; then + echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment." + git remote add origin https://${git_host}/${git_user_id}/${git_repo_id}.git + else + git remote add origin https://${git_user_id}:${GIT_TOKEN}@${git_host}/${git_user_id}/${git_repo_id}.git + fi + +fi + +git pull origin master + +# Pushes (Forces) the changes in the local repository up to the remote repository +echo "Git pushing to https://${git_host}/${git_user_id}/${git_repo_id}.git" +git push origin master 2>&1 | grep -v 'To https' + diff --git a/internal/httpclient-next/go.mod b/internal/httpclient-next/go.mod new file mode 100644 index 000000000..518da9f48 --- /dev/null +++ b/internal/httpclient-next/go.mod @@ -0,0 +1,7 @@ +module github.com/ory/keto-client-go + +go 1.13 + +require ( + golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 +) diff --git a/internal/httpclient-next/go.sum b/internal/httpclient-next/go.sum new file mode 100644 index 000000000..734252e68 --- /dev/null +++ b/internal/httpclient-next/go.sum @@ -0,0 +1,13 @@ +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e h1:bRhVy7zSSasaqNksaRZiA5EEI+Ei4I1nO5Jh72wfHlg= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4 h1:YUO/7uOKsKeq9UokNS62b8FYywz3ker1l1vDZRCRefw= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= diff --git a/internal/httpclient-next/model_create_relation_tuple_bad_request_body.go b/internal/httpclient-next/model_create_relation_tuple_bad_request_body.go new file mode 100644 index 000000000..b36d08d5d --- /dev/null +++ b/internal/httpclient-next/model_create_relation_tuple_bad_request_body.go @@ -0,0 +1,300 @@ +/* + * Ory Oathkeeper API + * + * Documentation for all of Ory Oathkeeper's APIs. + * + * API version: 1.0.0 + * Contact: hi@ory.sh + */ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package client + +import ( + "encoding/json" +) + +// CreateRelationTupleBadRequestBody CreateRelationTupleBadRequestBody CreateRelationTupleBadRequestBody create relation tuple bad request body +type CreateRelationTupleBadRequestBody struct { + // code + Code *int64 `json:"code,omitempty"` + // details + Details []map[string]interface{} `json:"details,omitempty"` + // message + Message *string `json:"message,omitempty"` + // reason + Reason *string `json:"reason,omitempty"` + // request + Request *string `json:"request,omitempty"` + // status + Status *string `json:"status,omitempty"` +} + +// NewCreateRelationTupleBadRequestBody instantiates a new CreateRelationTupleBadRequestBody object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewCreateRelationTupleBadRequestBody() *CreateRelationTupleBadRequestBody { + this := CreateRelationTupleBadRequestBody{} + return &this +} + +// NewCreateRelationTupleBadRequestBodyWithDefaults instantiates a new CreateRelationTupleBadRequestBody object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewCreateRelationTupleBadRequestBodyWithDefaults() *CreateRelationTupleBadRequestBody { + this := CreateRelationTupleBadRequestBody{} + return &this +} + +// GetCode returns the Code field value if set, zero value otherwise. +func (o *CreateRelationTupleBadRequestBody) GetCode() int64 { + if o == nil || o.Code == nil { + var ret int64 + return ret + } + return *o.Code +} + +// GetCodeOk returns a tuple with the Code field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *CreateRelationTupleBadRequestBody) GetCodeOk() (*int64, bool) { + if o == nil || o.Code == nil { + return nil, false + } + return o.Code, true +} + +// HasCode returns a boolean if a field has been set. +func (o *CreateRelationTupleBadRequestBody) HasCode() bool { + if o != nil && o.Code != nil { + return true + } + + return false +} + +// SetCode gets a reference to the given int64 and assigns it to the Code field. +func (o *CreateRelationTupleBadRequestBody) SetCode(v int64) { + o.Code = &v +} + +// GetDetails returns the Details field value if set, zero value otherwise. +func (o *CreateRelationTupleBadRequestBody) GetDetails() []map[string]interface{} { + if o == nil || o.Details == nil { + var ret []map[string]interface{} + return ret + } + return o.Details +} + +// GetDetailsOk returns a tuple with the Details field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *CreateRelationTupleBadRequestBody) GetDetailsOk() ([]map[string]interface{}, bool) { + if o == nil || o.Details == nil { + return nil, false + } + return o.Details, true +} + +// HasDetails returns a boolean if a field has been set. +func (o *CreateRelationTupleBadRequestBody) HasDetails() bool { + if o != nil && o.Details != nil { + return true + } + + return false +} + +// SetDetails gets a reference to the given []map[string]interface{} and assigns it to the Details field. +func (o *CreateRelationTupleBadRequestBody) SetDetails(v []map[string]interface{}) { + o.Details = v +} + +// GetMessage returns the Message field value if set, zero value otherwise. +func (o *CreateRelationTupleBadRequestBody) GetMessage() string { + if o == nil || o.Message == nil { + var ret string + return ret + } + return *o.Message +} + +// GetMessageOk returns a tuple with the Message field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *CreateRelationTupleBadRequestBody) GetMessageOk() (*string, bool) { + if o == nil || o.Message == nil { + return nil, false + } + return o.Message, true +} + +// HasMessage returns a boolean if a field has been set. +func (o *CreateRelationTupleBadRequestBody) HasMessage() bool { + if o != nil && o.Message != nil { + return true + } + + return false +} + +// SetMessage gets a reference to the given string and assigns it to the Message field. +func (o *CreateRelationTupleBadRequestBody) SetMessage(v string) { + o.Message = &v +} + +// GetReason returns the Reason field value if set, zero value otherwise. +func (o *CreateRelationTupleBadRequestBody) GetReason() string { + if o == nil || o.Reason == nil { + var ret string + return ret + } + return *o.Reason +} + +// GetReasonOk returns a tuple with the Reason field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *CreateRelationTupleBadRequestBody) GetReasonOk() (*string, bool) { + if o == nil || o.Reason == nil { + return nil, false + } + return o.Reason, true +} + +// HasReason returns a boolean if a field has been set. +func (o *CreateRelationTupleBadRequestBody) HasReason() bool { + if o != nil && o.Reason != nil { + return true + } + + return false +} + +// SetReason gets a reference to the given string and assigns it to the Reason field. +func (o *CreateRelationTupleBadRequestBody) SetReason(v string) { + o.Reason = &v +} + +// GetRequest returns the Request field value if set, zero value otherwise. +func (o *CreateRelationTupleBadRequestBody) GetRequest() string { + if o == nil || o.Request == nil { + var ret string + return ret + } + return *o.Request +} + +// GetRequestOk returns a tuple with the Request field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *CreateRelationTupleBadRequestBody) GetRequestOk() (*string, bool) { + if o == nil || o.Request == nil { + return nil, false + } + return o.Request, true +} + +// HasRequest returns a boolean if a field has been set. +func (o *CreateRelationTupleBadRequestBody) HasRequest() bool { + if o != nil && o.Request != nil { + return true + } + + return false +} + +// SetRequest gets a reference to the given string and assigns it to the Request field. +func (o *CreateRelationTupleBadRequestBody) SetRequest(v string) { + o.Request = &v +} + +// GetStatus returns the Status field value if set, zero value otherwise. +func (o *CreateRelationTupleBadRequestBody) GetStatus() string { + if o == nil || o.Status == nil { + var ret string + return ret + } + return *o.Status +} + +// GetStatusOk returns a tuple with the Status field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *CreateRelationTupleBadRequestBody) GetStatusOk() (*string, bool) { + if o == nil || o.Status == nil { + return nil, false + } + return o.Status, true +} + +// HasStatus returns a boolean if a field has been set. +func (o *CreateRelationTupleBadRequestBody) HasStatus() bool { + if o != nil && o.Status != nil { + return true + } + + return false +} + +// SetStatus gets a reference to the given string and assigns it to the Status field. +func (o *CreateRelationTupleBadRequestBody) SetStatus(v string) { + o.Status = &v +} + +func (o CreateRelationTupleBadRequestBody) MarshalJSON() ([]byte, error) { + toSerialize := map[string]interface{}{} + if o.Code != nil { + toSerialize["code"] = o.Code + } + if o.Details != nil { + toSerialize["details"] = o.Details + } + if o.Message != nil { + toSerialize["message"] = o.Message + } + if o.Reason != nil { + toSerialize["reason"] = o.Reason + } + if o.Request != nil { + toSerialize["request"] = o.Request + } + if o.Status != nil { + toSerialize["status"] = o.Status + } + return json.Marshal(toSerialize) +} + +type NullableCreateRelationTupleBadRequestBody struct { + value *CreateRelationTupleBadRequestBody + isSet bool +} + +func (v NullableCreateRelationTupleBadRequestBody) Get() *CreateRelationTupleBadRequestBody { + return v.value +} + +func (v *NullableCreateRelationTupleBadRequestBody) Set(val *CreateRelationTupleBadRequestBody) { + v.value = val + v.isSet = true +} + +func (v NullableCreateRelationTupleBadRequestBody) IsSet() bool { + return v.isSet +} + +func (v *NullableCreateRelationTupleBadRequestBody) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableCreateRelationTupleBadRequestBody(val *CreateRelationTupleBadRequestBody) *NullableCreateRelationTupleBadRequestBody { + return &NullableCreateRelationTupleBadRequestBody{value: val, isSet: true} +} + +func (v NullableCreateRelationTupleBadRequestBody) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableCreateRelationTupleBadRequestBody) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/internal/httpclient-next/model_create_relation_tuple_internal_server_error_body.go b/internal/httpclient-next/model_create_relation_tuple_internal_server_error_body.go new file mode 100644 index 000000000..333c5ea1f --- /dev/null +++ b/internal/httpclient-next/model_create_relation_tuple_internal_server_error_body.go @@ -0,0 +1,300 @@ +/* + * Ory Oathkeeper API + * + * Documentation for all of Ory Oathkeeper's APIs. + * + * API version: 1.0.0 + * Contact: hi@ory.sh + */ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package client + +import ( + "encoding/json" +) + +// CreateRelationTupleInternalServerErrorBody CreateRelationTupleInternalServerErrorBody CreateRelationTupleInternalServerErrorBody create relation tuple internal server error body +type CreateRelationTupleInternalServerErrorBody struct { + // code + Code *int64 `json:"code,omitempty"` + // details + Details []map[string]interface{} `json:"details,omitempty"` + // message + Message *string `json:"message,omitempty"` + // reason + Reason *string `json:"reason,omitempty"` + // request + Request *string `json:"request,omitempty"` + // status + Status *string `json:"status,omitempty"` +} + +// NewCreateRelationTupleInternalServerErrorBody instantiates a new CreateRelationTupleInternalServerErrorBody object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewCreateRelationTupleInternalServerErrorBody() *CreateRelationTupleInternalServerErrorBody { + this := CreateRelationTupleInternalServerErrorBody{} + return &this +} + +// NewCreateRelationTupleInternalServerErrorBodyWithDefaults instantiates a new CreateRelationTupleInternalServerErrorBody object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewCreateRelationTupleInternalServerErrorBodyWithDefaults() *CreateRelationTupleInternalServerErrorBody { + this := CreateRelationTupleInternalServerErrorBody{} + return &this +} + +// GetCode returns the Code field value if set, zero value otherwise. +func (o *CreateRelationTupleInternalServerErrorBody) GetCode() int64 { + if o == nil || o.Code == nil { + var ret int64 + return ret + } + return *o.Code +} + +// GetCodeOk returns a tuple with the Code field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *CreateRelationTupleInternalServerErrorBody) GetCodeOk() (*int64, bool) { + if o == nil || o.Code == nil { + return nil, false + } + return o.Code, true +} + +// HasCode returns a boolean if a field has been set. +func (o *CreateRelationTupleInternalServerErrorBody) HasCode() bool { + if o != nil && o.Code != nil { + return true + } + + return false +} + +// SetCode gets a reference to the given int64 and assigns it to the Code field. +func (o *CreateRelationTupleInternalServerErrorBody) SetCode(v int64) { + o.Code = &v +} + +// GetDetails returns the Details field value if set, zero value otherwise. +func (o *CreateRelationTupleInternalServerErrorBody) GetDetails() []map[string]interface{} { + if o == nil || o.Details == nil { + var ret []map[string]interface{} + return ret + } + return o.Details +} + +// GetDetailsOk returns a tuple with the Details field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *CreateRelationTupleInternalServerErrorBody) GetDetailsOk() ([]map[string]interface{}, bool) { + if o == nil || o.Details == nil { + return nil, false + } + return o.Details, true +} + +// HasDetails returns a boolean if a field has been set. +func (o *CreateRelationTupleInternalServerErrorBody) HasDetails() bool { + if o != nil && o.Details != nil { + return true + } + + return false +} + +// SetDetails gets a reference to the given []map[string]interface{} and assigns it to the Details field. +func (o *CreateRelationTupleInternalServerErrorBody) SetDetails(v []map[string]interface{}) { + o.Details = v +} + +// GetMessage returns the Message field value if set, zero value otherwise. +func (o *CreateRelationTupleInternalServerErrorBody) GetMessage() string { + if o == nil || o.Message == nil { + var ret string + return ret + } + return *o.Message +} + +// GetMessageOk returns a tuple with the Message field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *CreateRelationTupleInternalServerErrorBody) GetMessageOk() (*string, bool) { + if o == nil || o.Message == nil { + return nil, false + } + return o.Message, true +} + +// HasMessage returns a boolean if a field has been set. +func (o *CreateRelationTupleInternalServerErrorBody) HasMessage() bool { + if o != nil && o.Message != nil { + return true + } + + return false +} + +// SetMessage gets a reference to the given string and assigns it to the Message field. +func (o *CreateRelationTupleInternalServerErrorBody) SetMessage(v string) { + o.Message = &v +} + +// GetReason returns the Reason field value if set, zero value otherwise. +func (o *CreateRelationTupleInternalServerErrorBody) GetReason() string { + if o == nil || o.Reason == nil { + var ret string + return ret + } + return *o.Reason +} + +// GetReasonOk returns a tuple with the Reason field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *CreateRelationTupleInternalServerErrorBody) GetReasonOk() (*string, bool) { + if o == nil || o.Reason == nil { + return nil, false + } + return o.Reason, true +} + +// HasReason returns a boolean if a field has been set. +func (o *CreateRelationTupleInternalServerErrorBody) HasReason() bool { + if o != nil && o.Reason != nil { + return true + } + + return false +} + +// SetReason gets a reference to the given string and assigns it to the Reason field. +func (o *CreateRelationTupleInternalServerErrorBody) SetReason(v string) { + o.Reason = &v +} + +// GetRequest returns the Request field value if set, zero value otherwise. +func (o *CreateRelationTupleInternalServerErrorBody) GetRequest() string { + if o == nil || o.Request == nil { + var ret string + return ret + } + return *o.Request +} + +// GetRequestOk returns a tuple with the Request field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *CreateRelationTupleInternalServerErrorBody) GetRequestOk() (*string, bool) { + if o == nil || o.Request == nil { + return nil, false + } + return o.Request, true +} + +// HasRequest returns a boolean if a field has been set. +func (o *CreateRelationTupleInternalServerErrorBody) HasRequest() bool { + if o != nil && o.Request != nil { + return true + } + + return false +} + +// SetRequest gets a reference to the given string and assigns it to the Request field. +func (o *CreateRelationTupleInternalServerErrorBody) SetRequest(v string) { + o.Request = &v +} + +// GetStatus returns the Status field value if set, zero value otherwise. +func (o *CreateRelationTupleInternalServerErrorBody) GetStatus() string { + if o == nil || o.Status == nil { + var ret string + return ret + } + return *o.Status +} + +// GetStatusOk returns a tuple with the Status field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *CreateRelationTupleInternalServerErrorBody) GetStatusOk() (*string, bool) { + if o == nil || o.Status == nil { + return nil, false + } + return o.Status, true +} + +// HasStatus returns a boolean if a field has been set. +func (o *CreateRelationTupleInternalServerErrorBody) HasStatus() bool { + if o != nil && o.Status != nil { + return true + } + + return false +} + +// SetStatus gets a reference to the given string and assigns it to the Status field. +func (o *CreateRelationTupleInternalServerErrorBody) SetStatus(v string) { + o.Status = &v +} + +func (o CreateRelationTupleInternalServerErrorBody) MarshalJSON() ([]byte, error) { + toSerialize := map[string]interface{}{} + if o.Code != nil { + toSerialize["code"] = o.Code + } + if o.Details != nil { + toSerialize["details"] = o.Details + } + if o.Message != nil { + toSerialize["message"] = o.Message + } + if o.Reason != nil { + toSerialize["reason"] = o.Reason + } + if o.Request != nil { + toSerialize["request"] = o.Request + } + if o.Status != nil { + toSerialize["status"] = o.Status + } + return json.Marshal(toSerialize) +} + +type NullableCreateRelationTupleInternalServerErrorBody struct { + value *CreateRelationTupleInternalServerErrorBody + isSet bool +} + +func (v NullableCreateRelationTupleInternalServerErrorBody) Get() *CreateRelationTupleInternalServerErrorBody { + return v.value +} + +func (v *NullableCreateRelationTupleInternalServerErrorBody) Set(val *CreateRelationTupleInternalServerErrorBody) { + v.value = val + v.isSet = true +} + +func (v NullableCreateRelationTupleInternalServerErrorBody) IsSet() bool { + return v.isSet +} + +func (v *NullableCreateRelationTupleInternalServerErrorBody) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableCreateRelationTupleInternalServerErrorBody(val *CreateRelationTupleInternalServerErrorBody) *NullableCreateRelationTupleInternalServerErrorBody { + return &NullableCreateRelationTupleInternalServerErrorBody{value: val, isSet: true} +} + +func (v NullableCreateRelationTupleInternalServerErrorBody) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableCreateRelationTupleInternalServerErrorBody) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/internal/httpclient-next/model_delete_relation_tuples_bad_request_body.go b/internal/httpclient-next/model_delete_relation_tuples_bad_request_body.go new file mode 100644 index 000000000..4661643e0 --- /dev/null +++ b/internal/httpclient-next/model_delete_relation_tuples_bad_request_body.go @@ -0,0 +1,300 @@ +/* + * Ory Oathkeeper API + * + * Documentation for all of Ory Oathkeeper's APIs. + * + * API version: 1.0.0 + * Contact: hi@ory.sh + */ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package client + +import ( + "encoding/json" +) + +// DeleteRelationTuplesBadRequestBody DeleteRelationTuplesBadRequestBody DeleteRelationTuplesBadRequestBody DeleteRelationTuplesBadRequestBody DeleteRelationTuplesBadRequestBody DeleteRelationTuplesBadRequestBody delete relation tuples bad request body +type DeleteRelationTuplesBadRequestBody struct { + // code + Code *int64 `json:"code,omitempty"` + // details + Details []map[string]interface{} `json:"details,omitempty"` + // message + Message *string `json:"message,omitempty"` + // reason + Reason *string `json:"reason,omitempty"` + // request + Request *string `json:"request,omitempty"` + // status + Status *string `json:"status,omitempty"` +} + +// NewDeleteRelationTuplesBadRequestBody instantiates a new DeleteRelationTuplesBadRequestBody object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewDeleteRelationTuplesBadRequestBody() *DeleteRelationTuplesBadRequestBody { + this := DeleteRelationTuplesBadRequestBody{} + return &this +} + +// NewDeleteRelationTuplesBadRequestBodyWithDefaults instantiates a new DeleteRelationTuplesBadRequestBody object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewDeleteRelationTuplesBadRequestBodyWithDefaults() *DeleteRelationTuplesBadRequestBody { + this := DeleteRelationTuplesBadRequestBody{} + return &this +} + +// GetCode returns the Code field value if set, zero value otherwise. +func (o *DeleteRelationTuplesBadRequestBody) GetCode() int64 { + if o == nil || o.Code == nil { + var ret int64 + return ret + } + return *o.Code +} + +// GetCodeOk returns a tuple with the Code field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DeleteRelationTuplesBadRequestBody) GetCodeOk() (*int64, bool) { + if o == nil || o.Code == nil { + return nil, false + } + return o.Code, true +} + +// HasCode returns a boolean if a field has been set. +func (o *DeleteRelationTuplesBadRequestBody) HasCode() bool { + if o != nil && o.Code != nil { + return true + } + + return false +} + +// SetCode gets a reference to the given int64 and assigns it to the Code field. +func (o *DeleteRelationTuplesBadRequestBody) SetCode(v int64) { + o.Code = &v +} + +// GetDetails returns the Details field value if set, zero value otherwise. +func (o *DeleteRelationTuplesBadRequestBody) GetDetails() []map[string]interface{} { + if o == nil || o.Details == nil { + var ret []map[string]interface{} + return ret + } + return o.Details +} + +// GetDetailsOk returns a tuple with the Details field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DeleteRelationTuplesBadRequestBody) GetDetailsOk() ([]map[string]interface{}, bool) { + if o == nil || o.Details == nil { + return nil, false + } + return o.Details, true +} + +// HasDetails returns a boolean if a field has been set. +func (o *DeleteRelationTuplesBadRequestBody) HasDetails() bool { + if o != nil && o.Details != nil { + return true + } + + return false +} + +// SetDetails gets a reference to the given []map[string]interface{} and assigns it to the Details field. +func (o *DeleteRelationTuplesBadRequestBody) SetDetails(v []map[string]interface{}) { + o.Details = v +} + +// GetMessage returns the Message field value if set, zero value otherwise. +func (o *DeleteRelationTuplesBadRequestBody) GetMessage() string { + if o == nil || o.Message == nil { + var ret string + return ret + } + return *o.Message +} + +// GetMessageOk returns a tuple with the Message field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DeleteRelationTuplesBadRequestBody) GetMessageOk() (*string, bool) { + if o == nil || o.Message == nil { + return nil, false + } + return o.Message, true +} + +// HasMessage returns a boolean if a field has been set. +func (o *DeleteRelationTuplesBadRequestBody) HasMessage() bool { + if o != nil && o.Message != nil { + return true + } + + return false +} + +// SetMessage gets a reference to the given string and assigns it to the Message field. +func (o *DeleteRelationTuplesBadRequestBody) SetMessage(v string) { + o.Message = &v +} + +// GetReason returns the Reason field value if set, zero value otherwise. +func (o *DeleteRelationTuplesBadRequestBody) GetReason() string { + if o == nil || o.Reason == nil { + var ret string + return ret + } + return *o.Reason +} + +// GetReasonOk returns a tuple with the Reason field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DeleteRelationTuplesBadRequestBody) GetReasonOk() (*string, bool) { + if o == nil || o.Reason == nil { + return nil, false + } + return o.Reason, true +} + +// HasReason returns a boolean if a field has been set. +func (o *DeleteRelationTuplesBadRequestBody) HasReason() bool { + if o != nil && o.Reason != nil { + return true + } + + return false +} + +// SetReason gets a reference to the given string and assigns it to the Reason field. +func (o *DeleteRelationTuplesBadRequestBody) SetReason(v string) { + o.Reason = &v +} + +// GetRequest returns the Request field value if set, zero value otherwise. +func (o *DeleteRelationTuplesBadRequestBody) GetRequest() string { + if o == nil || o.Request == nil { + var ret string + return ret + } + return *o.Request +} + +// GetRequestOk returns a tuple with the Request field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DeleteRelationTuplesBadRequestBody) GetRequestOk() (*string, bool) { + if o == nil || o.Request == nil { + return nil, false + } + return o.Request, true +} + +// HasRequest returns a boolean if a field has been set. +func (o *DeleteRelationTuplesBadRequestBody) HasRequest() bool { + if o != nil && o.Request != nil { + return true + } + + return false +} + +// SetRequest gets a reference to the given string and assigns it to the Request field. +func (o *DeleteRelationTuplesBadRequestBody) SetRequest(v string) { + o.Request = &v +} + +// GetStatus returns the Status field value if set, zero value otherwise. +func (o *DeleteRelationTuplesBadRequestBody) GetStatus() string { + if o == nil || o.Status == nil { + var ret string + return ret + } + return *o.Status +} + +// GetStatusOk returns a tuple with the Status field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DeleteRelationTuplesBadRequestBody) GetStatusOk() (*string, bool) { + if o == nil || o.Status == nil { + return nil, false + } + return o.Status, true +} + +// HasStatus returns a boolean if a field has been set. +func (o *DeleteRelationTuplesBadRequestBody) HasStatus() bool { + if o != nil && o.Status != nil { + return true + } + + return false +} + +// SetStatus gets a reference to the given string and assigns it to the Status field. +func (o *DeleteRelationTuplesBadRequestBody) SetStatus(v string) { + o.Status = &v +} + +func (o DeleteRelationTuplesBadRequestBody) MarshalJSON() ([]byte, error) { + toSerialize := map[string]interface{}{} + if o.Code != nil { + toSerialize["code"] = o.Code + } + if o.Details != nil { + toSerialize["details"] = o.Details + } + if o.Message != nil { + toSerialize["message"] = o.Message + } + if o.Reason != nil { + toSerialize["reason"] = o.Reason + } + if o.Request != nil { + toSerialize["request"] = o.Request + } + if o.Status != nil { + toSerialize["status"] = o.Status + } + return json.Marshal(toSerialize) +} + +type NullableDeleteRelationTuplesBadRequestBody struct { + value *DeleteRelationTuplesBadRequestBody + isSet bool +} + +func (v NullableDeleteRelationTuplesBadRequestBody) Get() *DeleteRelationTuplesBadRequestBody { + return v.value +} + +func (v *NullableDeleteRelationTuplesBadRequestBody) Set(val *DeleteRelationTuplesBadRequestBody) { + v.value = val + v.isSet = true +} + +func (v NullableDeleteRelationTuplesBadRequestBody) IsSet() bool { + return v.isSet +} + +func (v *NullableDeleteRelationTuplesBadRequestBody) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableDeleteRelationTuplesBadRequestBody(val *DeleteRelationTuplesBadRequestBody) *NullableDeleteRelationTuplesBadRequestBody { + return &NullableDeleteRelationTuplesBadRequestBody{value: val, isSet: true} +} + +func (v NullableDeleteRelationTuplesBadRequestBody) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableDeleteRelationTuplesBadRequestBody) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/internal/httpclient-next/model_delete_relation_tuples_internal_server_error_body.go b/internal/httpclient-next/model_delete_relation_tuples_internal_server_error_body.go new file mode 100644 index 000000000..0555ce75a --- /dev/null +++ b/internal/httpclient-next/model_delete_relation_tuples_internal_server_error_body.go @@ -0,0 +1,300 @@ +/* + * Ory Oathkeeper API + * + * Documentation for all of Ory Oathkeeper's APIs. + * + * API version: 1.0.0 + * Contact: hi@ory.sh + */ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package client + +import ( + "encoding/json" +) + +// DeleteRelationTuplesInternalServerErrorBody DeleteRelationTuplesInternalServerErrorBody DeleteRelationTuplesInternalServerErrorBody delete relation tuples internal server error body +type DeleteRelationTuplesInternalServerErrorBody struct { + // code + Code *int64 `json:"code,omitempty"` + // details + Details []map[string]interface{} `json:"details,omitempty"` + // message + Message *string `json:"message,omitempty"` + // reason + Reason *string `json:"reason,omitempty"` + // request + Request *string `json:"request,omitempty"` + // status + Status *string `json:"status,omitempty"` +} + +// NewDeleteRelationTuplesInternalServerErrorBody instantiates a new DeleteRelationTuplesInternalServerErrorBody object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewDeleteRelationTuplesInternalServerErrorBody() *DeleteRelationTuplesInternalServerErrorBody { + this := DeleteRelationTuplesInternalServerErrorBody{} + return &this +} + +// NewDeleteRelationTuplesInternalServerErrorBodyWithDefaults instantiates a new DeleteRelationTuplesInternalServerErrorBody object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewDeleteRelationTuplesInternalServerErrorBodyWithDefaults() *DeleteRelationTuplesInternalServerErrorBody { + this := DeleteRelationTuplesInternalServerErrorBody{} + return &this +} + +// GetCode returns the Code field value if set, zero value otherwise. +func (o *DeleteRelationTuplesInternalServerErrorBody) GetCode() int64 { + if o == nil || o.Code == nil { + var ret int64 + return ret + } + return *o.Code +} + +// GetCodeOk returns a tuple with the Code field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DeleteRelationTuplesInternalServerErrorBody) GetCodeOk() (*int64, bool) { + if o == nil || o.Code == nil { + return nil, false + } + return o.Code, true +} + +// HasCode returns a boolean if a field has been set. +func (o *DeleteRelationTuplesInternalServerErrorBody) HasCode() bool { + if o != nil && o.Code != nil { + return true + } + + return false +} + +// SetCode gets a reference to the given int64 and assigns it to the Code field. +func (o *DeleteRelationTuplesInternalServerErrorBody) SetCode(v int64) { + o.Code = &v +} + +// GetDetails returns the Details field value if set, zero value otherwise. +func (o *DeleteRelationTuplesInternalServerErrorBody) GetDetails() []map[string]interface{} { + if o == nil || o.Details == nil { + var ret []map[string]interface{} + return ret + } + return o.Details +} + +// GetDetailsOk returns a tuple with the Details field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DeleteRelationTuplesInternalServerErrorBody) GetDetailsOk() ([]map[string]interface{}, bool) { + if o == nil || o.Details == nil { + return nil, false + } + return o.Details, true +} + +// HasDetails returns a boolean if a field has been set. +func (o *DeleteRelationTuplesInternalServerErrorBody) HasDetails() bool { + if o != nil && o.Details != nil { + return true + } + + return false +} + +// SetDetails gets a reference to the given []map[string]interface{} and assigns it to the Details field. +func (o *DeleteRelationTuplesInternalServerErrorBody) SetDetails(v []map[string]interface{}) { + o.Details = v +} + +// GetMessage returns the Message field value if set, zero value otherwise. +func (o *DeleteRelationTuplesInternalServerErrorBody) GetMessage() string { + if o == nil || o.Message == nil { + var ret string + return ret + } + return *o.Message +} + +// GetMessageOk returns a tuple with the Message field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DeleteRelationTuplesInternalServerErrorBody) GetMessageOk() (*string, bool) { + if o == nil || o.Message == nil { + return nil, false + } + return o.Message, true +} + +// HasMessage returns a boolean if a field has been set. +func (o *DeleteRelationTuplesInternalServerErrorBody) HasMessage() bool { + if o != nil && o.Message != nil { + return true + } + + return false +} + +// SetMessage gets a reference to the given string and assigns it to the Message field. +func (o *DeleteRelationTuplesInternalServerErrorBody) SetMessage(v string) { + o.Message = &v +} + +// GetReason returns the Reason field value if set, zero value otherwise. +func (o *DeleteRelationTuplesInternalServerErrorBody) GetReason() string { + if o == nil || o.Reason == nil { + var ret string + return ret + } + return *o.Reason +} + +// GetReasonOk returns a tuple with the Reason field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DeleteRelationTuplesInternalServerErrorBody) GetReasonOk() (*string, bool) { + if o == nil || o.Reason == nil { + return nil, false + } + return o.Reason, true +} + +// HasReason returns a boolean if a field has been set. +func (o *DeleteRelationTuplesInternalServerErrorBody) HasReason() bool { + if o != nil && o.Reason != nil { + return true + } + + return false +} + +// SetReason gets a reference to the given string and assigns it to the Reason field. +func (o *DeleteRelationTuplesInternalServerErrorBody) SetReason(v string) { + o.Reason = &v +} + +// GetRequest returns the Request field value if set, zero value otherwise. +func (o *DeleteRelationTuplesInternalServerErrorBody) GetRequest() string { + if o == nil || o.Request == nil { + var ret string + return ret + } + return *o.Request +} + +// GetRequestOk returns a tuple with the Request field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DeleteRelationTuplesInternalServerErrorBody) GetRequestOk() (*string, bool) { + if o == nil || o.Request == nil { + return nil, false + } + return o.Request, true +} + +// HasRequest returns a boolean if a field has been set. +func (o *DeleteRelationTuplesInternalServerErrorBody) HasRequest() bool { + if o != nil && o.Request != nil { + return true + } + + return false +} + +// SetRequest gets a reference to the given string and assigns it to the Request field. +func (o *DeleteRelationTuplesInternalServerErrorBody) SetRequest(v string) { + o.Request = &v +} + +// GetStatus returns the Status field value if set, zero value otherwise. +func (o *DeleteRelationTuplesInternalServerErrorBody) GetStatus() string { + if o == nil || o.Status == nil { + var ret string + return ret + } + return *o.Status +} + +// GetStatusOk returns a tuple with the Status field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DeleteRelationTuplesInternalServerErrorBody) GetStatusOk() (*string, bool) { + if o == nil || o.Status == nil { + return nil, false + } + return o.Status, true +} + +// HasStatus returns a boolean if a field has been set. +func (o *DeleteRelationTuplesInternalServerErrorBody) HasStatus() bool { + if o != nil && o.Status != nil { + return true + } + + return false +} + +// SetStatus gets a reference to the given string and assigns it to the Status field. +func (o *DeleteRelationTuplesInternalServerErrorBody) SetStatus(v string) { + o.Status = &v +} + +func (o DeleteRelationTuplesInternalServerErrorBody) MarshalJSON() ([]byte, error) { + toSerialize := map[string]interface{}{} + if o.Code != nil { + toSerialize["code"] = o.Code + } + if o.Details != nil { + toSerialize["details"] = o.Details + } + if o.Message != nil { + toSerialize["message"] = o.Message + } + if o.Reason != nil { + toSerialize["reason"] = o.Reason + } + if o.Request != nil { + toSerialize["request"] = o.Request + } + if o.Status != nil { + toSerialize["status"] = o.Status + } + return json.Marshal(toSerialize) +} + +type NullableDeleteRelationTuplesInternalServerErrorBody struct { + value *DeleteRelationTuplesInternalServerErrorBody + isSet bool +} + +func (v NullableDeleteRelationTuplesInternalServerErrorBody) Get() *DeleteRelationTuplesInternalServerErrorBody { + return v.value +} + +func (v *NullableDeleteRelationTuplesInternalServerErrorBody) Set(val *DeleteRelationTuplesInternalServerErrorBody) { + v.value = val + v.isSet = true +} + +func (v NullableDeleteRelationTuplesInternalServerErrorBody) IsSet() bool { + return v.isSet +} + +func (v *NullableDeleteRelationTuplesInternalServerErrorBody) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableDeleteRelationTuplesInternalServerErrorBody(val *DeleteRelationTuplesInternalServerErrorBody) *NullableDeleteRelationTuplesInternalServerErrorBody { + return &NullableDeleteRelationTuplesInternalServerErrorBody{value: val, isSet: true} +} + +func (v NullableDeleteRelationTuplesInternalServerErrorBody) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableDeleteRelationTuplesInternalServerErrorBody) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/internal/httpclient-next/model_expand_tree.go b/internal/httpclient-next/model_expand_tree.go new file mode 100644 index 000000000..f3e97d211 --- /dev/null +++ b/internal/httpclient-next/model_expand_tree.go @@ -0,0 +1,217 @@ +/* + * Ory Oathkeeper API + * + * Documentation for all of Ory Oathkeeper's APIs. + * + * API version: 1.0.0 + * Contact: hi@ory.sh + */ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package client + +import ( + "encoding/json" +) + +// ExpandTree struct for ExpandTree +type ExpandTree struct { + // children + Children []ExpandTree `json:"children,omitempty"` + // subject id + SubjectId *string `json:"subject_id,omitempty"` + SubjectSet *SubjectSet `json:"subject_set,omitempty"` + Type string `json:"type"` +} + +// NewExpandTree instantiates a new ExpandTree object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewExpandTree(type_ string) *ExpandTree { + this := ExpandTree{} + this.Type = type_ + return &this +} + +// NewExpandTreeWithDefaults instantiates a new ExpandTree object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewExpandTreeWithDefaults() *ExpandTree { + this := ExpandTree{} + return &this +} + +// GetChildren returns the Children field value if set, zero value otherwise. +func (o *ExpandTree) GetChildren() []ExpandTree { + if o == nil || o.Children == nil { + var ret []ExpandTree + return ret + } + return o.Children +} + +// GetChildrenOk returns a tuple with the Children field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ExpandTree) GetChildrenOk() ([]ExpandTree, bool) { + if o == nil || o.Children == nil { + return nil, false + } + return o.Children, true +} + +// HasChildren returns a boolean if a field has been set. +func (o *ExpandTree) HasChildren() bool { + if o != nil && o.Children != nil { + return true + } + + return false +} + +// SetChildren gets a reference to the given []ExpandTree and assigns it to the Children field. +func (o *ExpandTree) SetChildren(v []ExpandTree) { + o.Children = v +} + +// GetSubjectId returns the SubjectId field value if set, zero value otherwise. +func (o *ExpandTree) GetSubjectId() string { + if o == nil || o.SubjectId == nil { + var ret string + return ret + } + return *o.SubjectId +} + +// GetSubjectIdOk returns a tuple with the SubjectId field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ExpandTree) GetSubjectIdOk() (*string, bool) { + if o == nil || o.SubjectId == nil { + return nil, false + } + return o.SubjectId, true +} + +// HasSubjectId returns a boolean if a field has been set. +func (o *ExpandTree) HasSubjectId() bool { + if o != nil && o.SubjectId != nil { + return true + } + + return false +} + +// SetSubjectId gets a reference to the given string and assigns it to the SubjectId field. +func (o *ExpandTree) SetSubjectId(v string) { + o.SubjectId = &v +} + +// GetSubjectSet returns the SubjectSet field value if set, zero value otherwise. +func (o *ExpandTree) GetSubjectSet() SubjectSet { + if o == nil || o.SubjectSet == nil { + var ret SubjectSet + return ret + } + return *o.SubjectSet +} + +// GetSubjectSetOk returns a tuple with the SubjectSet field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ExpandTree) GetSubjectSetOk() (*SubjectSet, bool) { + if o == nil || o.SubjectSet == nil { + return nil, false + } + return o.SubjectSet, true +} + +// HasSubjectSet returns a boolean if a field has been set. +func (o *ExpandTree) HasSubjectSet() bool { + if o != nil && o.SubjectSet != nil { + return true + } + + return false +} + +// SetSubjectSet gets a reference to the given SubjectSet and assigns it to the SubjectSet field. +func (o *ExpandTree) SetSubjectSet(v SubjectSet) { + o.SubjectSet = &v +} + +// GetType returns the Type field value +func (o *ExpandTree) GetType() string { + if o == nil { + var ret string + return ret + } + + return o.Type +} + +// GetTypeOk returns a tuple with the Type field value +// and a boolean to check if the value has been set. +func (o *ExpandTree) GetTypeOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Type, true +} + +// SetType sets field value +func (o *ExpandTree) SetType(v string) { + o.Type = v +} + +func (o ExpandTree) MarshalJSON() ([]byte, error) { + toSerialize := map[string]interface{}{} + if o.Children != nil { + toSerialize["children"] = o.Children + } + if o.SubjectId != nil { + toSerialize["subject_id"] = o.SubjectId + } + if o.SubjectSet != nil { + toSerialize["subject_set"] = o.SubjectSet + } + if true { + toSerialize["type"] = o.Type + } + return json.Marshal(toSerialize) +} + +type NullableExpandTree struct { + value *ExpandTree + isSet bool +} + +func (v NullableExpandTree) Get() *ExpandTree { + return v.value +} + +func (v *NullableExpandTree) Set(val *ExpandTree) { + v.value = val + v.isSet = true +} + +func (v NullableExpandTree) IsSet() bool { + return v.isSet +} + +func (v *NullableExpandTree) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableExpandTree(val *ExpandTree) *NullableExpandTree { + return &NullableExpandTree{value: val, isSet: true} +} + +func (v NullableExpandTree) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableExpandTree) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/internal/httpclient-next/model_generic_error.go b/internal/httpclient-next/model_generic_error.go new file mode 100644 index 000000000..0075821e2 --- /dev/null +++ b/internal/httpclient-next/model_generic_error.go @@ -0,0 +1,300 @@ +/* + * Ory Oathkeeper API + * + * Documentation for all of Ory Oathkeeper's APIs. + * + * API version: 1.0.0 + * Contact: hi@ory.sh + */ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package client + +import ( + "encoding/json" +) + +// GenericError The standard error format +type GenericError struct { + // code + Code *int64 `json:"code,omitempty"` + // details + Details []map[string]map[string]interface{} `json:"details,omitempty"` + // message + Message *string `json:"message,omitempty"` + // reason + Reason *string `json:"reason,omitempty"` + // request + Request *string `json:"request,omitempty"` + // status + Status *string `json:"status,omitempty"` +} + +// NewGenericError instantiates a new GenericError object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewGenericError() *GenericError { + this := GenericError{} + return &this +} + +// NewGenericErrorWithDefaults instantiates a new GenericError object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewGenericErrorWithDefaults() *GenericError { + this := GenericError{} + return &this +} + +// GetCode returns the Code field value if set, zero value otherwise. +func (o *GenericError) GetCode() int64 { + if o == nil || o.Code == nil { + var ret int64 + return ret + } + return *o.Code +} + +// GetCodeOk returns a tuple with the Code field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GenericError) GetCodeOk() (*int64, bool) { + if o == nil || o.Code == nil { + return nil, false + } + return o.Code, true +} + +// HasCode returns a boolean if a field has been set. +func (o *GenericError) HasCode() bool { + if o != nil && o.Code != nil { + return true + } + + return false +} + +// SetCode gets a reference to the given int64 and assigns it to the Code field. +func (o *GenericError) SetCode(v int64) { + o.Code = &v +} + +// GetDetails returns the Details field value if set, zero value otherwise. +func (o *GenericError) GetDetails() []map[string]map[string]interface{} { + if o == nil || o.Details == nil { + var ret []map[string]map[string]interface{} + return ret + } + return o.Details +} + +// GetDetailsOk returns a tuple with the Details field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GenericError) GetDetailsOk() ([]map[string]map[string]interface{}, bool) { + if o == nil || o.Details == nil { + return nil, false + } + return o.Details, true +} + +// HasDetails returns a boolean if a field has been set. +func (o *GenericError) HasDetails() bool { + if o != nil && o.Details != nil { + return true + } + + return false +} + +// SetDetails gets a reference to the given []map[string]map[string]interface{} and assigns it to the Details field. +func (o *GenericError) SetDetails(v []map[string]map[string]interface{}) { + o.Details = v +} + +// GetMessage returns the Message field value if set, zero value otherwise. +func (o *GenericError) GetMessage() string { + if o == nil || o.Message == nil { + var ret string + return ret + } + return *o.Message +} + +// GetMessageOk returns a tuple with the Message field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GenericError) GetMessageOk() (*string, bool) { + if o == nil || o.Message == nil { + return nil, false + } + return o.Message, true +} + +// HasMessage returns a boolean if a field has been set. +func (o *GenericError) HasMessage() bool { + if o != nil && o.Message != nil { + return true + } + + return false +} + +// SetMessage gets a reference to the given string and assigns it to the Message field. +func (o *GenericError) SetMessage(v string) { + o.Message = &v +} + +// GetReason returns the Reason field value if set, zero value otherwise. +func (o *GenericError) GetReason() string { + if o == nil || o.Reason == nil { + var ret string + return ret + } + return *o.Reason +} + +// GetReasonOk returns a tuple with the Reason field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GenericError) GetReasonOk() (*string, bool) { + if o == nil || o.Reason == nil { + return nil, false + } + return o.Reason, true +} + +// HasReason returns a boolean if a field has been set. +func (o *GenericError) HasReason() bool { + if o != nil && o.Reason != nil { + return true + } + + return false +} + +// SetReason gets a reference to the given string and assigns it to the Reason field. +func (o *GenericError) SetReason(v string) { + o.Reason = &v +} + +// GetRequest returns the Request field value if set, zero value otherwise. +func (o *GenericError) GetRequest() string { + if o == nil || o.Request == nil { + var ret string + return ret + } + return *o.Request +} + +// GetRequestOk returns a tuple with the Request field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GenericError) GetRequestOk() (*string, bool) { + if o == nil || o.Request == nil { + return nil, false + } + return o.Request, true +} + +// HasRequest returns a boolean if a field has been set. +func (o *GenericError) HasRequest() bool { + if o != nil && o.Request != nil { + return true + } + + return false +} + +// SetRequest gets a reference to the given string and assigns it to the Request field. +func (o *GenericError) SetRequest(v string) { + o.Request = &v +} + +// GetStatus returns the Status field value if set, zero value otherwise. +func (o *GenericError) GetStatus() string { + if o == nil || o.Status == nil { + var ret string + return ret + } + return *o.Status +} + +// GetStatusOk returns a tuple with the Status field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GenericError) GetStatusOk() (*string, bool) { + if o == nil || o.Status == nil { + return nil, false + } + return o.Status, true +} + +// HasStatus returns a boolean if a field has been set. +func (o *GenericError) HasStatus() bool { + if o != nil && o.Status != nil { + return true + } + + return false +} + +// SetStatus gets a reference to the given string and assigns it to the Status field. +func (o *GenericError) SetStatus(v string) { + o.Status = &v +} + +func (o GenericError) MarshalJSON() ([]byte, error) { + toSerialize := map[string]interface{}{} + if o.Code != nil { + toSerialize["code"] = o.Code + } + if o.Details != nil { + toSerialize["details"] = o.Details + } + if o.Message != nil { + toSerialize["message"] = o.Message + } + if o.Reason != nil { + toSerialize["reason"] = o.Reason + } + if o.Request != nil { + toSerialize["request"] = o.Request + } + if o.Status != nil { + toSerialize["status"] = o.Status + } + return json.Marshal(toSerialize) +} + +type NullableGenericError struct { + value *GenericError + isSet bool +} + +func (v NullableGenericError) Get() *GenericError { + return v.value +} + +func (v *NullableGenericError) Set(val *GenericError) { + v.value = val + v.isSet = true +} + +func (v NullableGenericError) IsSet() bool { + return v.isSet +} + +func (v *NullableGenericError) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableGenericError(val *GenericError) *NullableGenericError { + return &NullableGenericError{value: val, isSet: true} +} + +func (v NullableGenericError) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableGenericError) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/internal/httpclient-next/model_get_check_bad_request_body.go b/internal/httpclient-next/model_get_check_bad_request_body.go new file mode 100644 index 000000000..045305771 --- /dev/null +++ b/internal/httpclient-next/model_get_check_bad_request_body.go @@ -0,0 +1,300 @@ +/* + * Ory Oathkeeper API + * + * Documentation for all of Ory Oathkeeper's APIs. + * + * API version: 1.0.0 + * Contact: hi@ory.sh + */ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package client + +import ( + "encoding/json" +) + +// GetCheckBadRequestBody GetCheckBadRequestBody GetCheckBadRequestBody GetCheckBadRequestBody GetCheckBadRequestBody GetCheckBadRequestBody get check bad request body +type GetCheckBadRequestBody struct { + // code + Code *int64 `json:"code,omitempty"` + // details + Details []map[string]interface{} `json:"details,omitempty"` + // message + Message *string `json:"message,omitempty"` + // reason + Reason *string `json:"reason,omitempty"` + // request + Request *string `json:"request,omitempty"` + // status + Status *string `json:"status,omitempty"` +} + +// NewGetCheckBadRequestBody instantiates a new GetCheckBadRequestBody object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewGetCheckBadRequestBody() *GetCheckBadRequestBody { + this := GetCheckBadRequestBody{} + return &this +} + +// NewGetCheckBadRequestBodyWithDefaults instantiates a new GetCheckBadRequestBody object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewGetCheckBadRequestBodyWithDefaults() *GetCheckBadRequestBody { + this := GetCheckBadRequestBody{} + return &this +} + +// GetCode returns the Code field value if set, zero value otherwise. +func (o *GetCheckBadRequestBody) GetCode() int64 { + if o == nil || o.Code == nil { + var ret int64 + return ret + } + return *o.Code +} + +// GetCodeOk returns a tuple with the Code field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GetCheckBadRequestBody) GetCodeOk() (*int64, bool) { + if o == nil || o.Code == nil { + return nil, false + } + return o.Code, true +} + +// HasCode returns a boolean if a field has been set. +func (o *GetCheckBadRequestBody) HasCode() bool { + if o != nil && o.Code != nil { + return true + } + + return false +} + +// SetCode gets a reference to the given int64 and assigns it to the Code field. +func (o *GetCheckBadRequestBody) SetCode(v int64) { + o.Code = &v +} + +// GetDetails returns the Details field value if set, zero value otherwise. +func (o *GetCheckBadRequestBody) GetDetails() []map[string]interface{} { + if o == nil || o.Details == nil { + var ret []map[string]interface{} + return ret + } + return o.Details +} + +// GetDetailsOk returns a tuple with the Details field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GetCheckBadRequestBody) GetDetailsOk() ([]map[string]interface{}, bool) { + if o == nil || o.Details == nil { + return nil, false + } + return o.Details, true +} + +// HasDetails returns a boolean if a field has been set. +func (o *GetCheckBadRequestBody) HasDetails() bool { + if o != nil && o.Details != nil { + return true + } + + return false +} + +// SetDetails gets a reference to the given []map[string]interface{} and assigns it to the Details field. +func (o *GetCheckBadRequestBody) SetDetails(v []map[string]interface{}) { + o.Details = v +} + +// GetMessage returns the Message field value if set, zero value otherwise. +func (o *GetCheckBadRequestBody) GetMessage() string { + if o == nil || o.Message == nil { + var ret string + return ret + } + return *o.Message +} + +// GetMessageOk returns a tuple with the Message field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GetCheckBadRequestBody) GetMessageOk() (*string, bool) { + if o == nil || o.Message == nil { + return nil, false + } + return o.Message, true +} + +// HasMessage returns a boolean if a field has been set. +func (o *GetCheckBadRequestBody) HasMessage() bool { + if o != nil && o.Message != nil { + return true + } + + return false +} + +// SetMessage gets a reference to the given string and assigns it to the Message field. +func (o *GetCheckBadRequestBody) SetMessage(v string) { + o.Message = &v +} + +// GetReason returns the Reason field value if set, zero value otherwise. +func (o *GetCheckBadRequestBody) GetReason() string { + if o == nil || o.Reason == nil { + var ret string + return ret + } + return *o.Reason +} + +// GetReasonOk returns a tuple with the Reason field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GetCheckBadRequestBody) GetReasonOk() (*string, bool) { + if o == nil || o.Reason == nil { + return nil, false + } + return o.Reason, true +} + +// HasReason returns a boolean if a field has been set. +func (o *GetCheckBadRequestBody) HasReason() bool { + if o != nil && o.Reason != nil { + return true + } + + return false +} + +// SetReason gets a reference to the given string and assigns it to the Reason field. +func (o *GetCheckBadRequestBody) SetReason(v string) { + o.Reason = &v +} + +// GetRequest returns the Request field value if set, zero value otherwise. +func (o *GetCheckBadRequestBody) GetRequest() string { + if o == nil || o.Request == nil { + var ret string + return ret + } + return *o.Request +} + +// GetRequestOk returns a tuple with the Request field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GetCheckBadRequestBody) GetRequestOk() (*string, bool) { + if o == nil || o.Request == nil { + return nil, false + } + return o.Request, true +} + +// HasRequest returns a boolean if a field has been set. +func (o *GetCheckBadRequestBody) HasRequest() bool { + if o != nil && o.Request != nil { + return true + } + + return false +} + +// SetRequest gets a reference to the given string and assigns it to the Request field. +func (o *GetCheckBadRequestBody) SetRequest(v string) { + o.Request = &v +} + +// GetStatus returns the Status field value if set, zero value otherwise. +func (o *GetCheckBadRequestBody) GetStatus() string { + if o == nil || o.Status == nil { + var ret string + return ret + } + return *o.Status +} + +// GetStatusOk returns a tuple with the Status field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GetCheckBadRequestBody) GetStatusOk() (*string, bool) { + if o == nil || o.Status == nil { + return nil, false + } + return o.Status, true +} + +// HasStatus returns a boolean if a field has been set. +func (o *GetCheckBadRequestBody) HasStatus() bool { + if o != nil && o.Status != nil { + return true + } + + return false +} + +// SetStatus gets a reference to the given string and assigns it to the Status field. +func (o *GetCheckBadRequestBody) SetStatus(v string) { + o.Status = &v +} + +func (o GetCheckBadRequestBody) MarshalJSON() ([]byte, error) { + toSerialize := map[string]interface{}{} + if o.Code != nil { + toSerialize["code"] = o.Code + } + if o.Details != nil { + toSerialize["details"] = o.Details + } + if o.Message != nil { + toSerialize["message"] = o.Message + } + if o.Reason != nil { + toSerialize["reason"] = o.Reason + } + if o.Request != nil { + toSerialize["request"] = o.Request + } + if o.Status != nil { + toSerialize["status"] = o.Status + } + return json.Marshal(toSerialize) +} + +type NullableGetCheckBadRequestBody struct { + value *GetCheckBadRequestBody + isSet bool +} + +func (v NullableGetCheckBadRequestBody) Get() *GetCheckBadRequestBody { + return v.value +} + +func (v *NullableGetCheckBadRequestBody) Set(val *GetCheckBadRequestBody) { + v.value = val + v.isSet = true +} + +func (v NullableGetCheckBadRequestBody) IsSet() bool { + return v.isSet +} + +func (v *NullableGetCheckBadRequestBody) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableGetCheckBadRequestBody(val *GetCheckBadRequestBody) *NullableGetCheckBadRequestBody { + return &NullableGetCheckBadRequestBody{value: val, isSet: true} +} + +func (v NullableGetCheckBadRequestBody) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableGetCheckBadRequestBody) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/internal/httpclient-next/model_get_check_internal_server_error_body.go b/internal/httpclient-next/model_get_check_internal_server_error_body.go new file mode 100644 index 000000000..9e2225863 --- /dev/null +++ b/internal/httpclient-next/model_get_check_internal_server_error_body.go @@ -0,0 +1,300 @@ +/* + * Ory Oathkeeper API + * + * Documentation for all of Ory Oathkeeper's APIs. + * + * API version: 1.0.0 + * Contact: hi@ory.sh + */ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package client + +import ( + "encoding/json" +) + +// GetCheckInternalServerErrorBody GetCheckInternalServerErrorBody GetCheckInternalServerErrorBody GetCheckInternalServerErrorBody get check internal server error body +type GetCheckInternalServerErrorBody struct { + // code + Code *int64 `json:"code,omitempty"` + // details + Details []map[string]interface{} `json:"details,omitempty"` + // message + Message *string `json:"message,omitempty"` + // reason + Reason *string `json:"reason,omitempty"` + // request + Request *string `json:"request,omitempty"` + // status + Status *string `json:"status,omitempty"` +} + +// NewGetCheckInternalServerErrorBody instantiates a new GetCheckInternalServerErrorBody object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewGetCheckInternalServerErrorBody() *GetCheckInternalServerErrorBody { + this := GetCheckInternalServerErrorBody{} + return &this +} + +// NewGetCheckInternalServerErrorBodyWithDefaults instantiates a new GetCheckInternalServerErrorBody object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewGetCheckInternalServerErrorBodyWithDefaults() *GetCheckInternalServerErrorBody { + this := GetCheckInternalServerErrorBody{} + return &this +} + +// GetCode returns the Code field value if set, zero value otherwise. +func (o *GetCheckInternalServerErrorBody) GetCode() int64 { + if o == nil || o.Code == nil { + var ret int64 + return ret + } + return *o.Code +} + +// GetCodeOk returns a tuple with the Code field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GetCheckInternalServerErrorBody) GetCodeOk() (*int64, bool) { + if o == nil || o.Code == nil { + return nil, false + } + return o.Code, true +} + +// HasCode returns a boolean if a field has been set. +func (o *GetCheckInternalServerErrorBody) HasCode() bool { + if o != nil && o.Code != nil { + return true + } + + return false +} + +// SetCode gets a reference to the given int64 and assigns it to the Code field. +func (o *GetCheckInternalServerErrorBody) SetCode(v int64) { + o.Code = &v +} + +// GetDetails returns the Details field value if set, zero value otherwise. +func (o *GetCheckInternalServerErrorBody) GetDetails() []map[string]interface{} { + if o == nil || o.Details == nil { + var ret []map[string]interface{} + return ret + } + return o.Details +} + +// GetDetailsOk returns a tuple with the Details field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GetCheckInternalServerErrorBody) GetDetailsOk() ([]map[string]interface{}, bool) { + if o == nil || o.Details == nil { + return nil, false + } + return o.Details, true +} + +// HasDetails returns a boolean if a field has been set. +func (o *GetCheckInternalServerErrorBody) HasDetails() bool { + if o != nil && o.Details != nil { + return true + } + + return false +} + +// SetDetails gets a reference to the given []map[string]interface{} and assigns it to the Details field. +func (o *GetCheckInternalServerErrorBody) SetDetails(v []map[string]interface{}) { + o.Details = v +} + +// GetMessage returns the Message field value if set, zero value otherwise. +func (o *GetCheckInternalServerErrorBody) GetMessage() string { + if o == nil || o.Message == nil { + var ret string + return ret + } + return *o.Message +} + +// GetMessageOk returns a tuple with the Message field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GetCheckInternalServerErrorBody) GetMessageOk() (*string, bool) { + if o == nil || o.Message == nil { + return nil, false + } + return o.Message, true +} + +// HasMessage returns a boolean if a field has been set. +func (o *GetCheckInternalServerErrorBody) HasMessage() bool { + if o != nil && o.Message != nil { + return true + } + + return false +} + +// SetMessage gets a reference to the given string and assigns it to the Message field. +func (o *GetCheckInternalServerErrorBody) SetMessage(v string) { + o.Message = &v +} + +// GetReason returns the Reason field value if set, zero value otherwise. +func (o *GetCheckInternalServerErrorBody) GetReason() string { + if o == nil || o.Reason == nil { + var ret string + return ret + } + return *o.Reason +} + +// GetReasonOk returns a tuple with the Reason field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GetCheckInternalServerErrorBody) GetReasonOk() (*string, bool) { + if o == nil || o.Reason == nil { + return nil, false + } + return o.Reason, true +} + +// HasReason returns a boolean if a field has been set. +func (o *GetCheckInternalServerErrorBody) HasReason() bool { + if o != nil && o.Reason != nil { + return true + } + + return false +} + +// SetReason gets a reference to the given string and assigns it to the Reason field. +func (o *GetCheckInternalServerErrorBody) SetReason(v string) { + o.Reason = &v +} + +// GetRequest returns the Request field value if set, zero value otherwise. +func (o *GetCheckInternalServerErrorBody) GetRequest() string { + if o == nil || o.Request == nil { + var ret string + return ret + } + return *o.Request +} + +// GetRequestOk returns a tuple with the Request field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GetCheckInternalServerErrorBody) GetRequestOk() (*string, bool) { + if o == nil || o.Request == nil { + return nil, false + } + return o.Request, true +} + +// HasRequest returns a boolean if a field has been set. +func (o *GetCheckInternalServerErrorBody) HasRequest() bool { + if o != nil && o.Request != nil { + return true + } + + return false +} + +// SetRequest gets a reference to the given string and assigns it to the Request field. +func (o *GetCheckInternalServerErrorBody) SetRequest(v string) { + o.Request = &v +} + +// GetStatus returns the Status field value if set, zero value otherwise. +func (o *GetCheckInternalServerErrorBody) GetStatus() string { + if o == nil || o.Status == nil { + var ret string + return ret + } + return *o.Status +} + +// GetStatusOk returns a tuple with the Status field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GetCheckInternalServerErrorBody) GetStatusOk() (*string, bool) { + if o == nil || o.Status == nil { + return nil, false + } + return o.Status, true +} + +// HasStatus returns a boolean if a field has been set. +func (o *GetCheckInternalServerErrorBody) HasStatus() bool { + if o != nil && o.Status != nil { + return true + } + + return false +} + +// SetStatus gets a reference to the given string and assigns it to the Status field. +func (o *GetCheckInternalServerErrorBody) SetStatus(v string) { + o.Status = &v +} + +func (o GetCheckInternalServerErrorBody) MarshalJSON() ([]byte, error) { + toSerialize := map[string]interface{}{} + if o.Code != nil { + toSerialize["code"] = o.Code + } + if o.Details != nil { + toSerialize["details"] = o.Details + } + if o.Message != nil { + toSerialize["message"] = o.Message + } + if o.Reason != nil { + toSerialize["reason"] = o.Reason + } + if o.Request != nil { + toSerialize["request"] = o.Request + } + if o.Status != nil { + toSerialize["status"] = o.Status + } + return json.Marshal(toSerialize) +} + +type NullableGetCheckInternalServerErrorBody struct { + value *GetCheckInternalServerErrorBody + isSet bool +} + +func (v NullableGetCheckInternalServerErrorBody) Get() *GetCheckInternalServerErrorBody { + return v.value +} + +func (v *NullableGetCheckInternalServerErrorBody) Set(val *GetCheckInternalServerErrorBody) { + v.value = val + v.isSet = true +} + +func (v NullableGetCheckInternalServerErrorBody) IsSet() bool { + return v.isSet +} + +func (v *NullableGetCheckInternalServerErrorBody) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableGetCheckInternalServerErrorBody(val *GetCheckInternalServerErrorBody) *NullableGetCheckInternalServerErrorBody { + return &NullableGetCheckInternalServerErrorBody{value: val, isSet: true} +} + +func (v NullableGetCheckInternalServerErrorBody) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableGetCheckInternalServerErrorBody) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/internal/httpclient-next/model_get_check_response.go b/internal/httpclient-next/model_get_check_response.go new file mode 100644 index 000000000..f2a158ec2 --- /dev/null +++ b/internal/httpclient-next/model_get_check_response.go @@ -0,0 +1,108 @@ +/* + * Ory Oathkeeper API + * + * Documentation for all of Ory Oathkeeper's APIs. + * + * API version: 1.0.0 + * Contact: hi@ory.sh + */ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package client + +import ( + "encoding/json" +) + +// GetCheckResponse The content of the allowed field is mirrored in the HTTP status code. +type GetCheckResponse struct { + // whether the relation tuple is allowed + Allowed bool `json:"allowed"` +} + +// NewGetCheckResponse instantiates a new GetCheckResponse object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewGetCheckResponse(allowed bool) *GetCheckResponse { + this := GetCheckResponse{} + this.Allowed = allowed + return &this +} + +// NewGetCheckResponseWithDefaults instantiates a new GetCheckResponse object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewGetCheckResponseWithDefaults() *GetCheckResponse { + this := GetCheckResponse{} + return &this +} + +// GetAllowed returns the Allowed field value +func (o *GetCheckResponse) GetAllowed() bool { + if o == nil { + var ret bool + return ret + } + + return o.Allowed +} + +// GetAllowedOk returns a tuple with the Allowed field value +// and a boolean to check if the value has been set. +func (o *GetCheckResponse) GetAllowedOk() (*bool, bool) { + if o == nil { + return nil, false + } + return &o.Allowed, true +} + +// SetAllowed sets field value +func (o *GetCheckResponse) SetAllowed(v bool) { + o.Allowed = v +} + +func (o GetCheckResponse) MarshalJSON() ([]byte, error) { + toSerialize := map[string]interface{}{} + if true { + toSerialize["allowed"] = o.Allowed + } + return json.Marshal(toSerialize) +} + +type NullableGetCheckResponse struct { + value *GetCheckResponse + isSet bool +} + +func (v NullableGetCheckResponse) Get() *GetCheckResponse { + return v.value +} + +func (v *NullableGetCheckResponse) Set(val *GetCheckResponse) { + v.value = val + v.isSet = true +} + +func (v NullableGetCheckResponse) IsSet() bool { + return v.isSet +} + +func (v *NullableGetCheckResponse) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableGetCheckResponse(val *GetCheckResponse) *NullableGetCheckResponse { + return &NullableGetCheckResponse{value: val, isSet: true} +} + +func (v NullableGetCheckResponse) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableGetCheckResponse) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/internal/httpclient-next/model_get_expand_bad_request_body.go b/internal/httpclient-next/model_get_expand_bad_request_body.go new file mode 100644 index 000000000..eae1af009 --- /dev/null +++ b/internal/httpclient-next/model_get_expand_bad_request_body.go @@ -0,0 +1,300 @@ +/* + * Ory Oathkeeper API + * + * Documentation for all of Ory Oathkeeper's APIs. + * + * API version: 1.0.0 + * Contact: hi@ory.sh + */ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package client + +import ( + "encoding/json" +) + +// GetExpandBadRequestBody GetExpandBadRequestBody GetExpandBadRequestBody GetExpandBadRequestBody GetExpandBadRequestBody get expand bad request body +type GetExpandBadRequestBody struct { + // code + Code *int64 `json:"code,omitempty"` + // details + Details []map[string]interface{} `json:"details,omitempty"` + // message + Message *string `json:"message,omitempty"` + // reason + Reason *string `json:"reason,omitempty"` + // request + Request *string `json:"request,omitempty"` + // status + Status *string `json:"status,omitempty"` +} + +// NewGetExpandBadRequestBody instantiates a new GetExpandBadRequestBody object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewGetExpandBadRequestBody() *GetExpandBadRequestBody { + this := GetExpandBadRequestBody{} + return &this +} + +// NewGetExpandBadRequestBodyWithDefaults instantiates a new GetExpandBadRequestBody object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewGetExpandBadRequestBodyWithDefaults() *GetExpandBadRequestBody { + this := GetExpandBadRequestBody{} + return &this +} + +// GetCode returns the Code field value if set, zero value otherwise. +func (o *GetExpandBadRequestBody) GetCode() int64 { + if o == nil || o.Code == nil { + var ret int64 + return ret + } + return *o.Code +} + +// GetCodeOk returns a tuple with the Code field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GetExpandBadRequestBody) GetCodeOk() (*int64, bool) { + if o == nil || o.Code == nil { + return nil, false + } + return o.Code, true +} + +// HasCode returns a boolean if a field has been set. +func (o *GetExpandBadRequestBody) HasCode() bool { + if o != nil && o.Code != nil { + return true + } + + return false +} + +// SetCode gets a reference to the given int64 and assigns it to the Code field. +func (o *GetExpandBadRequestBody) SetCode(v int64) { + o.Code = &v +} + +// GetDetails returns the Details field value if set, zero value otherwise. +func (o *GetExpandBadRequestBody) GetDetails() []map[string]interface{} { + if o == nil || o.Details == nil { + var ret []map[string]interface{} + return ret + } + return o.Details +} + +// GetDetailsOk returns a tuple with the Details field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GetExpandBadRequestBody) GetDetailsOk() ([]map[string]interface{}, bool) { + if o == nil || o.Details == nil { + return nil, false + } + return o.Details, true +} + +// HasDetails returns a boolean if a field has been set. +func (o *GetExpandBadRequestBody) HasDetails() bool { + if o != nil && o.Details != nil { + return true + } + + return false +} + +// SetDetails gets a reference to the given []map[string]interface{} and assigns it to the Details field. +func (o *GetExpandBadRequestBody) SetDetails(v []map[string]interface{}) { + o.Details = v +} + +// GetMessage returns the Message field value if set, zero value otherwise. +func (o *GetExpandBadRequestBody) GetMessage() string { + if o == nil || o.Message == nil { + var ret string + return ret + } + return *o.Message +} + +// GetMessageOk returns a tuple with the Message field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GetExpandBadRequestBody) GetMessageOk() (*string, bool) { + if o == nil || o.Message == nil { + return nil, false + } + return o.Message, true +} + +// HasMessage returns a boolean if a field has been set. +func (o *GetExpandBadRequestBody) HasMessage() bool { + if o != nil && o.Message != nil { + return true + } + + return false +} + +// SetMessage gets a reference to the given string and assigns it to the Message field. +func (o *GetExpandBadRequestBody) SetMessage(v string) { + o.Message = &v +} + +// GetReason returns the Reason field value if set, zero value otherwise. +func (o *GetExpandBadRequestBody) GetReason() string { + if o == nil || o.Reason == nil { + var ret string + return ret + } + return *o.Reason +} + +// GetReasonOk returns a tuple with the Reason field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GetExpandBadRequestBody) GetReasonOk() (*string, bool) { + if o == nil || o.Reason == nil { + return nil, false + } + return o.Reason, true +} + +// HasReason returns a boolean if a field has been set. +func (o *GetExpandBadRequestBody) HasReason() bool { + if o != nil && o.Reason != nil { + return true + } + + return false +} + +// SetReason gets a reference to the given string and assigns it to the Reason field. +func (o *GetExpandBadRequestBody) SetReason(v string) { + o.Reason = &v +} + +// GetRequest returns the Request field value if set, zero value otherwise. +func (o *GetExpandBadRequestBody) GetRequest() string { + if o == nil || o.Request == nil { + var ret string + return ret + } + return *o.Request +} + +// GetRequestOk returns a tuple with the Request field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GetExpandBadRequestBody) GetRequestOk() (*string, bool) { + if o == nil || o.Request == nil { + return nil, false + } + return o.Request, true +} + +// HasRequest returns a boolean if a field has been set. +func (o *GetExpandBadRequestBody) HasRequest() bool { + if o != nil && o.Request != nil { + return true + } + + return false +} + +// SetRequest gets a reference to the given string and assigns it to the Request field. +func (o *GetExpandBadRequestBody) SetRequest(v string) { + o.Request = &v +} + +// GetStatus returns the Status field value if set, zero value otherwise. +func (o *GetExpandBadRequestBody) GetStatus() string { + if o == nil || o.Status == nil { + var ret string + return ret + } + return *o.Status +} + +// GetStatusOk returns a tuple with the Status field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GetExpandBadRequestBody) GetStatusOk() (*string, bool) { + if o == nil || o.Status == nil { + return nil, false + } + return o.Status, true +} + +// HasStatus returns a boolean if a field has been set. +func (o *GetExpandBadRequestBody) HasStatus() bool { + if o != nil && o.Status != nil { + return true + } + + return false +} + +// SetStatus gets a reference to the given string and assigns it to the Status field. +func (o *GetExpandBadRequestBody) SetStatus(v string) { + o.Status = &v +} + +func (o GetExpandBadRequestBody) MarshalJSON() ([]byte, error) { + toSerialize := map[string]interface{}{} + if o.Code != nil { + toSerialize["code"] = o.Code + } + if o.Details != nil { + toSerialize["details"] = o.Details + } + if o.Message != nil { + toSerialize["message"] = o.Message + } + if o.Reason != nil { + toSerialize["reason"] = o.Reason + } + if o.Request != nil { + toSerialize["request"] = o.Request + } + if o.Status != nil { + toSerialize["status"] = o.Status + } + return json.Marshal(toSerialize) +} + +type NullableGetExpandBadRequestBody struct { + value *GetExpandBadRequestBody + isSet bool +} + +func (v NullableGetExpandBadRequestBody) Get() *GetExpandBadRequestBody { + return v.value +} + +func (v *NullableGetExpandBadRequestBody) Set(val *GetExpandBadRequestBody) { + v.value = val + v.isSet = true +} + +func (v NullableGetExpandBadRequestBody) IsSet() bool { + return v.isSet +} + +func (v *NullableGetExpandBadRequestBody) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableGetExpandBadRequestBody(val *GetExpandBadRequestBody) *NullableGetExpandBadRequestBody { + return &NullableGetExpandBadRequestBody{value: val, isSet: true} +} + +func (v NullableGetExpandBadRequestBody) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableGetExpandBadRequestBody) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/internal/httpclient-next/model_get_expand_internal_server_error_body.go b/internal/httpclient-next/model_get_expand_internal_server_error_body.go new file mode 100644 index 000000000..16de83178 --- /dev/null +++ b/internal/httpclient-next/model_get_expand_internal_server_error_body.go @@ -0,0 +1,300 @@ +/* + * Ory Oathkeeper API + * + * Documentation for all of Ory Oathkeeper's APIs. + * + * API version: 1.0.0 + * Contact: hi@ory.sh + */ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package client + +import ( + "encoding/json" +) + +// GetExpandInternalServerErrorBody GetExpandInternalServerErrorBody GetExpandInternalServerErrorBody get expand internal server error body +type GetExpandInternalServerErrorBody struct { + // code + Code *int64 `json:"code,omitempty"` + // details + Details []map[string]interface{} `json:"details,omitempty"` + // message + Message *string `json:"message,omitempty"` + // reason + Reason *string `json:"reason,omitempty"` + // request + Request *string `json:"request,omitempty"` + // status + Status *string `json:"status,omitempty"` +} + +// NewGetExpandInternalServerErrorBody instantiates a new GetExpandInternalServerErrorBody object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewGetExpandInternalServerErrorBody() *GetExpandInternalServerErrorBody { + this := GetExpandInternalServerErrorBody{} + return &this +} + +// NewGetExpandInternalServerErrorBodyWithDefaults instantiates a new GetExpandInternalServerErrorBody object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewGetExpandInternalServerErrorBodyWithDefaults() *GetExpandInternalServerErrorBody { + this := GetExpandInternalServerErrorBody{} + return &this +} + +// GetCode returns the Code field value if set, zero value otherwise. +func (o *GetExpandInternalServerErrorBody) GetCode() int64 { + if o == nil || o.Code == nil { + var ret int64 + return ret + } + return *o.Code +} + +// GetCodeOk returns a tuple with the Code field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GetExpandInternalServerErrorBody) GetCodeOk() (*int64, bool) { + if o == nil || o.Code == nil { + return nil, false + } + return o.Code, true +} + +// HasCode returns a boolean if a field has been set. +func (o *GetExpandInternalServerErrorBody) HasCode() bool { + if o != nil && o.Code != nil { + return true + } + + return false +} + +// SetCode gets a reference to the given int64 and assigns it to the Code field. +func (o *GetExpandInternalServerErrorBody) SetCode(v int64) { + o.Code = &v +} + +// GetDetails returns the Details field value if set, zero value otherwise. +func (o *GetExpandInternalServerErrorBody) GetDetails() []map[string]interface{} { + if o == nil || o.Details == nil { + var ret []map[string]interface{} + return ret + } + return o.Details +} + +// GetDetailsOk returns a tuple with the Details field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GetExpandInternalServerErrorBody) GetDetailsOk() ([]map[string]interface{}, bool) { + if o == nil || o.Details == nil { + return nil, false + } + return o.Details, true +} + +// HasDetails returns a boolean if a field has been set. +func (o *GetExpandInternalServerErrorBody) HasDetails() bool { + if o != nil && o.Details != nil { + return true + } + + return false +} + +// SetDetails gets a reference to the given []map[string]interface{} and assigns it to the Details field. +func (o *GetExpandInternalServerErrorBody) SetDetails(v []map[string]interface{}) { + o.Details = v +} + +// GetMessage returns the Message field value if set, zero value otherwise. +func (o *GetExpandInternalServerErrorBody) GetMessage() string { + if o == nil || o.Message == nil { + var ret string + return ret + } + return *o.Message +} + +// GetMessageOk returns a tuple with the Message field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GetExpandInternalServerErrorBody) GetMessageOk() (*string, bool) { + if o == nil || o.Message == nil { + return nil, false + } + return o.Message, true +} + +// HasMessage returns a boolean if a field has been set. +func (o *GetExpandInternalServerErrorBody) HasMessage() bool { + if o != nil && o.Message != nil { + return true + } + + return false +} + +// SetMessage gets a reference to the given string and assigns it to the Message field. +func (o *GetExpandInternalServerErrorBody) SetMessage(v string) { + o.Message = &v +} + +// GetReason returns the Reason field value if set, zero value otherwise. +func (o *GetExpandInternalServerErrorBody) GetReason() string { + if o == nil || o.Reason == nil { + var ret string + return ret + } + return *o.Reason +} + +// GetReasonOk returns a tuple with the Reason field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GetExpandInternalServerErrorBody) GetReasonOk() (*string, bool) { + if o == nil || o.Reason == nil { + return nil, false + } + return o.Reason, true +} + +// HasReason returns a boolean if a field has been set. +func (o *GetExpandInternalServerErrorBody) HasReason() bool { + if o != nil && o.Reason != nil { + return true + } + + return false +} + +// SetReason gets a reference to the given string and assigns it to the Reason field. +func (o *GetExpandInternalServerErrorBody) SetReason(v string) { + o.Reason = &v +} + +// GetRequest returns the Request field value if set, zero value otherwise. +func (o *GetExpandInternalServerErrorBody) GetRequest() string { + if o == nil || o.Request == nil { + var ret string + return ret + } + return *o.Request +} + +// GetRequestOk returns a tuple with the Request field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GetExpandInternalServerErrorBody) GetRequestOk() (*string, bool) { + if o == nil || o.Request == nil { + return nil, false + } + return o.Request, true +} + +// HasRequest returns a boolean if a field has been set. +func (o *GetExpandInternalServerErrorBody) HasRequest() bool { + if o != nil && o.Request != nil { + return true + } + + return false +} + +// SetRequest gets a reference to the given string and assigns it to the Request field. +func (o *GetExpandInternalServerErrorBody) SetRequest(v string) { + o.Request = &v +} + +// GetStatus returns the Status field value if set, zero value otherwise. +func (o *GetExpandInternalServerErrorBody) GetStatus() string { + if o == nil || o.Status == nil { + var ret string + return ret + } + return *o.Status +} + +// GetStatusOk returns a tuple with the Status field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GetExpandInternalServerErrorBody) GetStatusOk() (*string, bool) { + if o == nil || o.Status == nil { + return nil, false + } + return o.Status, true +} + +// HasStatus returns a boolean if a field has been set. +func (o *GetExpandInternalServerErrorBody) HasStatus() bool { + if o != nil && o.Status != nil { + return true + } + + return false +} + +// SetStatus gets a reference to the given string and assigns it to the Status field. +func (o *GetExpandInternalServerErrorBody) SetStatus(v string) { + o.Status = &v +} + +func (o GetExpandInternalServerErrorBody) MarshalJSON() ([]byte, error) { + toSerialize := map[string]interface{}{} + if o.Code != nil { + toSerialize["code"] = o.Code + } + if o.Details != nil { + toSerialize["details"] = o.Details + } + if o.Message != nil { + toSerialize["message"] = o.Message + } + if o.Reason != nil { + toSerialize["reason"] = o.Reason + } + if o.Request != nil { + toSerialize["request"] = o.Request + } + if o.Status != nil { + toSerialize["status"] = o.Status + } + return json.Marshal(toSerialize) +} + +type NullableGetExpandInternalServerErrorBody struct { + value *GetExpandInternalServerErrorBody + isSet bool +} + +func (v NullableGetExpandInternalServerErrorBody) Get() *GetExpandInternalServerErrorBody { + return v.value +} + +func (v *NullableGetExpandInternalServerErrorBody) Set(val *GetExpandInternalServerErrorBody) { + v.value = val + v.isSet = true +} + +func (v NullableGetExpandInternalServerErrorBody) IsSet() bool { + return v.isSet +} + +func (v *NullableGetExpandInternalServerErrorBody) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableGetExpandInternalServerErrorBody(val *GetExpandInternalServerErrorBody) *NullableGetExpandInternalServerErrorBody { + return &NullableGetExpandInternalServerErrorBody{value: val, isSet: true} +} + +func (v NullableGetExpandInternalServerErrorBody) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableGetExpandInternalServerErrorBody) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/internal/httpclient-next/model_get_expand_not_found_body.go b/internal/httpclient-next/model_get_expand_not_found_body.go new file mode 100644 index 000000000..cb98b7f07 --- /dev/null +++ b/internal/httpclient-next/model_get_expand_not_found_body.go @@ -0,0 +1,300 @@ +/* + * Ory Oathkeeper API + * + * Documentation for all of Ory Oathkeeper's APIs. + * + * API version: 1.0.0 + * Contact: hi@ory.sh + */ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package client + +import ( + "encoding/json" +) + +// GetExpandNotFoundBody GetExpandNotFoundBody GetExpandNotFoundBody GetExpandNotFoundBody GetExpandNotFoundBody get expand not found body +type GetExpandNotFoundBody struct { + // code + Code *int64 `json:"code,omitempty"` + // details + Details []map[string]interface{} `json:"details,omitempty"` + // message + Message *string `json:"message,omitempty"` + // reason + Reason *string `json:"reason,omitempty"` + // request + Request *string `json:"request,omitempty"` + // status + Status *string `json:"status,omitempty"` +} + +// NewGetExpandNotFoundBody instantiates a new GetExpandNotFoundBody object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewGetExpandNotFoundBody() *GetExpandNotFoundBody { + this := GetExpandNotFoundBody{} + return &this +} + +// NewGetExpandNotFoundBodyWithDefaults instantiates a new GetExpandNotFoundBody object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewGetExpandNotFoundBodyWithDefaults() *GetExpandNotFoundBody { + this := GetExpandNotFoundBody{} + return &this +} + +// GetCode returns the Code field value if set, zero value otherwise. +func (o *GetExpandNotFoundBody) GetCode() int64 { + if o == nil || o.Code == nil { + var ret int64 + return ret + } + return *o.Code +} + +// GetCodeOk returns a tuple with the Code field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GetExpandNotFoundBody) GetCodeOk() (*int64, bool) { + if o == nil || o.Code == nil { + return nil, false + } + return o.Code, true +} + +// HasCode returns a boolean if a field has been set. +func (o *GetExpandNotFoundBody) HasCode() bool { + if o != nil && o.Code != nil { + return true + } + + return false +} + +// SetCode gets a reference to the given int64 and assigns it to the Code field. +func (o *GetExpandNotFoundBody) SetCode(v int64) { + o.Code = &v +} + +// GetDetails returns the Details field value if set, zero value otherwise. +func (o *GetExpandNotFoundBody) GetDetails() []map[string]interface{} { + if o == nil || o.Details == nil { + var ret []map[string]interface{} + return ret + } + return o.Details +} + +// GetDetailsOk returns a tuple with the Details field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GetExpandNotFoundBody) GetDetailsOk() ([]map[string]interface{}, bool) { + if o == nil || o.Details == nil { + return nil, false + } + return o.Details, true +} + +// HasDetails returns a boolean if a field has been set. +func (o *GetExpandNotFoundBody) HasDetails() bool { + if o != nil && o.Details != nil { + return true + } + + return false +} + +// SetDetails gets a reference to the given []map[string]interface{} and assigns it to the Details field. +func (o *GetExpandNotFoundBody) SetDetails(v []map[string]interface{}) { + o.Details = v +} + +// GetMessage returns the Message field value if set, zero value otherwise. +func (o *GetExpandNotFoundBody) GetMessage() string { + if o == nil || o.Message == nil { + var ret string + return ret + } + return *o.Message +} + +// GetMessageOk returns a tuple with the Message field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GetExpandNotFoundBody) GetMessageOk() (*string, bool) { + if o == nil || o.Message == nil { + return nil, false + } + return o.Message, true +} + +// HasMessage returns a boolean if a field has been set. +func (o *GetExpandNotFoundBody) HasMessage() bool { + if o != nil && o.Message != nil { + return true + } + + return false +} + +// SetMessage gets a reference to the given string and assigns it to the Message field. +func (o *GetExpandNotFoundBody) SetMessage(v string) { + o.Message = &v +} + +// GetReason returns the Reason field value if set, zero value otherwise. +func (o *GetExpandNotFoundBody) GetReason() string { + if o == nil || o.Reason == nil { + var ret string + return ret + } + return *o.Reason +} + +// GetReasonOk returns a tuple with the Reason field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GetExpandNotFoundBody) GetReasonOk() (*string, bool) { + if o == nil || o.Reason == nil { + return nil, false + } + return o.Reason, true +} + +// HasReason returns a boolean if a field has been set. +func (o *GetExpandNotFoundBody) HasReason() bool { + if o != nil && o.Reason != nil { + return true + } + + return false +} + +// SetReason gets a reference to the given string and assigns it to the Reason field. +func (o *GetExpandNotFoundBody) SetReason(v string) { + o.Reason = &v +} + +// GetRequest returns the Request field value if set, zero value otherwise. +func (o *GetExpandNotFoundBody) GetRequest() string { + if o == nil || o.Request == nil { + var ret string + return ret + } + return *o.Request +} + +// GetRequestOk returns a tuple with the Request field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GetExpandNotFoundBody) GetRequestOk() (*string, bool) { + if o == nil || o.Request == nil { + return nil, false + } + return o.Request, true +} + +// HasRequest returns a boolean if a field has been set. +func (o *GetExpandNotFoundBody) HasRequest() bool { + if o != nil && o.Request != nil { + return true + } + + return false +} + +// SetRequest gets a reference to the given string and assigns it to the Request field. +func (o *GetExpandNotFoundBody) SetRequest(v string) { + o.Request = &v +} + +// GetStatus returns the Status field value if set, zero value otherwise. +func (o *GetExpandNotFoundBody) GetStatus() string { + if o == nil || o.Status == nil { + var ret string + return ret + } + return *o.Status +} + +// GetStatusOk returns a tuple with the Status field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GetExpandNotFoundBody) GetStatusOk() (*string, bool) { + if o == nil || o.Status == nil { + return nil, false + } + return o.Status, true +} + +// HasStatus returns a boolean if a field has been set. +func (o *GetExpandNotFoundBody) HasStatus() bool { + if o != nil && o.Status != nil { + return true + } + + return false +} + +// SetStatus gets a reference to the given string and assigns it to the Status field. +func (o *GetExpandNotFoundBody) SetStatus(v string) { + o.Status = &v +} + +func (o GetExpandNotFoundBody) MarshalJSON() ([]byte, error) { + toSerialize := map[string]interface{}{} + if o.Code != nil { + toSerialize["code"] = o.Code + } + if o.Details != nil { + toSerialize["details"] = o.Details + } + if o.Message != nil { + toSerialize["message"] = o.Message + } + if o.Reason != nil { + toSerialize["reason"] = o.Reason + } + if o.Request != nil { + toSerialize["request"] = o.Request + } + if o.Status != nil { + toSerialize["status"] = o.Status + } + return json.Marshal(toSerialize) +} + +type NullableGetExpandNotFoundBody struct { + value *GetExpandNotFoundBody + isSet bool +} + +func (v NullableGetExpandNotFoundBody) Get() *GetExpandNotFoundBody { + return v.value +} + +func (v *NullableGetExpandNotFoundBody) Set(val *GetExpandNotFoundBody) { + v.value = val + v.isSet = true +} + +func (v NullableGetExpandNotFoundBody) IsSet() bool { + return v.isSet +} + +func (v *NullableGetExpandNotFoundBody) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableGetExpandNotFoundBody(val *GetExpandNotFoundBody) *NullableGetExpandNotFoundBody { + return &NullableGetExpandNotFoundBody{value: val, isSet: true} +} + +func (v NullableGetExpandNotFoundBody) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableGetExpandNotFoundBody) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/internal/httpclient-next/model_get_relation_tuples_internal_server_error_body.go b/internal/httpclient-next/model_get_relation_tuples_internal_server_error_body.go new file mode 100644 index 000000000..da3a46b93 --- /dev/null +++ b/internal/httpclient-next/model_get_relation_tuples_internal_server_error_body.go @@ -0,0 +1,300 @@ +/* + * Ory Oathkeeper API + * + * Documentation for all of Ory Oathkeeper's APIs. + * + * API version: 1.0.0 + * Contact: hi@ory.sh + */ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package client + +import ( + "encoding/json" +) + +// GetRelationTuplesInternalServerErrorBody GetRelationTuplesInternalServerErrorBody GetRelationTuplesInternalServerErrorBody get relation tuples internal server error body +type GetRelationTuplesInternalServerErrorBody struct { + // code + Code *int64 `json:"code,omitempty"` + // details + Details []map[string]interface{} `json:"details,omitempty"` + // message + Message *string `json:"message,omitempty"` + // reason + Reason *string `json:"reason,omitempty"` + // request + Request *string `json:"request,omitempty"` + // status + Status *string `json:"status,omitempty"` +} + +// NewGetRelationTuplesInternalServerErrorBody instantiates a new GetRelationTuplesInternalServerErrorBody object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewGetRelationTuplesInternalServerErrorBody() *GetRelationTuplesInternalServerErrorBody { + this := GetRelationTuplesInternalServerErrorBody{} + return &this +} + +// NewGetRelationTuplesInternalServerErrorBodyWithDefaults instantiates a new GetRelationTuplesInternalServerErrorBody object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewGetRelationTuplesInternalServerErrorBodyWithDefaults() *GetRelationTuplesInternalServerErrorBody { + this := GetRelationTuplesInternalServerErrorBody{} + return &this +} + +// GetCode returns the Code field value if set, zero value otherwise. +func (o *GetRelationTuplesInternalServerErrorBody) GetCode() int64 { + if o == nil || o.Code == nil { + var ret int64 + return ret + } + return *o.Code +} + +// GetCodeOk returns a tuple with the Code field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GetRelationTuplesInternalServerErrorBody) GetCodeOk() (*int64, bool) { + if o == nil || o.Code == nil { + return nil, false + } + return o.Code, true +} + +// HasCode returns a boolean if a field has been set. +func (o *GetRelationTuplesInternalServerErrorBody) HasCode() bool { + if o != nil && o.Code != nil { + return true + } + + return false +} + +// SetCode gets a reference to the given int64 and assigns it to the Code field. +func (o *GetRelationTuplesInternalServerErrorBody) SetCode(v int64) { + o.Code = &v +} + +// GetDetails returns the Details field value if set, zero value otherwise. +func (o *GetRelationTuplesInternalServerErrorBody) GetDetails() []map[string]interface{} { + if o == nil || o.Details == nil { + var ret []map[string]interface{} + return ret + } + return o.Details +} + +// GetDetailsOk returns a tuple with the Details field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GetRelationTuplesInternalServerErrorBody) GetDetailsOk() ([]map[string]interface{}, bool) { + if o == nil || o.Details == nil { + return nil, false + } + return o.Details, true +} + +// HasDetails returns a boolean if a field has been set. +func (o *GetRelationTuplesInternalServerErrorBody) HasDetails() bool { + if o != nil && o.Details != nil { + return true + } + + return false +} + +// SetDetails gets a reference to the given []map[string]interface{} and assigns it to the Details field. +func (o *GetRelationTuplesInternalServerErrorBody) SetDetails(v []map[string]interface{}) { + o.Details = v +} + +// GetMessage returns the Message field value if set, zero value otherwise. +func (o *GetRelationTuplesInternalServerErrorBody) GetMessage() string { + if o == nil || o.Message == nil { + var ret string + return ret + } + return *o.Message +} + +// GetMessageOk returns a tuple with the Message field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GetRelationTuplesInternalServerErrorBody) GetMessageOk() (*string, bool) { + if o == nil || o.Message == nil { + return nil, false + } + return o.Message, true +} + +// HasMessage returns a boolean if a field has been set. +func (o *GetRelationTuplesInternalServerErrorBody) HasMessage() bool { + if o != nil && o.Message != nil { + return true + } + + return false +} + +// SetMessage gets a reference to the given string and assigns it to the Message field. +func (o *GetRelationTuplesInternalServerErrorBody) SetMessage(v string) { + o.Message = &v +} + +// GetReason returns the Reason field value if set, zero value otherwise. +func (o *GetRelationTuplesInternalServerErrorBody) GetReason() string { + if o == nil || o.Reason == nil { + var ret string + return ret + } + return *o.Reason +} + +// GetReasonOk returns a tuple with the Reason field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GetRelationTuplesInternalServerErrorBody) GetReasonOk() (*string, bool) { + if o == nil || o.Reason == nil { + return nil, false + } + return o.Reason, true +} + +// HasReason returns a boolean if a field has been set. +func (o *GetRelationTuplesInternalServerErrorBody) HasReason() bool { + if o != nil && o.Reason != nil { + return true + } + + return false +} + +// SetReason gets a reference to the given string and assigns it to the Reason field. +func (o *GetRelationTuplesInternalServerErrorBody) SetReason(v string) { + o.Reason = &v +} + +// GetRequest returns the Request field value if set, zero value otherwise. +func (o *GetRelationTuplesInternalServerErrorBody) GetRequest() string { + if o == nil || o.Request == nil { + var ret string + return ret + } + return *o.Request +} + +// GetRequestOk returns a tuple with the Request field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GetRelationTuplesInternalServerErrorBody) GetRequestOk() (*string, bool) { + if o == nil || o.Request == nil { + return nil, false + } + return o.Request, true +} + +// HasRequest returns a boolean if a field has been set. +func (o *GetRelationTuplesInternalServerErrorBody) HasRequest() bool { + if o != nil && o.Request != nil { + return true + } + + return false +} + +// SetRequest gets a reference to the given string and assigns it to the Request field. +func (o *GetRelationTuplesInternalServerErrorBody) SetRequest(v string) { + o.Request = &v +} + +// GetStatus returns the Status field value if set, zero value otherwise. +func (o *GetRelationTuplesInternalServerErrorBody) GetStatus() string { + if o == nil || o.Status == nil { + var ret string + return ret + } + return *o.Status +} + +// GetStatusOk returns a tuple with the Status field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GetRelationTuplesInternalServerErrorBody) GetStatusOk() (*string, bool) { + if o == nil || o.Status == nil { + return nil, false + } + return o.Status, true +} + +// HasStatus returns a boolean if a field has been set. +func (o *GetRelationTuplesInternalServerErrorBody) HasStatus() bool { + if o != nil && o.Status != nil { + return true + } + + return false +} + +// SetStatus gets a reference to the given string and assigns it to the Status field. +func (o *GetRelationTuplesInternalServerErrorBody) SetStatus(v string) { + o.Status = &v +} + +func (o GetRelationTuplesInternalServerErrorBody) MarshalJSON() ([]byte, error) { + toSerialize := map[string]interface{}{} + if o.Code != nil { + toSerialize["code"] = o.Code + } + if o.Details != nil { + toSerialize["details"] = o.Details + } + if o.Message != nil { + toSerialize["message"] = o.Message + } + if o.Reason != nil { + toSerialize["reason"] = o.Reason + } + if o.Request != nil { + toSerialize["request"] = o.Request + } + if o.Status != nil { + toSerialize["status"] = o.Status + } + return json.Marshal(toSerialize) +} + +type NullableGetRelationTuplesInternalServerErrorBody struct { + value *GetRelationTuplesInternalServerErrorBody + isSet bool +} + +func (v NullableGetRelationTuplesInternalServerErrorBody) Get() *GetRelationTuplesInternalServerErrorBody { + return v.value +} + +func (v *NullableGetRelationTuplesInternalServerErrorBody) Set(val *GetRelationTuplesInternalServerErrorBody) { + v.value = val + v.isSet = true +} + +func (v NullableGetRelationTuplesInternalServerErrorBody) IsSet() bool { + return v.isSet +} + +func (v *NullableGetRelationTuplesInternalServerErrorBody) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableGetRelationTuplesInternalServerErrorBody(val *GetRelationTuplesInternalServerErrorBody) *NullableGetRelationTuplesInternalServerErrorBody { + return &NullableGetRelationTuplesInternalServerErrorBody{value: val, isSet: true} +} + +func (v NullableGetRelationTuplesInternalServerErrorBody) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableGetRelationTuplesInternalServerErrorBody) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/internal/httpclient-next/model_get_relation_tuples_not_found_body.go b/internal/httpclient-next/model_get_relation_tuples_not_found_body.go new file mode 100644 index 000000000..3b9e06d1e --- /dev/null +++ b/internal/httpclient-next/model_get_relation_tuples_not_found_body.go @@ -0,0 +1,300 @@ +/* + * Ory Oathkeeper API + * + * Documentation for all of Ory Oathkeeper's APIs. + * + * API version: 1.0.0 + * Contact: hi@ory.sh + */ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package client + +import ( + "encoding/json" +) + +// GetRelationTuplesNotFoundBody GetRelationTuplesNotFoundBody GetRelationTuplesNotFoundBody get relation tuples not found body +type GetRelationTuplesNotFoundBody struct { + // code + Code *int64 `json:"code,omitempty"` + // details + Details []map[string]interface{} `json:"details,omitempty"` + // message + Message *string `json:"message,omitempty"` + // reason + Reason *string `json:"reason,omitempty"` + // request + Request *string `json:"request,omitempty"` + // status + Status *string `json:"status,omitempty"` +} + +// NewGetRelationTuplesNotFoundBody instantiates a new GetRelationTuplesNotFoundBody object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewGetRelationTuplesNotFoundBody() *GetRelationTuplesNotFoundBody { + this := GetRelationTuplesNotFoundBody{} + return &this +} + +// NewGetRelationTuplesNotFoundBodyWithDefaults instantiates a new GetRelationTuplesNotFoundBody object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewGetRelationTuplesNotFoundBodyWithDefaults() *GetRelationTuplesNotFoundBody { + this := GetRelationTuplesNotFoundBody{} + return &this +} + +// GetCode returns the Code field value if set, zero value otherwise. +func (o *GetRelationTuplesNotFoundBody) GetCode() int64 { + if o == nil || o.Code == nil { + var ret int64 + return ret + } + return *o.Code +} + +// GetCodeOk returns a tuple with the Code field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GetRelationTuplesNotFoundBody) GetCodeOk() (*int64, bool) { + if o == nil || o.Code == nil { + return nil, false + } + return o.Code, true +} + +// HasCode returns a boolean if a field has been set. +func (o *GetRelationTuplesNotFoundBody) HasCode() bool { + if o != nil && o.Code != nil { + return true + } + + return false +} + +// SetCode gets a reference to the given int64 and assigns it to the Code field. +func (o *GetRelationTuplesNotFoundBody) SetCode(v int64) { + o.Code = &v +} + +// GetDetails returns the Details field value if set, zero value otherwise. +func (o *GetRelationTuplesNotFoundBody) GetDetails() []map[string]interface{} { + if o == nil || o.Details == nil { + var ret []map[string]interface{} + return ret + } + return o.Details +} + +// GetDetailsOk returns a tuple with the Details field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GetRelationTuplesNotFoundBody) GetDetailsOk() ([]map[string]interface{}, bool) { + if o == nil || o.Details == nil { + return nil, false + } + return o.Details, true +} + +// HasDetails returns a boolean if a field has been set. +func (o *GetRelationTuplesNotFoundBody) HasDetails() bool { + if o != nil && o.Details != nil { + return true + } + + return false +} + +// SetDetails gets a reference to the given []map[string]interface{} and assigns it to the Details field. +func (o *GetRelationTuplesNotFoundBody) SetDetails(v []map[string]interface{}) { + o.Details = v +} + +// GetMessage returns the Message field value if set, zero value otherwise. +func (o *GetRelationTuplesNotFoundBody) GetMessage() string { + if o == nil || o.Message == nil { + var ret string + return ret + } + return *o.Message +} + +// GetMessageOk returns a tuple with the Message field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GetRelationTuplesNotFoundBody) GetMessageOk() (*string, bool) { + if o == nil || o.Message == nil { + return nil, false + } + return o.Message, true +} + +// HasMessage returns a boolean if a field has been set. +func (o *GetRelationTuplesNotFoundBody) HasMessage() bool { + if o != nil && o.Message != nil { + return true + } + + return false +} + +// SetMessage gets a reference to the given string and assigns it to the Message field. +func (o *GetRelationTuplesNotFoundBody) SetMessage(v string) { + o.Message = &v +} + +// GetReason returns the Reason field value if set, zero value otherwise. +func (o *GetRelationTuplesNotFoundBody) GetReason() string { + if o == nil || o.Reason == nil { + var ret string + return ret + } + return *o.Reason +} + +// GetReasonOk returns a tuple with the Reason field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GetRelationTuplesNotFoundBody) GetReasonOk() (*string, bool) { + if o == nil || o.Reason == nil { + return nil, false + } + return o.Reason, true +} + +// HasReason returns a boolean if a field has been set. +func (o *GetRelationTuplesNotFoundBody) HasReason() bool { + if o != nil && o.Reason != nil { + return true + } + + return false +} + +// SetReason gets a reference to the given string and assigns it to the Reason field. +func (o *GetRelationTuplesNotFoundBody) SetReason(v string) { + o.Reason = &v +} + +// GetRequest returns the Request field value if set, zero value otherwise. +func (o *GetRelationTuplesNotFoundBody) GetRequest() string { + if o == nil || o.Request == nil { + var ret string + return ret + } + return *o.Request +} + +// GetRequestOk returns a tuple with the Request field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GetRelationTuplesNotFoundBody) GetRequestOk() (*string, bool) { + if o == nil || o.Request == nil { + return nil, false + } + return o.Request, true +} + +// HasRequest returns a boolean if a field has been set. +func (o *GetRelationTuplesNotFoundBody) HasRequest() bool { + if o != nil && o.Request != nil { + return true + } + + return false +} + +// SetRequest gets a reference to the given string and assigns it to the Request field. +func (o *GetRelationTuplesNotFoundBody) SetRequest(v string) { + o.Request = &v +} + +// GetStatus returns the Status field value if set, zero value otherwise. +func (o *GetRelationTuplesNotFoundBody) GetStatus() string { + if o == nil || o.Status == nil { + var ret string + return ret + } + return *o.Status +} + +// GetStatusOk returns a tuple with the Status field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GetRelationTuplesNotFoundBody) GetStatusOk() (*string, bool) { + if o == nil || o.Status == nil { + return nil, false + } + return o.Status, true +} + +// HasStatus returns a boolean if a field has been set. +func (o *GetRelationTuplesNotFoundBody) HasStatus() bool { + if o != nil && o.Status != nil { + return true + } + + return false +} + +// SetStatus gets a reference to the given string and assigns it to the Status field. +func (o *GetRelationTuplesNotFoundBody) SetStatus(v string) { + o.Status = &v +} + +func (o GetRelationTuplesNotFoundBody) MarshalJSON() ([]byte, error) { + toSerialize := map[string]interface{}{} + if o.Code != nil { + toSerialize["code"] = o.Code + } + if o.Details != nil { + toSerialize["details"] = o.Details + } + if o.Message != nil { + toSerialize["message"] = o.Message + } + if o.Reason != nil { + toSerialize["reason"] = o.Reason + } + if o.Request != nil { + toSerialize["request"] = o.Request + } + if o.Status != nil { + toSerialize["status"] = o.Status + } + return json.Marshal(toSerialize) +} + +type NullableGetRelationTuplesNotFoundBody struct { + value *GetRelationTuplesNotFoundBody + isSet bool +} + +func (v NullableGetRelationTuplesNotFoundBody) Get() *GetRelationTuplesNotFoundBody { + return v.value +} + +func (v *NullableGetRelationTuplesNotFoundBody) Set(val *GetRelationTuplesNotFoundBody) { + v.value = val + v.isSet = true +} + +func (v NullableGetRelationTuplesNotFoundBody) IsSet() bool { + return v.isSet +} + +func (v *NullableGetRelationTuplesNotFoundBody) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableGetRelationTuplesNotFoundBody(val *GetRelationTuplesNotFoundBody) *NullableGetRelationTuplesNotFoundBody { + return &NullableGetRelationTuplesNotFoundBody{value: val, isSet: true} +} + +func (v NullableGetRelationTuplesNotFoundBody) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableGetRelationTuplesNotFoundBody) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/internal/httpclient-next/model_get_relation_tuples_response.go b/internal/httpclient-next/model_get_relation_tuples_response.go new file mode 100644 index 000000000..af04fea20 --- /dev/null +++ b/internal/httpclient-next/model_get_relation_tuples_response.go @@ -0,0 +1,152 @@ +/* + * Ory Oathkeeper API + * + * Documentation for all of Ory Oathkeeper's APIs. + * + * API version: 1.0.0 + * Contact: hi@ory.sh + */ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package client + +import ( + "encoding/json" +) + +// GetRelationTuplesResponse GetRelationTuplesResponse GetRelationTuplesResponse GetRelationTuplesResponse GetRelationTuplesResponse GetRelationTuplesResponse get relation tuples response +type GetRelationTuplesResponse struct { + // The opaque token to provide in a subsequent request to get the next page. It is the empty string iff this is the last page. + NextPageToken *string `json:"next_page_token,omitempty"` + // relation tuples + RelationTuples []InternalRelationTuple `json:"relation_tuples,omitempty"` +} + +// NewGetRelationTuplesResponse instantiates a new GetRelationTuplesResponse object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewGetRelationTuplesResponse() *GetRelationTuplesResponse { + this := GetRelationTuplesResponse{} + return &this +} + +// NewGetRelationTuplesResponseWithDefaults instantiates a new GetRelationTuplesResponse object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewGetRelationTuplesResponseWithDefaults() *GetRelationTuplesResponse { + this := GetRelationTuplesResponse{} + return &this +} + +// GetNextPageToken returns the NextPageToken field value if set, zero value otherwise. +func (o *GetRelationTuplesResponse) GetNextPageToken() string { + if o == nil || o.NextPageToken == nil { + var ret string + return ret + } + return *o.NextPageToken +} + +// GetNextPageTokenOk returns a tuple with the NextPageToken field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GetRelationTuplesResponse) GetNextPageTokenOk() (*string, bool) { + if o == nil || o.NextPageToken == nil { + return nil, false + } + return o.NextPageToken, true +} + +// HasNextPageToken returns a boolean if a field has been set. +func (o *GetRelationTuplesResponse) HasNextPageToken() bool { + if o != nil && o.NextPageToken != nil { + return true + } + + return false +} + +// SetNextPageToken gets a reference to the given string and assigns it to the NextPageToken field. +func (o *GetRelationTuplesResponse) SetNextPageToken(v string) { + o.NextPageToken = &v +} + +// GetRelationTuples returns the RelationTuples field value if set, zero value otherwise. +func (o *GetRelationTuplesResponse) GetRelationTuples() []InternalRelationTuple { + if o == nil || o.RelationTuples == nil { + var ret []InternalRelationTuple + return ret + } + return o.RelationTuples +} + +// GetRelationTuplesOk returns a tuple with the RelationTuples field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GetRelationTuplesResponse) GetRelationTuplesOk() ([]InternalRelationTuple, bool) { + if o == nil || o.RelationTuples == nil { + return nil, false + } + return o.RelationTuples, true +} + +// HasRelationTuples returns a boolean if a field has been set. +func (o *GetRelationTuplesResponse) HasRelationTuples() bool { + if o != nil && o.RelationTuples != nil { + return true + } + + return false +} + +// SetRelationTuples gets a reference to the given []InternalRelationTuple and assigns it to the RelationTuples field. +func (o *GetRelationTuplesResponse) SetRelationTuples(v []InternalRelationTuple) { + o.RelationTuples = v +} + +func (o GetRelationTuplesResponse) MarshalJSON() ([]byte, error) { + toSerialize := map[string]interface{}{} + if o.NextPageToken != nil { + toSerialize["next_page_token"] = o.NextPageToken + } + if o.RelationTuples != nil { + toSerialize["relation_tuples"] = o.RelationTuples + } + return json.Marshal(toSerialize) +} + +type NullableGetRelationTuplesResponse struct { + value *GetRelationTuplesResponse + isSet bool +} + +func (v NullableGetRelationTuplesResponse) Get() *GetRelationTuplesResponse { + return v.value +} + +func (v *NullableGetRelationTuplesResponse) Set(val *GetRelationTuplesResponse) { + v.value = val + v.isSet = true +} + +func (v NullableGetRelationTuplesResponse) IsSet() bool { + return v.isSet +} + +func (v *NullableGetRelationTuplesResponse) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableGetRelationTuplesResponse(val *GetRelationTuplesResponse) *NullableGetRelationTuplesResponse { + return &NullableGetRelationTuplesResponse{value: val, isSet: true} +} + +func (v NullableGetRelationTuplesResponse) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableGetRelationTuplesResponse) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/internal/httpclient-next/model_health_not_ready_status.go b/internal/httpclient-next/model_health_not_ready_status.go new file mode 100644 index 000000000..846907868 --- /dev/null +++ b/internal/httpclient-next/model_health_not_ready_status.go @@ -0,0 +1,115 @@ +/* + * Ory Oathkeeper API + * + * Documentation for all of Ory Oathkeeper's APIs. + * + * API version: 1.0.0 + * Contact: hi@ory.sh + */ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package client + +import ( + "encoding/json" +) + +// HealthNotReadyStatus struct for HealthNotReadyStatus +type HealthNotReadyStatus struct { + // Errors contains a list of errors that caused the not ready status. + Errors *map[string]string `json:"errors,omitempty"` +} + +// NewHealthNotReadyStatus instantiates a new HealthNotReadyStatus object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewHealthNotReadyStatus() *HealthNotReadyStatus { + this := HealthNotReadyStatus{} + return &this +} + +// NewHealthNotReadyStatusWithDefaults instantiates a new HealthNotReadyStatus object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewHealthNotReadyStatusWithDefaults() *HealthNotReadyStatus { + this := HealthNotReadyStatus{} + return &this +} + +// GetErrors returns the Errors field value if set, zero value otherwise. +func (o *HealthNotReadyStatus) GetErrors() map[string]string { + if o == nil || o.Errors == nil { + var ret map[string]string + return ret + } + return *o.Errors +} + +// GetErrorsOk returns a tuple with the Errors field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *HealthNotReadyStatus) GetErrorsOk() (*map[string]string, bool) { + if o == nil || o.Errors == nil { + return nil, false + } + return o.Errors, true +} + +// HasErrors returns a boolean if a field has been set. +func (o *HealthNotReadyStatus) HasErrors() bool { + if o != nil && o.Errors != nil { + return true + } + + return false +} + +// SetErrors gets a reference to the given map[string]string and assigns it to the Errors field. +func (o *HealthNotReadyStatus) SetErrors(v map[string]string) { + o.Errors = &v +} + +func (o HealthNotReadyStatus) MarshalJSON() ([]byte, error) { + toSerialize := map[string]interface{}{} + if o.Errors != nil { + toSerialize["errors"] = o.Errors + } + return json.Marshal(toSerialize) +} + +type NullableHealthNotReadyStatus struct { + value *HealthNotReadyStatus + isSet bool +} + +func (v NullableHealthNotReadyStatus) Get() *HealthNotReadyStatus { + return v.value +} + +func (v *NullableHealthNotReadyStatus) Set(val *HealthNotReadyStatus) { + v.value = val + v.isSet = true +} + +func (v NullableHealthNotReadyStatus) IsSet() bool { + return v.isSet +} + +func (v *NullableHealthNotReadyStatus) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableHealthNotReadyStatus(val *HealthNotReadyStatus) *NullableHealthNotReadyStatus { + return &NullableHealthNotReadyStatus{value: val, isSet: true} +} + +func (v NullableHealthNotReadyStatus) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableHealthNotReadyStatus) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/internal/httpclient-next/model_health_status.go b/internal/httpclient-next/model_health_status.go new file mode 100644 index 000000000..ae9e9dbad --- /dev/null +++ b/internal/httpclient-next/model_health_status.go @@ -0,0 +1,115 @@ +/* + * Ory Oathkeeper API + * + * Documentation for all of Ory Oathkeeper's APIs. + * + * API version: 1.0.0 + * Contact: hi@ory.sh + */ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package client + +import ( + "encoding/json" +) + +// HealthStatus HealthStatus health status +type HealthStatus struct { + // Status always contains \"ok\". + Status *string `json:"status,omitempty"` +} + +// NewHealthStatus instantiates a new HealthStatus object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewHealthStatus() *HealthStatus { + this := HealthStatus{} + return &this +} + +// NewHealthStatusWithDefaults instantiates a new HealthStatus object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewHealthStatusWithDefaults() *HealthStatus { + this := HealthStatus{} + return &this +} + +// GetStatus returns the Status field value if set, zero value otherwise. +func (o *HealthStatus) GetStatus() string { + if o == nil || o.Status == nil { + var ret string + return ret + } + return *o.Status +} + +// GetStatusOk returns a tuple with the Status field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *HealthStatus) GetStatusOk() (*string, bool) { + if o == nil || o.Status == nil { + return nil, false + } + return o.Status, true +} + +// HasStatus returns a boolean if a field has been set. +func (o *HealthStatus) HasStatus() bool { + if o != nil && o.Status != nil { + return true + } + + return false +} + +// SetStatus gets a reference to the given string and assigns it to the Status field. +func (o *HealthStatus) SetStatus(v string) { + o.Status = &v +} + +func (o HealthStatus) MarshalJSON() ([]byte, error) { + toSerialize := map[string]interface{}{} + if o.Status != nil { + toSerialize["status"] = o.Status + } + return json.Marshal(toSerialize) +} + +type NullableHealthStatus struct { + value *HealthStatus + isSet bool +} + +func (v NullableHealthStatus) Get() *HealthStatus { + return v.value +} + +func (v *NullableHealthStatus) Set(val *HealthStatus) { + v.value = val + v.isSet = true +} + +func (v NullableHealthStatus) IsSet() bool { + return v.isSet +} + +func (v *NullableHealthStatus) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableHealthStatus(val *HealthStatus) *NullableHealthStatus { + return &NullableHealthStatus{value: val, isSet: true} +} + +func (v NullableHealthStatus) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableHealthStatus) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/internal/httpclient-next/model_inline_response_200.go b/internal/httpclient-next/model_inline_response_200.go new file mode 100644 index 000000000..e28a7d255 --- /dev/null +++ b/internal/httpclient-next/model_inline_response_200.go @@ -0,0 +1,108 @@ +/* + * Ory Oathkeeper API + * + * Documentation for all of Ory Oathkeeper's APIs. + * + * API version: 1.0.0 + * Contact: hi@ory.sh + */ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package client + +import ( + "encoding/json" +) + +// InlineResponse200 struct for InlineResponse200 +type InlineResponse200 struct { + // Always \"ok\". + Status string `json:"status"` +} + +// NewInlineResponse200 instantiates a new InlineResponse200 object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewInlineResponse200(status string) *InlineResponse200 { + this := InlineResponse200{} + this.Status = status + return &this +} + +// NewInlineResponse200WithDefaults instantiates a new InlineResponse200 object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewInlineResponse200WithDefaults() *InlineResponse200 { + this := InlineResponse200{} + return &this +} + +// GetStatus returns the Status field value +func (o *InlineResponse200) GetStatus() string { + if o == nil { + var ret string + return ret + } + + return o.Status +} + +// GetStatusOk returns a tuple with the Status field value +// and a boolean to check if the value has been set. +func (o *InlineResponse200) GetStatusOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Status, true +} + +// SetStatus sets field value +func (o *InlineResponse200) SetStatus(v string) { + o.Status = v +} + +func (o InlineResponse200) MarshalJSON() ([]byte, error) { + toSerialize := map[string]interface{}{} + if true { + toSerialize["status"] = o.Status + } + return json.Marshal(toSerialize) +} + +type NullableInlineResponse200 struct { + value *InlineResponse200 + isSet bool +} + +func (v NullableInlineResponse200) Get() *InlineResponse200 { + return v.value +} + +func (v *NullableInlineResponse200) Set(val *InlineResponse200) { + v.value = val + v.isSet = true +} + +func (v NullableInlineResponse200) IsSet() bool { + return v.isSet +} + +func (v *NullableInlineResponse200) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableInlineResponse200(val *InlineResponse200) *NullableInlineResponse200 { + return &NullableInlineResponse200{value: val, isSet: true} +} + +func (v NullableInlineResponse200) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableInlineResponse200) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/internal/httpclient-next/model_inline_response_200_1.go b/internal/httpclient-next/model_inline_response_200_1.go new file mode 100644 index 000000000..f813a822e --- /dev/null +++ b/internal/httpclient-next/model_inline_response_200_1.go @@ -0,0 +1,108 @@ +/* + * Ory Oathkeeper API + * + * Documentation for all of Ory Oathkeeper's APIs. + * + * API version: 1.0.0 + * Contact: hi@ory.sh + */ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package client + +import ( + "encoding/json" +) + +// InlineResponse2001 struct for InlineResponse2001 +type InlineResponse2001 struct { + // The version of Ory Keto. + Version string `json:"version"` +} + +// NewInlineResponse2001 instantiates a new InlineResponse2001 object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewInlineResponse2001(version string) *InlineResponse2001 { + this := InlineResponse2001{} + this.Version = version + return &this +} + +// NewInlineResponse2001WithDefaults instantiates a new InlineResponse2001 object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewInlineResponse2001WithDefaults() *InlineResponse2001 { + this := InlineResponse2001{} + return &this +} + +// GetVersion returns the Version field value +func (o *InlineResponse2001) GetVersion() string { + if o == nil { + var ret string + return ret + } + + return o.Version +} + +// GetVersionOk returns a tuple with the Version field value +// and a boolean to check if the value has been set. +func (o *InlineResponse2001) GetVersionOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Version, true +} + +// SetVersion sets field value +func (o *InlineResponse2001) SetVersion(v string) { + o.Version = v +} + +func (o InlineResponse2001) MarshalJSON() ([]byte, error) { + toSerialize := map[string]interface{}{} + if true { + toSerialize["version"] = o.Version + } + return json.Marshal(toSerialize) +} + +type NullableInlineResponse2001 struct { + value *InlineResponse2001 + isSet bool +} + +func (v NullableInlineResponse2001) Get() *InlineResponse2001 { + return v.value +} + +func (v *NullableInlineResponse2001) Set(val *InlineResponse2001) { + v.value = val + v.isSet = true +} + +func (v NullableInlineResponse2001) IsSet() bool { + return v.isSet +} + +func (v *NullableInlineResponse2001) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableInlineResponse2001(val *InlineResponse2001) *NullableInlineResponse2001 { + return &NullableInlineResponse2001{value: val, isSet: true} +} + +func (v NullableInlineResponse2001) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableInlineResponse2001) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/internal/httpclient-next/model_inline_response_503.go b/internal/httpclient-next/model_inline_response_503.go new file mode 100644 index 000000000..72a78e679 --- /dev/null +++ b/internal/httpclient-next/model_inline_response_503.go @@ -0,0 +1,108 @@ +/* + * Ory Oathkeeper API + * + * Documentation for all of Ory Oathkeeper's APIs. + * + * API version: 1.0.0 + * Contact: hi@ory.sh + */ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package client + +import ( + "encoding/json" +) + +// InlineResponse503 struct for InlineResponse503 +type InlineResponse503 struct { + // Errors contains a list of errors that caused the not ready status. + Errors map[string]string `json:"errors"` +} + +// NewInlineResponse503 instantiates a new InlineResponse503 object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewInlineResponse503(errors map[string]string) *InlineResponse503 { + this := InlineResponse503{} + this.Errors = errors + return &this +} + +// NewInlineResponse503WithDefaults instantiates a new InlineResponse503 object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewInlineResponse503WithDefaults() *InlineResponse503 { + this := InlineResponse503{} + return &this +} + +// GetErrors returns the Errors field value +func (o *InlineResponse503) GetErrors() map[string]string { + if o == nil { + var ret map[string]string + return ret + } + + return o.Errors +} + +// GetErrorsOk returns a tuple with the Errors field value +// and a boolean to check if the value has been set. +func (o *InlineResponse503) GetErrorsOk() (*map[string]string, bool) { + if o == nil { + return nil, false + } + return &o.Errors, true +} + +// SetErrors sets field value +func (o *InlineResponse503) SetErrors(v map[string]string) { + o.Errors = v +} + +func (o InlineResponse503) MarshalJSON() ([]byte, error) { + toSerialize := map[string]interface{}{} + if true { + toSerialize["errors"] = o.Errors + } + return json.Marshal(toSerialize) +} + +type NullableInlineResponse503 struct { + value *InlineResponse503 + isSet bool +} + +func (v NullableInlineResponse503) Get() *InlineResponse503 { + return v.value +} + +func (v *NullableInlineResponse503) Set(val *InlineResponse503) { + v.value = val + v.isSet = true +} + +func (v NullableInlineResponse503) IsSet() bool { + return v.isSet +} + +func (v *NullableInlineResponse503) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableInlineResponse503(val *InlineResponse503) *NullableInlineResponse503 { + return &NullableInlineResponse503{value: val, isSet: true} +} + +func (v NullableInlineResponse503) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableInlineResponse503) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/internal/httpclient-next/model_internal_relation_tuple.go b/internal/httpclient-next/model_internal_relation_tuple.go new file mode 100644 index 000000000..b11939416 --- /dev/null +++ b/internal/httpclient-next/model_internal_relation_tuple.go @@ -0,0 +1,241 @@ +/* + * Ory Oathkeeper API + * + * Documentation for all of Ory Oathkeeper's APIs. + * + * API version: 1.0.0 + * Contact: hi@ory.sh + */ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package client + +import ( + "encoding/json" +) + +// InternalRelationTuple struct for InternalRelationTuple +type InternalRelationTuple struct { + // Namespace of the Relation Tuple + Namespace string `json:"namespace"` + // Object of the Relation Tuple + Object string `json:"object"` + // Relation of the Relation Tuple + Relation string `json:"relation"` + // SubjectID of the Relation Tuple Either SubjectSet or SubjectID are required. + SubjectId *string `json:"subject_id,omitempty"` + SubjectSet *SubjectSet `json:"subject_set,omitempty"` +} + +// NewInternalRelationTuple instantiates a new InternalRelationTuple object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewInternalRelationTuple(namespace string, object string, relation string) *InternalRelationTuple { + this := InternalRelationTuple{} + this.Namespace = namespace + this.Object = object + this.Relation = relation + return &this +} + +// NewInternalRelationTupleWithDefaults instantiates a new InternalRelationTuple object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewInternalRelationTupleWithDefaults() *InternalRelationTuple { + this := InternalRelationTuple{} + return &this +} + +// GetNamespace returns the Namespace field value +func (o *InternalRelationTuple) GetNamespace() string { + if o == nil { + var ret string + return ret + } + + return o.Namespace +} + +// GetNamespaceOk returns a tuple with the Namespace field value +// and a boolean to check if the value has been set. +func (o *InternalRelationTuple) GetNamespaceOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Namespace, true +} + +// SetNamespace sets field value +func (o *InternalRelationTuple) SetNamespace(v string) { + o.Namespace = v +} + +// GetObject returns the Object field value +func (o *InternalRelationTuple) GetObject() string { + if o == nil { + var ret string + return ret + } + + return o.Object +} + +// GetObjectOk returns a tuple with the Object field value +// and a boolean to check if the value has been set. +func (o *InternalRelationTuple) GetObjectOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Object, true +} + +// SetObject sets field value +func (o *InternalRelationTuple) SetObject(v string) { + o.Object = v +} + +// GetRelation returns the Relation field value +func (o *InternalRelationTuple) GetRelation() string { + if o == nil { + var ret string + return ret + } + + return o.Relation +} + +// GetRelationOk returns a tuple with the Relation field value +// and a boolean to check if the value has been set. +func (o *InternalRelationTuple) GetRelationOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Relation, true +} + +// SetRelation sets field value +func (o *InternalRelationTuple) SetRelation(v string) { + o.Relation = v +} + +// GetSubjectId returns the SubjectId field value if set, zero value otherwise. +func (o *InternalRelationTuple) GetSubjectId() string { + if o == nil || o.SubjectId == nil { + var ret string + return ret + } + return *o.SubjectId +} + +// GetSubjectIdOk returns a tuple with the SubjectId field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *InternalRelationTuple) GetSubjectIdOk() (*string, bool) { + if o == nil || o.SubjectId == nil { + return nil, false + } + return o.SubjectId, true +} + +// HasSubjectId returns a boolean if a field has been set. +func (o *InternalRelationTuple) HasSubjectId() bool { + if o != nil && o.SubjectId != nil { + return true + } + + return false +} + +// SetSubjectId gets a reference to the given string and assigns it to the SubjectId field. +func (o *InternalRelationTuple) SetSubjectId(v string) { + o.SubjectId = &v +} + +// GetSubjectSet returns the SubjectSet field value if set, zero value otherwise. +func (o *InternalRelationTuple) GetSubjectSet() SubjectSet { + if o == nil || o.SubjectSet == nil { + var ret SubjectSet + return ret + } + return *o.SubjectSet +} + +// GetSubjectSetOk returns a tuple with the SubjectSet field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *InternalRelationTuple) GetSubjectSetOk() (*SubjectSet, bool) { + if o == nil || o.SubjectSet == nil { + return nil, false + } + return o.SubjectSet, true +} + +// HasSubjectSet returns a boolean if a field has been set. +func (o *InternalRelationTuple) HasSubjectSet() bool { + if o != nil && o.SubjectSet != nil { + return true + } + + return false +} + +// SetSubjectSet gets a reference to the given SubjectSet and assigns it to the SubjectSet field. +func (o *InternalRelationTuple) SetSubjectSet(v SubjectSet) { + o.SubjectSet = &v +} + +func (o InternalRelationTuple) MarshalJSON() ([]byte, error) { + toSerialize := map[string]interface{}{} + if true { + toSerialize["namespace"] = o.Namespace + } + if true { + toSerialize["object"] = o.Object + } + if true { + toSerialize["relation"] = o.Relation + } + if o.SubjectId != nil { + toSerialize["subject_id"] = o.SubjectId + } + if o.SubjectSet != nil { + toSerialize["subject_set"] = o.SubjectSet + } + return json.Marshal(toSerialize) +} + +type NullableInternalRelationTuple struct { + value *InternalRelationTuple + isSet bool +} + +func (v NullableInternalRelationTuple) Get() *InternalRelationTuple { + return v.value +} + +func (v *NullableInternalRelationTuple) Set(val *InternalRelationTuple) { + v.value = val + v.isSet = true +} + +func (v NullableInternalRelationTuple) IsSet() bool { + return v.isSet +} + +func (v *NullableInternalRelationTuple) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableInternalRelationTuple(val *InternalRelationTuple) *NullableInternalRelationTuple { + return &NullableInternalRelationTuple{value: val, isSet: true} +} + +func (v NullableInternalRelationTuple) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableInternalRelationTuple) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/internal/httpclient-next/model_is_instance_alive_internal_server_error_body.go b/internal/httpclient-next/model_is_instance_alive_internal_server_error_body.go new file mode 100644 index 000000000..c7c3b0afc --- /dev/null +++ b/internal/httpclient-next/model_is_instance_alive_internal_server_error_body.go @@ -0,0 +1,300 @@ +/* + * Ory Oathkeeper API + * + * Documentation for all of Ory Oathkeeper's APIs. + * + * API version: 1.0.0 + * Contact: hi@ory.sh + */ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package client + +import ( + "encoding/json" +) + +// IsInstanceAliveInternalServerErrorBody IsInstanceAliveInternalServerErrorBody IsInstanceAliveInternalServerErrorBody IsInstanceAliveInternalServerErrorBody IsInstanceAliveInternalServerErrorBody is instance alive internal server error body +type IsInstanceAliveInternalServerErrorBody struct { + // code + Code *int64 `json:"code,omitempty"` + // details + Details []map[string]interface{} `json:"details,omitempty"` + // message + Message *string `json:"message,omitempty"` + // reason + Reason *string `json:"reason,omitempty"` + // request + Request *string `json:"request,omitempty"` + // status + Status *string `json:"status,omitempty"` +} + +// NewIsInstanceAliveInternalServerErrorBody instantiates a new IsInstanceAliveInternalServerErrorBody object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewIsInstanceAliveInternalServerErrorBody() *IsInstanceAliveInternalServerErrorBody { + this := IsInstanceAliveInternalServerErrorBody{} + return &this +} + +// NewIsInstanceAliveInternalServerErrorBodyWithDefaults instantiates a new IsInstanceAliveInternalServerErrorBody object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewIsInstanceAliveInternalServerErrorBodyWithDefaults() *IsInstanceAliveInternalServerErrorBody { + this := IsInstanceAliveInternalServerErrorBody{} + return &this +} + +// GetCode returns the Code field value if set, zero value otherwise. +func (o *IsInstanceAliveInternalServerErrorBody) GetCode() int64 { + if o == nil || o.Code == nil { + var ret int64 + return ret + } + return *o.Code +} + +// GetCodeOk returns a tuple with the Code field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *IsInstanceAliveInternalServerErrorBody) GetCodeOk() (*int64, bool) { + if o == nil || o.Code == nil { + return nil, false + } + return o.Code, true +} + +// HasCode returns a boolean if a field has been set. +func (o *IsInstanceAliveInternalServerErrorBody) HasCode() bool { + if o != nil && o.Code != nil { + return true + } + + return false +} + +// SetCode gets a reference to the given int64 and assigns it to the Code field. +func (o *IsInstanceAliveInternalServerErrorBody) SetCode(v int64) { + o.Code = &v +} + +// GetDetails returns the Details field value if set, zero value otherwise. +func (o *IsInstanceAliveInternalServerErrorBody) GetDetails() []map[string]interface{} { + if o == nil || o.Details == nil { + var ret []map[string]interface{} + return ret + } + return o.Details +} + +// GetDetailsOk returns a tuple with the Details field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *IsInstanceAliveInternalServerErrorBody) GetDetailsOk() ([]map[string]interface{}, bool) { + if o == nil || o.Details == nil { + return nil, false + } + return o.Details, true +} + +// HasDetails returns a boolean if a field has been set. +func (o *IsInstanceAliveInternalServerErrorBody) HasDetails() bool { + if o != nil && o.Details != nil { + return true + } + + return false +} + +// SetDetails gets a reference to the given []map[string]interface{} and assigns it to the Details field. +func (o *IsInstanceAliveInternalServerErrorBody) SetDetails(v []map[string]interface{}) { + o.Details = v +} + +// GetMessage returns the Message field value if set, zero value otherwise. +func (o *IsInstanceAliveInternalServerErrorBody) GetMessage() string { + if o == nil || o.Message == nil { + var ret string + return ret + } + return *o.Message +} + +// GetMessageOk returns a tuple with the Message field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *IsInstanceAliveInternalServerErrorBody) GetMessageOk() (*string, bool) { + if o == nil || o.Message == nil { + return nil, false + } + return o.Message, true +} + +// HasMessage returns a boolean if a field has been set. +func (o *IsInstanceAliveInternalServerErrorBody) HasMessage() bool { + if o != nil && o.Message != nil { + return true + } + + return false +} + +// SetMessage gets a reference to the given string and assigns it to the Message field. +func (o *IsInstanceAliveInternalServerErrorBody) SetMessage(v string) { + o.Message = &v +} + +// GetReason returns the Reason field value if set, zero value otherwise. +func (o *IsInstanceAliveInternalServerErrorBody) GetReason() string { + if o == nil || o.Reason == nil { + var ret string + return ret + } + return *o.Reason +} + +// GetReasonOk returns a tuple with the Reason field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *IsInstanceAliveInternalServerErrorBody) GetReasonOk() (*string, bool) { + if o == nil || o.Reason == nil { + return nil, false + } + return o.Reason, true +} + +// HasReason returns a boolean if a field has been set. +func (o *IsInstanceAliveInternalServerErrorBody) HasReason() bool { + if o != nil && o.Reason != nil { + return true + } + + return false +} + +// SetReason gets a reference to the given string and assigns it to the Reason field. +func (o *IsInstanceAliveInternalServerErrorBody) SetReason(v string) { + o.Reason = &v +} + +// GetRequest returns the Request field value if set, zero value otherwise. +func (o *IsInstanceAliveInternalServerErrorBody) GetRequest() string { + if o == nil || o.Request == nil { + var ret string + return ret + } + return *o.Request +} + +// GetRequestOk returns a tuple with the Request field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *IsInstanceAliveInternalServerErrorBody) GetRequestOk() (*string, bool) { + if o == nil || o.Request == nil { + return nil, false + } + return o.Request, true +} + +// HasRequest returns a boolean if a field has been set. +func (o *IsInstanceAliveInternalServerErrorBody) HasRequest() bool { + if o != nil && o.Request != nil { + return true + } + + return false +} + +// SetRequest gets a reference to the given string and assigns it to the Request field. +func (o *IsInstanceAliveInternalServerErrorBody) SetRequest(v string) { + o.Request = &v +} + +// GetStatus returns the Status field value if set, zero value otherwise. +func (o *IsInstanceAliveInternalServerErrorBody) GetStatus() string { + if o == nil || o.Status == nil { + var ret string + return ret + } + return *o.Status +} + +// GetStatusOk returns a tuple with the Status field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *IsInstanceAliveInternalServerErrorBody) GetStatusOk() (*string, bool) { + if o == nil || o.Status == nil { + return nil, false + } + return o.Status, true +} + +// HasStatus returns a boolean if a field has been set. +func (o *IsInstanceAliveInternalServerErrorBody) HasStatus() bool { + if o != nil && o.Status != nil { + return true + } + + return false +} + +// SetStatus gets a reference to the given string and assigns it to the Status field. +func (o *IsInstanceAliveInternalServerErrorBody) SetStatus(v string) { + o.Status = &v +} + +func (o IsInstanceAliveInternalServerErrorBody) MarshalJSON() ([]byte, error) { + toSerialize := map[string]interface{}{} + if o.Code != nil { + toSerialize["code"] = o.Code + } + if o.Details != nil { + toSerialize["details"] = o.Details + } + if o.Message != nil { + toSerialize["message"] = o.Message + } + if o.Reason != nil { + toSerialize["reason"] = o.Reason + } + if o.Request != nil { + toSerialize["request"] = o.Request + } + if o.Status != nil { + toSerialize["status"] = o.Status + } + return json.Marshal(toSerialize) +} + +type NullableIsInstanceAliveInternalServerErrorBody struct { + value *IsInstanceAliveInternalServerErrorBody + isSet bool +} + +func (v NullableIsInstanceAliveInternalServerErrorBody) Get() *IsInstanceAliveInternalServerErrorBody { + return v.value +} + +func (v *NullableIsInstanceAliveInternalServerErrorBody) Set(val *IsInstanceAliveInternalServerErrorBody) { + v.value = val + v.isSet = true +} + +func (v NullableIsInstanceAliveInternalServerErrorBody) IsSet() bool { + return v.isSet +} + +func (v *NullableIsInstanceAliveInternalServerErrorBody) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableIsInstanceAliveInternalServerErrorBody(val *IsInstanceAliveInternalServerErrorBody) *NullableIsInstanceAliveInternalServerErrorBody { + return &NullableIsInstanceAliveInternalServerErrorBody{value: val, isSet: true} +} + +func (v NullableIsInstanceAliveInternalServerErrorBody) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableIsInstanceAliveInternalServerErrorBody) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/internal/httpclient-next/model_patch_delta.go b/internal/httpclient-next/model_patch_delta.go new file mode 100644 index 000000000..4a9723ca7 --- /dev/null +++ b/internal/httpclient-next/model_patch_delta.go @@ -0,0 +1,151 @@ +/* + * Ory Oathkeeper API + * + * Documentation for all of Ory Oathkeeper's APIs. + * + * API version: 1.0.0 + * Contact: hi@ory.sh + */ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package client + +import ( + "encoding/json" +) + +// PatchDelta PatchDelta PatchDelta PatchDelta PatchDelta PatchDelta PatchDelta patch delta +type PatchDelta struct { + // action + Action *string `json:"action,omitempty"` + RelationTuple *InternalRelationTuple `json:"relation_tuple,omitempty"` +} + +// NewPatchDelta instantiates a new PatchDelta object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewPatchDelta() *PatchDelta { + this := PatchDelta{} + return &this +} + +// NewPatchDeltaWithDefaults instantiates a new PatchDelta object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewPatchDeltaWithDefaults() *PatchDelta { + this := PatchDelta{} + return &this +} + +// GetAction returns the Action field value if set, zero value otherwise. +func (o *PatchDelta) GetAction() string { + if o == nil || o.Action == nil { + var ret string + return ret + } + return *o.Action +} + +// GetActionOk returns a tuple with the Action field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PatchDelta) GetActionOk() (*string, bool) { + if o == nil || o.Action == nil { + return nil, false + } + return o.Action, true +} + +// HasAction returns a boolean if a field has been set. +func (o *PatchDelta) HasAction() bool { + if o != nil && o.Action != nil { + return true + } + + return false +} + +// SetAction gets a reference to the given string and assigns it to the Action field. +func (o *PatchDelta) SetAction(v string) { + o.Action = &v +} + +// GetRelationTuple returns the RelationTuple field value if set, zero value otherwise. +func (o *PatchDelta) GetRelationTuple() InternalRelationTuple { + if o == nil || o.RelationTuple == nil { + var ret InternalRelationTuple + return ret + } + return *o.RelationTuple +} + +// GetRelationTupleOk returns a tuple with the RelationTuple field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PatchDelta) GetRelationTupleOk() (*InternalRelationTuple, bool) { + if o == nil || o.RelationTuple == nil { + return nil, false + } + return o.RelationTuple, true +} + +// HasRelationTuple returns a boolean if a field has been set. +func (o *PatchDelta) HasRelationTuple() bool { + if o != nil && o.RelationTuple != nil { + return true + } + + return false +} + +// SetRelationTuple gets a reference to the given InternalRelationTuple and assigns it to the RelationTuple field. +func (o *PatchDelta) SetRelationTuple(v InternalRelationTuple) { + o.RelationTuple = &v +} + +func (o PatchDelta) MarshalJSON() ([]byte, error) { + toSerialize := map[string]interface{}{} + if o.Action != nil { + toSerialize["action"] = o.Action + } + if o.RelationTuple != nil { + toSerialize["relation_tuple"] = o.RelationTuple + } + return json.Marshal(toSerialize) +} + +type NullablePatchDelta struct { + value *PatchDelta + isSet bool +} + +func (v NullablePatchDelta) Get() *PatchDelta { + return v.value +} + +func (v *NullablePatchDelta) Set(val *PatchDelta) { + v.value = val + v.isSet = true +} + +func (v NullablePatchDelta) IsSet() bool { + return v.isSet +} + +func (v *NullablePatchDelta) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullablePatchDelta(val *PatchDelta) *NullablePatchDelta { + return &NullablePatchDelta{value: val, isSet: true} +} + +func (v NullablePatchDelta) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullablePatchDelta) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/internal/httpclient-next/model_patch_relation_tuples_bad_request_body.go b/internal/httpclient-next/model_patch_relation_tuples_bad_request_body.go new file mode 100644 index 000000000..017824f52 --- /dev/null +++ b/internal/httpclient-next/model_patch_relation_tuples_bad_request_body.go @@ -0,0 +1,300 @@ +/* + * Ory Oathkeeper API + * + * Documentation for all of Ory Oathkeeper's APIs. + * + * API version: 1.0.0 + * Contact: hi@ory.sh + */ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package client + +import ( + "encoding/json" +) + +// PatchRelationTuplesBadRequestBody PatchRelationTuplesBadRequestBody PatchRelationTuplesBadRequestBody patch relation tuples bad request body +type PatchRelationTuplesBadRequestBody struct { + // code + Code *int64 `json:"code,omitempty"` + // details + Details []map[string]interface{} `json:"details,omitempty"` + // message + Message *string `json:"message,omitempty"` + // reason + Reason *string `json:"reason,omitempty"` + // request + Request *string `json:"request,omitempty"` + // status + Status *string `json:"status,omitempty"` +} + +// NewPatchRelationTuplesBadRequestBody instantiates a new PatchRelationTuplesBadRequestBody object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewPatchRelationTuplesBadRequestBody() *PatchRelationTuplesBadRequestBody { + this := PatchRelationTuplesBadRequestBody{} + return &this +} + +// NewPatchRelationTuplesBadRequestBodyWithDefaults instantiates a new PatchRelationTuplesBadRequestBody object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewPatchRelationTuplesBadRequestBodyWithDefaults() *PatchRelationTuplesBadRequestBody { + this := PatchRelationTuplesBadRequestBody{} + return &this +} + +// GetCode returns the Code field value if set, zero value otherwise. +func (o *PatchRelationTuplesBadRequestBody) GetCode() int64 { + if o == nil || o.Code == nil { + var ret int64 + return ret + } + return *o.Code +} + +// GetCodeOk returns a tuple with the Code field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PatchRelationTuplesBadRequestBody) GetCodeOk() (*int64, bool) { + if o == nil || o.Code == nil { + return nil, false + } + return o.Code, true +} + +// HasCode returns a boolean if a field has been set. +func (o *PatchRelationTuplesBadRequestBody) HasCode() bool { + if o != nil && o.Code != nil { + return true + } + + return false +} + +// SetCode gets a reference to the given int64 and assigns it to the Code field. +func (o *PatchRelationTuplesBadRequestBody) SetCode(v int64) { + o.Code = &v +} + +// GetDetails returns the Details field value if set, zero value otherwise. +func (o *PatchRelationTuplesBadRequestBody) GetDetails() []map[string]interface{} { + if o == nil || o.Details == nil { + var ret []map[string]interface{} + return ret + } + return o.Details +} + +// GetDetailsOk returns a tuple with the Details field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PatchRelationTuplesBadRequestBody) GetDetailsOk() ([]map[string]interface{}, bool) { + if o == nil || o.Details == nil { + return nil, false + } + return o.Details, true +} + +// HasDetails returns a boolean if a field has been set. +func (o *PatchRelationTuplesBadRequestBody) HasDetails() bool { + if o != nil && o.Details != nil { + return true + } + + return false +} + +// SetDetails gets a reference to the given []map[string]interface{} and assigns it to the Details field. +func (o *PatchRelationTuplesBadRequestBody) SetDetails(v []map[string]interface{}) { + o.Details = v +} + +// GetMessage returns the Message field value if set, zero value otherwise. +func (o *PatchRelationTuplesBadRequestBody) GetMessage() string { + if o == nil || o.Message == nil { + var ret string + return ret + } + return *o.Message +} + +// GetMessageOk returns a tuple with the Message field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PatchRelationTuplesBadRequestBody) GetMessageOk() (*string, bool) { + if o == nil || o.Message == nil { + return nil, false + } + return o.Message, true +} + +// HasMessage returns a boolean if a field has been set. +func (o *PatchRelationTuplesBadRequestBody) HasMessage() bool { + if o != nil && o.Message != nil { + return true + } + + return false +} + +// SetMessage gets a reference to the given string and assigns it to the Message field. +func (o *PatchRelationTuplesBadRequestBody) SetMessage(v string) { + o.Message = &v +} + +// GetReason returns the Reason field value if set, zero value otherwise. +func (o *PatchRelationTuplesBadRequestBody) GetReason() string { + if o == nil || o.Reason == nil { + var ret string + return ret + } + return *o.Reason +} + +// GetReasonOk returns a tuple with the Reason field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PatchRelationTuplesBadRequestBody) GetReasonOk() (*string, bool) { + if o == nil || o.Reason == nil { + return nil, false + } + return o.Reason, true +} + +// HasReason returns a boolean if a field has been set. +func (o *PatchRelationTuplesBadRequestBody) HasReason() bool { + if o != nil && o.Reason != nil { + return true + } + + return false +} + +// SetReason gets a reference to the given string and assigns it to the Reason field. +func (o *PatchRelationTuplesBadRequestBody) SetReason(v string) { + o.Reason = &v +} + +// GetRequest returns the Request field value if set, zero value otherwise. +func (o *PatchRelationTuplesBadRequestBody) GetRequest() string { + if o == nil || o.Request == nil { + var ret string + return ret + } + return *o.Request +} + +// GetRequestOk returns a tuple with the Request field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PatchRelationTuplesBadRequestBody) GetRequestOk() (*string, bool) { + if o == nil || o.Request == nil { + return nil, false + } + return o.Request, true +} + +// HasRequest returns a boolean if a field has been set. +func (o *PatchRelationTuplesBadRequestBody) HasRequest() bool { + if o != nil && o.Request != nil { + return true + } + + return false +} + +// SetRequest gets a reference to the given string and assigns it to the Request field. +func (o *PatchRelationTuplesBadRequestBody) SetRequest(v string) { + o.Request = &v +} + +// GetStatus returns the Status field value if set, zero value otherwise. +func (o *PatchRelationTuplesBadRequestBody) GetStatus() string { + if o == nil || o.Status == nil { + var ret string + return ret + } + return *o.Status +} + +// GetStatusOk returns a tuple with the Status field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PatchRelationTuplesBadRequestBody) GetStatusOk() (*string, bool) { + if o == nil || o.Status == nil { + return nil, false + } + return o.Status, true +} + +// HasStatus returns a boolean if a field has been set. +func (o *PatchRelationTuplesBadRequestBody) HasStatus() bool { + if o != nil && o.Status != nil { + return true + } + + return false +} + +// SetStatus gets a reference to the given string and assigns it to the Status field. +func (o *PatchRelationTuplesBadRequestBody) SetStatus(v string) { + o.Status = &v +} + +func (o PatchRelationTuplesBadRequestBody) MarshalJSON() ([]byte, error) { + toSerialize := map[string]interface{}{} + if o.Code != nil { + toSerialize["code"] = o.Code + } + if o.Details != nil { + toSerialize["details"] = o.Details + } + if o.Message != nil { + toSerialize["message"] = o.Message + } + if o.Reason != nil { + toSerialize["reason"] = o.Reason + } + if o.Request != nil { + toSerialize["request"] = o.Request + } + if o.Status != nil { + toSerialize["status"] = o.Status + } + return json.Marshal(toSerialize) +} + +type NullablePatchRelationTuplesBadRequestBody struct { + value *PatchRelationTuplesBadRequestBody + isSet bool +} + +func (v NullablePatchRelationTuplesBadRequestBody) Get() *PatchRelationTuplesBadRequestBody { + return v.value +} + +func (v *NullablePatchRelationTuplesBadRequestBody) Set(val *PatchRelationTuplesBadRequestBody) { + v.value = val + v.isSet = true +} + +func (v NullablePatchRelationTuplesBadRequestBody) IsSet() bool { + return v.isSet +} + +func (v *NullablePatchRelationTuplesBadRequestBody) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullablePatchRelationTuplesBadRequestBody(val *PatchRelationTuplesBadRequestBody) *NullablePatchRelationTuplesBadRequestBody { + return &NullablePatchRelationTuplesBadRequestBody{value: val, isSet: true} +} + +func (v NullablePatchRelationTuplesBadRequestBody) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullablePatchRelationTuplesBadRequestBody) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/internal/httpclient-next/model_patch_relation_tuples_internal_server_error_body.go b/internal/httpclient-next/model_patch_relation_tuples_internal_server_error_body.go new file mode 100644 index 000000000..a288e5330 --- /dev/null +++ b/internal/httpclient-next/model_patch_relation_tuples_internal_server_error_body.go @@ -0,0 +1,300 @@ +/* + * Ory Oathkeeper API + * + * Documentation for all of Ory Oathkeeper's APIs. + * + * API version: 1.0.0 + * Contact: hi@ory.sh + */ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package client + +import ( + "encoding/json" +) + +// PatchRelationTuplesInternalServerErrorBody PatchRelationTuplesInternalServerErrorBody PatchRelationTuplesInternalServerErrorBody patch relation tuples internal server error body +type PatchRelationTuplesInternalServerErrorBody struct { + // code + Code *int64 `json:"code,omitempty"` + // details + Details []map[string]interface{} `json:"details,omitempty"` + // message + Message *string `json:"message,omitempty"` + // reason + Reason *string `json:"reason,omitempty"` + // request + Request *string `json:"request,omitempty"` + // status + Status *string `json:"status,omitempty"` +} + +// NewPatchRelationTuplesInternalServerErrorBody instantiates a new PatchRelationTuplesInternalServerErrorBody object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewPatchRelationTuplesInternalServerErrorBody() *PatchRelationTuplesInternalServerErrorBody { + this := PatchRelationTuplesInternalServerErrorBody{} + return &this +} + +// NewPatchRelationTuplesInternalServerErrorBodyWithDefaults instantiates a new PatchRelationTuplesInternalServerErrorBody object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewPatchRelationTuplesInternalServerErrorBodyWithDefaults() *PatchRelationTuplesInternalServerErrorBody { + this := PatchRelationTuplesInternalServerErrorBody{} + return &this +} + +// GetCode returns the Code field value if set, zero value otherwise. +func (o *PatchRelationTuplesInternalServerErrorBody) GetCode() int64 { + if o == nil || o.Code == nil { + var ret int64 + return ret + } + return *o.Code +} + +// GetCodeOk returns a tuple with the Code field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PatchRelationTuplesInternalServerErrorBody) GetCodeOk() (*int64, bool) { + if o == nil || o.Code == nil { + return nil, false + } + return o.Code, true +} + +// HasCode returns a boolean if a field has been set. +func (o *PatchRelationTuplesInternalServerErrorBody) HasCode() bool { + if o != nil && o.Code != nil { + return true + } + + return false +} + +// SetCode gets a reference to the given int64 and assigns it to the Code field. +func (o *PatchRelationTuplesInternalServerErrorBody) SetCode(v int64) { + o.Code = &v +} + +// GetDetails returns the Details field value if set, zero value otherwise. +func (o *PatchRelationTuplesInternalServerErrorBody) GetDetails() []map[string]interface{} { + if o == nil || o.Details == nil { + var ret []map[string]interface{} + return ret + } + return o.Details +} + +// GetDetailsOk returns a tuple with the Details field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PatchRelationTuplesInternalServerErrorBody) GetDetailsOk() ([]map[string]interface{}, bool) { + if o == nil || o.Details == nil { + return nil, false + } + return o.Details, true +} + +// HasDetails returns a boolean if a field has been set. +func (o *PatchRelationTuplesInternalServerErrorBody) HasDetails() bool { + if o != nil && o.Details != nil { + return true + } + + return false +} + +// SetDetails gets a reference to the given []map[string]interface{} and assigns it to the Details field. +func (o *PatchRelationTuplesInternalServerErrorBody) SetDetails(v []map[string]interface{}) { + o.Details = v +} + +// GetMessage returns the Message field value if set, zero value otherwise. +func (o *PatchRelationTuplesInternalServerErrorBody) GetMessage() string { + if o == nil || o.Message == nil { + var ret string + return ret + } + return *o.Message +} + +// GetMessageOk returns a tuple with the Message field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PatchRelationTuplesInternalServerErrorBody) GetMessageOk() (*string, bool) { + if o == nil || o.Message == nil { + return nil, false + } + return o.Message, true +} + +// HasMessage returns a boolean if a field has been set. +func (o *PatchRelationTuplesInternalServerErrorBody) HasMessage() bool { + if o != nil && o.Message != nil { + return true + } + + return false +} + +// SetMessage gets a reference to the given string and assigns it to the Message field. +func (o *PatchRelationTuplesInternalServerErrorBody) SetMessage(v string) { + o.Message = &v +} + +// GetReason returns the Reason field value if set, zero value otherwise. +func (o *PatchRelationTuplesInternalServerErrorBody) GetReason() string { + if o == nil || o.Reason == nil { + var ret string + return ret + } + return *o.Reason +} + +// GetReasonOk returns a tuple with the Reason field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PatchRelationTuplesInternalServerErrorBody) GetReasonOk() (*string, bool) { + if o == nil || o.Reason == nil { + return nil, false + } + return o.Reason, true +} + +// HasReason returns a boolean if a field has been set. +func (o *PatchRelationTuplesInternalServerErrorBody) HasReason() bool { + if o != nil && o.Reason != nil { + return true + } + + return false +} + +// SetReason gets a reference to the given string and assigns it to the Reason field. +func (o *PatchRelationTuplesInternalServerErrorBody) SetReason(v string) { + o.Reason = &v +} + +// GetRequest returns the Request field value if set, zero value otherwise. +func (o *PatchRelationTuplesInternalServerErrorBody) GetRequest() string { + if o == nil || o.Request == nil { + var ret string + return ret + } + return *o.Request +} + +// GetRequestOk returns a tuple with the Request field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PatchRelationTuplesInternalServerErrorBody) GetRequestOk() (*string, bool) { + if o == nil || o.Request == nil { + return nil, false + } + return o.Request, true +} + +// HasRequest returns a boolean if a field has been set. +func (o *PatchRelationTuplesInternalServerErrorBody) HasRequest() bool { + if o != nil && o.Request != nil { + return true + } + + return false +} + +// SetRequest gets a reference to the given string and assigns it to the Request field. +func (o *PatchRelationTuplesInternalServerErrorBody) SetRequest(v string) { + o.Request = &v +} + +// GetStatus returns the Status field value if set, zero value otherwise. +func (o *PatchRelationTuplesInternalServerErrorBody) GetStatus() string { + if o == nil || o.Status == nil { + var ret string + return ret + } + return *o.Status +} + +// GetStatusOk returns a tuple with the Status field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PatchRelationTuplesInternalServerErrorBody) GetStatusOk() (*string, bool) { + if o == nil || o.Status == nil { + return nil, false + } + return o.Status, true +} + +// HasStatus returns a boolean if a field has been set. +func (o *PatchRelationTuplesInternalServerErrorBody) HasStatus() bool { + if o != nil && o.Status != nil { + return true + } + + return false +} + +// SetStatus gets a reference to the given string and assigns it to the Status field. +func (o *PatchRelationTuplesInternalServerErrorBody) SetStatus(v string) { + o.Status = &v +} + +func (o PatchRelationTuplesInternalServerErrorBody) MarshalJSON() ([]byte, error) { + toSerialize := map[string]interface{}{} + if o.Code != nil { + toSerialize["code"] = o.Code + } + if o.Details != nil { + toSerialize["details"] = o.Details + } + if o.Message != nil { + toSerialize["message"] = o.Message + } + if o.Reason != nil { + toSerialize["reason"] = o.Reason + } + if o.Request != nil { + toSerialize["request"] = o.Request + } + if o.Status != nil { + toSerialize["status"] = o.Status + } + return json.Marshal(toSerialize) +} + +type NullablePatchRelationTuplesInternalServerErrorBody struct { + value *PatchRelationTuplesInternalServerErrorBody + isSet bool +} + +func (v NullablePatchRelationTuplesInternalServerErrorBody) Get() *PatchRelationTuplesInternalServerErrorBody { + return v.value +} + +func (v *NullablePatchRelationTuplesInternalServerErrorBody) Set(val *PatchRelationTuplesInternalServerErrorBody) { + v.value = val + v.isSet = true +} + +func (v NullablePatchRelationTuplesInternalServerErrorBody) IsSet() bool { + return v.isSet +} + +func (v *NullablePatchRelationTuplesInternalServerErrorBody) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullablePatchRelationTuplesInternalServerErrorBody(val *PatchRelationTuplesInternalServerErrorBody) *NullablePatchRelationTuplesInternalServerErrorBody { + return &NullablePatchRelationTuplesInternalServerErrorBody{value: val, isSet: true} +} + +func (v NullablePatchRelationTuplesInternalServerErrorBody) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullablePatchRelationTuplesInternalServerErrorBody) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/internal/httpclient-next/model_patch_relation_tuples_not_found_body.go b/internal/httpclient-next/model_patch_relation_tuples_not_found_body.go new file mode 100644 index 000000000..8bdf9e0c8 --- /dev/null +++ b/internal/httpclient-next/model_patch_relation_tuples_not_found_body.go @@ -0,0 +1,300 @@ +/* + * Ory Oathkeeper API + * + * Documentation for all of Ory Oathkeeper's APIs. + * + * API version: 1.0.0 + * Contact: hi@ory.sh + */ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package client + +import ( + "encoding/json" +) + +// PatchRelationTuplesNotFoundBody PatchRelationTuplesNotFoundBody PatchRelationTuplesNotFoundBody patch relation tuples not found body +type PatchRelationTuplesNotFoundBody struct { + // code + Code *int64 `json:"code,omitempty"` + // details + Details []map[string]interface{} `json:"details,omitempty"` + // message + Message *string `json:"message,omitempty"` + // reason + Reason *string `json:"reason,omitempty"` + // request + Request *string `json:"request,omitempty"` + // status + Status *string `json:"status,omitempty"` +} + +// NewPatchRelationTuplesNotFoundBody instantiates a new PatchRelationTuplesNotFoundBody object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewPatchRelationTuplesNotFoundBody() *PatchRelationTuplesNotFoundBody { + this := PatchRelationTuplesNotFoundBody{} + return &this +} + +// NewPatchRelationTuplesNotFoundBodyWithDefaults instantiates a new PatchRelationTuplesNotFoundBody object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewPatchRelationTuplesNotFoundBodyWithDefaults() *PatchRelationTuplesNotFoundBody { + this := PatchRelationTuplesNotFoundBody{} + return &this +} + +// GetCode returns the Code field value if set, zero value otherwise. +func (o *PatchRelationTuplesNotFoundBody) GetCode() int64 { + if o == nil || o.Code == nil { + var ret int64 + return ret + } + return *o.Code +} + +// GetCodeOk returns a tuple with the Code field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PatchRelationTuplesNotFoundBody) GetCodeOk() (*int64, bool) { + if o == nil || o.Code == nil { + return nil, false + } + return o.Code, true +} + +// HasCode returns a boolean if a field has been set. +func (o *PatchRelationTuplesNotFoundBody) HasCode() bool { + if o != nil && o.Code != nil { + return true + } + + return false +} + +// SetCode gets a reference to the given int64 and assigns it to the Code field. +func (o *PatchRelationTuplesNotFoundBody) SetCode(v int64) { + o.Code = &v +} + +// GetDetails returns the Details field value if set, zero value otherwise. +func (o *PatchRelationTuplesNotFoundBody) GetDetails() []map[string]interface{} { + if o == nil || o.Details == nil { + var ret []map[string]interface{} + return ret + } + return o.Details +} + +// GetDetailsOk returns a tuple with the Details field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PatchRelationTuplesNotFoundBody) GetDetailsOk() ([]map[string]interface{}, bool) { + if o == nil || o.Details == nil { + return nil, false + } + return o.Details, true +} + +// HasDetails returns a boolean if a field has been set. +func (o *PatchRelationTuplesNotFoundBody) HasDetails() bool { + if o != nil && o.Details != nil { + return true + } + + return false +} + +// SetDetails gets a reference to the given []map[string]interface{} and assigns it to the Details field. +func (o *PatchRelationTuplesNotFoundBody) SetDetails(v []map[string]interface{}) { + o.Details = v +} + +// GetMessage returns the Message field value if set, zero value otherwise. +func (o *PatchRelationTuplesNotFoundBody) GetMessage() string { + if o == nil || o.Message == nil { + var ret string + return ret + } + return *o.Message +} + +// GetMessageOk returns a tuple with the Message field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PatchRelationTuplesNotFoundBody) GetMessageOk() (*string, bool) { + if o == nil || o.Message == nil { + return nil, false + } + return o.Message, true +} + +// HasMessage returns a boolean if a field has been set. +func (o *PatchRelationTuplesNotFoundBody) HasMessage() bool { + if o != nil && o.Message != nil { + return true + } + + return false +} + +// SetMessage gets a reference to the given string and assigns it to the Message field. +func (o *PatchRelationTuplesNotFoundBody) SetMessage(v string) { + o.Message = &v +} + +// GetReason returns the Reason field value if set, zero value otherwise. +func (o *PatchRelationTuplesNotFoundBody) GetReason() string { + if o == nil || o.Reason == nil { + var ret string + return ret + } + return *o.Reason +} + +// GetReasonOk returns a tuple with the Reason field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PatchRelationTuplesNotFoundBody) GetReasonOk() (*string, bool) { + if o == nil || o.Reason == nil { + return nil, false + } + return o.Reason, true +} + +// HasReason returns a boolean if a field has been set. +func (o *PatchRelationTuplesNotFoundBody) HasReason() bool { + if o != nil && o.Reason != nil { + return true + } + + return false +} + +// SetReason gets a reference to the given string and assigns it to the Reason field. +func (o *PatchRelationTuplesNotFoundBody) SetReason(v string) { + o.Reason = &v +} + +// GetRequest returns the Request field value if set, zero value otherwise. +func (o *PatchRelationTuplesNotFoundBody) GetRequest() string { + if o == nil || o.Request == nil { + var ret string + return ret + } + return *o.Request +} + +// GetRequestOk returns a tuple with the Request field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PatchRelationTuplesNotFoundBody) GetRequestOk() (*string, bool) { + if o == nil || o.Request == nil { + return nil, false + } + return o.Request, true +} + +// HasRequest returns a boolean if a field has been set. +func (o *PatchRelationTuplesNotFoundBody) HasRequest() bool { + if o != nil && o.Request != nil { + return true + } + + return false +} + +// SetRequest gets a reference to the given string and assigns it to the Request field. +func (o *PatchRelationTuplesNotFoundBody) SetRequest(v string) { + o.Request = &v +} + +// GetStatus returns the Status field value if set, zero value otherwise. +func (o *PatchRelationTuplesNotFoundBody) GetStatus() string { + if o == nil || o.Status == nil { + var ret string + return ret + } + return *o.Status +} + +// GetStatusOk returns a tuple with the Status field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PatchRelationTuplesNotFoundBody) GetStatusOk() (*string, bool) { + if o == nil || o.Status == nil { + return nil, false + } + return o.Status, true +} + +// HasStatus returns a boolean if a field has been set. +func (o *PatchRelationTuplesNotFoundBody) HasStatus() bool { + if o != nil && o.Status != nil { + return true + } + + return false +} + +// SetStatus gets a reference to the given string and assigns it to the Status field. +func (o *PatchRelationTuplesNotFoundBody) SetStatus(v string) { + o.Status = &v +} + +func (o PatchRelationTuplesNotFoundBody) MarshalJSON() ([]byte, error) { + toSerialize := map[string]interface{}{} + if o.Code != nil { + toSerialize["code"] = o.Code + } + if o.Details != nil { + toSerialize["details"] = o.Details + } + if o.Message != nil { + toSerialize["message"] = o.Message + } + if o.Reason != nil { + toSerialize["reason"] = o.Reason + } + if o.Request != nil { + toSerialize["request"] = o.Request + } + if o.Status != nil { + toSerialize["status"] = o.Status + } + return json.Marshal(toSerialize) +} + +type NullablePatchRelationTuplesNotFoundBody struct { + value *PatchRelationTuplesNotFoundBody + isSet bool +} + +func (v NullablePatchRelationTuplesNotFoundBody) Get() *PatchRelationTuplesNotFoundBody { + return v.value +} + +func (v *NullablePatchRelationTuplesNotFoundBody) Set(val *PatchRelationTuplesNotFoundBody) { + v.value = val + v.isSet = true +} + +func (v NullablePatchRelationTuplesNotFoundBody) IsSet() bool { + return v.isSet +} + +func (v *NullablePatchRelationTuplesNotFoundBody) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullablePatchRelationTuplesNotFoundBody(val *PatchRelationTuplesNotFoundBody) *NullablePatchRelationTuplesNotFoundBody { + return &NullablePatchRelationTuplesNotFoundBody{value: val, isSet: true} +} + +func (v NullablePatchRelationTuplesNotFoundBody) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullablePatchRelationTuplesNotFoundBody) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/internal/httpclient-next/model_post_check_bad_request_body.go b/internal/httpclient-next/model_post_check_bad_request_body.go new file mode 100644 index 000000000..48c517b7a --- /dev/null +++ b/internal/httpclient-next/model_post_check_bad_request_body.go @@ -0,0 +1,300 @@ +/* + * Ory Oathkeeper API + * + * Documentation for all of Ory Oathkeeper's APIs. + * + * API version: 1.0.0 + * Contact: hi@ory.sh + */ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package client + +import ( + "encoding/json" +) + +// PostCheckBadRequestBody PostCheckBadRequestBody PostCheckBadRequestBody PostCheckBadRequestBody PostCheckBadRequestBody PostCheckBadRequestBody PostCheckBadRequestBody post check bad request body +type PostCheckBadRequestBody struct { + // code + Code *int64 `json:"code,omitempty"` + // details + Details []map[string]interface{} `json:"details,omitempty"` + // message + Message *string `json:"message,omitempty"` + // reason + Reason *string `json:"reason,omitempty"` + // request + Request *string `json:"request,omitempty"` + // status + Status *string `json:"status,omitempty"` +} + +// NewPostCheckBadRequestBody instantiates a new PostCheckBadRequestBody object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewPostCheckBadRequestBody() *PostCheckBadRequestBody { + this := PostCheckBadRequestBody{} + return &this +} + +// NewPostCheckBadRequestBodyWithDefaults instantiates a new PostCheckBadRequestBody object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewPostCheckBadRequestBodyWithDefaults() *PostCheckBadRequestBody { + this := PostCheckBadRequestBody{} + return &this +} + +// GetCode returns the Code field value if set, zero value otherwise. +func (o *PostCheckBadRequestBody) GetCode() int64 { + if o == nil || o.Code == nil { + var ret int64 + return ret + } + return *o.Code +} + +// GetCodeOk returns a tuple with the Code field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PostCheckBadRequestBody) GetCodeOk() (*int64, bool) { + if o == nil || o.Code == nil { + return nil, false + } + return o.Code, true +} + +// HasCode returns a boolean if a field has been set. +func (o *PostCheckBadRequestBody) HasCode() bool { + if o != nil && o.Code != nil { + return true + } + + return false +} + +// SetCode gets a reference to the given int64 and assigns it to the Code field. +func (o *PostCheckBadRequestBody) SetCode(v int64) { + o.Code = &v +} + +// GetDetails returns the Details field value if set, zero value otherwise. +func (o *PostCheckBadRequestBody) GetDetails() []map[string]interface{} { + if o == nil || o.Details == nil { + var ret []map[string]interface{} + return ret + } + return o.Details +} + +// GetDetailsOk returns a tuple with the Details field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PostCheckBadRequestBody) GetDetailsOk() ([]map[string]interface{}, bool) { + if o == nil || o.Details == nil { + return nil, false + } + return o.Details, true +} + +// HasDetails returns a boolean if a field has been set. +func (o *PostCheckBadRequestBody) HasDetails() bool { + if o != nil && o.Details != nil { + return true + } + + return false +} + +// SetDetails gets a reference to the given []map[string]interface{} and assigns it to the Details field. +func (o *PostCheckBadRequestBody) SetDetails(v []map[string]interface{}) { + o.Details = v +} + +// GetMessage returns the Message field value if set, zero value otherwise. +func (o *PostCheckBadRequestBody) GetMessage() string { + if o == nil || o.Message == nil { + var ret string + return ret + } + return *o.Message +} + +// GetMessageOk returns a tuple with the Message field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PostCheckBadRequestBody) GetMessageOk() (*string, bool) { + if o == nil || o.Message == nil { + return nil, false + } + return o.Message, true +} + +// HasMessage returns a boolean if a field has been set. +func (o *PostCheckBadRequestBody) HasMessage() bool { + if o != nil && o.Message != nil { + return true + } + + return false +} + +// SetMessage gets a reference to the given string and assigns it to the Message field. +func (o *PostCheckBadRequestBody) SetMessage(v string) { + o.Message = &v +} + +// GetReason returns the Reason field value if set, zero value otherwise. +func (o *PostCheckBadRequestBody) GetReason() string { + if o == nil || o.Reason == nil { + var ret string + return ret + } + return *o.Reason +} + +// GetReasonOk returns a tuple with the Reason field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PostCheckBadRequestBody) GetReasonOk() (*string, bool) { + if o == nil || o.Reason == nil { + return nil, false + } + return o.Reason, true +} + +// HasReason returns a boolean if a field has been set. +func (o *PostCheckBadRequestBody) HasReason() bool { + if o != nil && o.Reason != nil { + return true + } + + return false +} + +// SetReason gets a reference to the given string and assigns it to the Reason field. +func (o *PostCheckBadRequestBody) SetReason(v string) { + o.Reason = &v +} + +// GetRequest returns the Request field value if set, zero value otherwise. +func (o *PostCheckBadRequestBody) GetRequest() string { + if o == nil || o.Request == nil { + var ret string + return ret + } + return *o.Request +} + +// GetRequestOk returns a tuple with the Request field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PostCheckBadRequestBody) GetRequestOk() (*string, bool) { + if o == nil || o.Request == nil { + return nil, false + } + return o.Request, true +} + +// HasRequest returns a boolean if a field has been set. +func (o *PostCheckBadRequestBody) HasRequest() bool { + if o != nil && o.Request != nil { + return true + } + + return false +} + +// SetRequest gets a reference to the given string and assigns it to the Request field. +func (o *PostCheckBadRequestBody) SetRequest(v string) { + o.Request = &v +} + +// GetStatus returns the Status field value if set, zero value otherwise. +func (o *PostCheckBadRequestBody) GetStatus() string { + if o == nil || o.Status == nil { + var ret string + return ret + } + return *o.Status +} + +// GetStatusOk returns a tuple with the Status field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PostCheckBadRequestBody) GetStatusOk() (*string, bool) { + if o == nil || o.Status == nil { + return nil, false + } + return o.Status, true +} + +// HasStatus returns a boolean if a field has been set. +func (o *PostCheckBadRequestBody) HasStatus() bool { + if o != nil && o.Status != nil { + return true + } + + return false +} + +// SetStatus gets a reference to the given string and assigns it to the Status field. +func (o *PostCheckBadRequestBody) SetStatus(v string) { + o.Status = &v +} + +func (o PostCheckBadRequestBody) MarshalJSON() ([]byte, error) { + toSerialize := map[string]interface{}{} + if o.Code != nil { + toSerialize["code"] = o.Code + } + if o.Details != nil { + toSerialize["details"] = o.Details + } + if o.Message != nil { + toSerialize["message"] = o.Message + } + if o.Reason != nil { + toSerialize["reason"] = o.Reason + } + if o.Request != nil { + toSerialize["request"] = o.Request + } + if o.Status != nil { + toSerialize["status"] = o.Status + } + return json.Marshal(toSerialize) +} + +type NullablePostCheckBadRequestBody struct { + value *PostCheckBadRequestBody + isSet bool +} + +func (v NullablePostCheckBadRequestBody) Get() *PostCheckBadRequestBody { + return v.value +} + +func (v *NullablePostCheckBadRequestBody) Set(val *PostCheckBadRequestBody) { + v.value = val + v.isSet = true +} + +func (v NullablePostCheckBadRequestBody) IsSet() bool { + return v.isSet +} + +func (v *NullablePostCheckBadRequestBody) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullablePostCheckBadRequestBody(val *PostCheckBadRequestBody) *NullablePostCheckBadRequestBody { + return &NullablePostCheckBadRequestBody{value: val, isSet: true} +} + +func (v NullablePostCheckBadRequestBody) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullablePostCheckBadRequestBody) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/internal/httpclient-next/model_post_check_internal_server_error_body.go b/internal/httpclient-next/model_post_check_internal_server_error_body.go new file mode 100644 index 000000000..66cca8967 --- /dev/null +++ b/internal/httpclient-next/model_post_check_internal_server_error_body.go @@ -0,0 +1,300 @@ +/* + * Ory Oathkeeper API + * + * Documentation for all of Ory Oathkeeper's APIs. + * + * API version: 1.0.0 + * Contact: hi@ory.sh + */ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package client + +import ( + "encoding/json" +) + +// PostCheckInternalServerErrorBody PostCheckInternalServerErrorBody PostCheckInternalServerErrorBody post check internal server error body +type PostCheckInternalServerErrorBody struct { + // code + Code *int64 `json:"code,omitempty"` + // details + Details []map[string]interface{} `json:"details,omitempty"` + // message + Message *string `json:"message,omitempty"` + // reason + Reason *string `json:"reason,omitempty"` + // request + Request *string `json:"request,omitempty"` + // status + Status *string `json:"status,omitempty"` +} + +// NewPostCheckInternalServerErrorBody instantiates a new PostCheckInternalServerErrorBody object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewPostCheckInternalServerErrorBody() *PostCheckInternalServerErrorBody { + this := PostCheckInternalServerErrorBody{} + return &this +} + +// NewPostCheckInternalServerErrorBodyWithDefaults instantiates a new PostCheckInternalServerErrorBody object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewPostCheckInternalServerErrorBodyWithDefaults() *PostCheckInternalServerErrorBody { + this := PostCheckInternalServerErrorBody{} + return &this +} + +// GetCode returns the Code field value if set, zero value otherwise. +func (o *PostCheckInternalServerErrorBody) GetCode() int64 { + if o == nil || o.Code == nil { + var ret int64 + return ret + } + return *o.Code +} + +// GetCodeOk returns a tuple with the Code field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PostCheckInternalServerErrorBody) GetCodeOk() (*int64, bool) { + if o == nil || o.Code == nil { + return nil, false + } + return o.Code, true +} + +// HasCode returns a boolean if a field has been set. +func (o *PostCheckInternalServerErrorBody) HasCode() bool { + if o != nil && o.Code != nil { + return true + } + + return false +} + +// SetCode gets a reference to the given int64 and assigns it to the Code field. +func (o *PostCheckInternalServerErrorBody) SetCode(v int64) { + o.Code = &v +} + +// GetDetails returns the Details field value if set, zero value otherwise. +func (o *PostCheckInternalServerErrorBody) GetDetails() []map[string]interface{} { + if o == nil || o.Details == nil { + var ret []map[string]interface{} + return ret + } + return o.Details +} + +// GetDetailsOk returns a tuple with the Details field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PostCheckInternalServerErrorBody) GetDetailsOk() ([]map[string]interface{}, bool) { + if o == nil || o.Details == nil { + return nil, false + } + return o.Details, true +} + +// HasDetails returns a boolean if a field has been set. +func (o *PostCheckInternalServerErrorBody) HasDetails() bool { + if o != nil && o.Details != nil { + return true + } + + return false +} + +// SetDetails gets a reference to the given []map[string]interface{} and assigns it to the Details field. +func (o *PostCheckInternalServerErrorBody) SetDetails(v []map[string]interface{}) { + o.Details = v +} + +// GetMessage returns the Message field value if set, zero value otherwise. +func (o *PostCheckInternalServerErrorBody) GetMessage() string { + if o == nil || o.Message == nil { + var ret string + return ret + } + return *o.Message +} + +// GetMessageOk returns a tuple with the Message field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PostCheckInternalServerErrorBody) GetMessageOk() (*string, bool) { + if o == nil || o.Message == nil { + return nil, false + } + return o.Message, true +} + +// HasMessage returns a boolean if a field has been set. +func (o *PostCheckInternalServerErrorBody) HasMessage() bool { + if o != nil && o.Message != nil { + return true + } + + return false +} + +// SetMessage gets a reference to the given string and assigns it to the Message field. +func (o *PostCheckInternalServerErrorBody) SetMessage(v string) { + o.Message = &v +} + +// GetReason returns the Reason field value if set, zero value otherwise. +func (o *PostCheckInternalServerErrorBody) GetReason() string { + if o == nil || o.Reason == nil { + var ret string + return ret + } + return *o.Reason +} + +// GetReasonOk returns a tuple with the Reason field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PostCheckInternalServerErrorBody) GetReasonOk() (*string, bool) { + if o == nil || o.Reason == nil { + return nil, false + } + return o.Reason, true +} + +// HasReason returns a boolean if a field has been set. +func (o *PostCheckInternalServerErrorBody) HasReason() bool { + if o != nil && o.Reason != nil { + return true + } + + return false +} + +// SetReason gets a reference to the given string and assigns it to the Reason field. +func (o *PostCheckInternalServerErrorBody) SetReason(v string) { + o.Reason = &v +} + +// GetRequest returns the Request field value if set, zero value otherwise. +func (o *PostCheckInternalServerErrorBody) GetRequest() string { + if o == nil || o.Request == nil { + var ret string + return ret + } + return *o.Request +} + +// GetRequestOk returns a tuple with the Request field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PostCheckInternalServerErrorBody) GetRequestOk() (*string, bool) { + if o == nil || o.Request == nil { + return nil, false + } + return o.Request, true +} + +// HasRequest returns a boolean if a field has been set. +func (o *PostCheckInternalServerErrorBody) HasRequest() bool { + if o != nil && o.Request != nil { + return true + } + + return false +} + +// SetRequest gets a reference to the given string and assigns it to the Request field. +func (o *PostCheckInternalServerErrorBody) SetRequest(v string) { + o.Request = &v +} + +// GetStatus returns the Status field value if set, zero value otherwise. +func (o *PostCheckInternalServerErrorBody) GetStatus() string { + if o == nil || o.Status == nil { + var ret string + return ret + } + return *o.Status +} + +// GetStatusOk returns a tuple with the Status field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PostCheckInternalServerErrorBody) GetStatusOk() (*string, bool) { + if o == nil || o.Status == nil { + return nil, false + } + return o.Status, true +} + +// HasStatus returns a boolean if a field has been set. +func (o *PostCheckInternalServerErrorBody) HasStatus() bool { + if o != nil && o.Status != nil { + return true + } + + return false +} + +// SetStatus gets a reference to the given string and assigns it to the Status field. +func (o *PostCheckInternalServerErrorBody) SetStatus(v string) { + o.Status = &v +} + +func (o PostCheckInternalServerErrorBody) MarshalJSON() ([]byte, error) { + toSerialize := map[string]interface{}{} + if o.Code != nil { + toSerialize["code"] = o.Code + } + if o.Details != nil { + toSerialize["details"] = o.Details + } + if o.Message != nil { + toSerialize["message"] = o.Message + } + if o.Reason != nil { + toSerialize["reason"] = o.Reason + } + if o.Request != nil { + toSerialize["request"] = o.Request + } + if o.Status != nil { + toSerialize["status"] = o.Status + } + return json.Marshal(toSerialize) +} + +type NullablePostCheckInternalServerErrorBody struct { + value *PostCheckInternalServerErrorBody + isSet bool +} + +func (v NullablePostCheckInternalServerErrorBody) Get() *PostCheckInternalServerErrorBody { + return v.value +} + +func (v *NullablePostCheckInternalServerErrorBody) Set(val *PostCheckInternalServerErrorBody) { + v.value = val + v.isSet = true +} + +func (v NullablePostCheckInternalServerErrorBody) IsSet() bool { + return v.isSet +} + +func (v *NullablePostCheckInternalServerErrorBody) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullablePostCheckInternalServerErrorBody(val *PostCheckInternalServerErrorBody) *NullablePostCheckInternalServerErrorBody { + return &NullablePostCheckInternalServerErrorBody{value: val, isSet: true} +} + +func (v NullablePostCheckInternalServerErrorBody) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullablePostCheckInternalServerErrorBody) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/internal/httpclient-next/model_relation_query.go b/internal/httpclient-next/model_relation_query.go new file mode 100644 index 000000000..7a3a3c5d1 --- /dev/null +++ b/internal/httpclient-next/model_relation_query.go @@ -0,0 +1,262 @@ +/* + * Ory Oathkeeper API + * + * Documentation for all of Ory Oathkeeper's APIs. + * + * API version: 1.0.0 + * Contact: hi@ory.sh + */ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package client + +import ( + "encoding/json" +) + +// RelationQuery RelationQuery RelationQuery RelationQuery RelationQuery RelationQuery RelationQuery relation query +type RelationQuery struct { + // Namespace of the Relation Tuple + Namespace *string `json:"namespace,omitempty"` + // Object of the Relation Tuple + Object *string `json:"object,omitempty"` + // Relation of the Relation Tuple + Relation *string `json:"relation,omitempty"` + // SubjectID of the Relation Tuple Either SubjectSet or SubjectID can be provided. + SubjectId *string `json:"subject_id,omitempty"` + SubjectSet *SubjectSet `json:"subject_set,omitempty"` +} + +// NewRelationQuery instantiates a new RelationQuery object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewRelationQuery() *RelationQuery { + this := RelationQuery{} + return &this +} + +// NewRelationQueryWithDefaults instantiates a new RelationQuery object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewRelationQueryWithDefaults() *RelationQuery { + this := RelationQuery{} + return &this +} + +// GetNamespace returns the Namespace field value if set, zero value otherwise. +func (o *RelationQuery) GetNamespace() string { + if o == nil || o.Namespace == nil { + var ret string + return ret + } + return *o.Namespace +} + +// GetNamespaceOk returns a tuple with the Namespace field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *RelationQuery) GetNamespaceOk() (*string, bool) { + if o == nil || o.Namespace == nil { + return nil, false + } + return o.Namespace, true +} + +// HasNamespace returns a boolean if a field has been set. +func (o *RelationQuery) HasNamespace() bool { + if o != nil && o.Namespace != nil { + return true + } + + return false +} + +// SetNamespace gets a reference to the given string and assigns it to the Namespace field. +func (o *RelationQuery) SetNamespace(v string) { + o.Namespace = &v +} + +// GetObject returns the Object field value if set, zero value otherwise. +func (o *RelationQuery) GetObject() string { + if o == nil || o.Object == nil { + var ret string + return ret + } + return *o.Object +} + +// GetObjectOk returns a tuple with the Object field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *RelationQuery) GetObjectOk() (*string, bool) { + if o == nil || o.Object == nil { + return nil, false + } + return o.Object, true +} + +// HasObject returns a boolean if a field has been set. +func (o *RelationQuery) HasObject() bool { + if o != nil && o.Object != nil { + return true + } + + return false +} + +// SetObject gets a reference to the given string and assigns it to the Object field. +func (o *RelationQuery) SetObject(v string) { + o.Object = &v +} + +// GetRelation returns the Relation field value if set, zero value otherwise. +func (o *RelationQuery) GetRelation() string { + if o == nil || o.Relation == nil { + var ret string + return ret + } + return *o.Relation +} + +// GetRelationOk returns a tuple with the Relation field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *RelationQuery) GetRelationOk() (*string, bool) { + if o == nil || o.Relation == nil { + return nil, false + } + return o.Relation, true +} + +// HasRelation returns a boolean if a field has been set. +func (o *RelationQuery) HasRelation() bool { + if o != nil && o.Relation != nil { + return true + } + + return false +} + +// SetRelation gets a reference to the given string and assigns it to the Relation field. +func (o *RelationQuery) SetRelation(v string) { + o.Relation = &v +} + +// GetSubjectId returns the SubjectId field value if set, zero value otherwise. +func (o *RelationQuery) GetSubjectId() string { + if o == nil || o.SubjectId == nil { + var ret string + return ret + } + return *o.SubjectId +} + +// GetSubjectIdOk returns a tuple with the SubjectId field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *RelationQuery) GetSubjectIdOk() (*string, bool) { + if o == nil || o.SubjectId == nil { + return nil, false + } + return o.SubjectId, true +} + +// HasSubjectId returns a boolean if a field has been set. +func (o *RelationQuery) HasSubjectId() bool { + if o != nil && o.SubjectId != nil { + return true + } + + return false +} + +// SetSubjectId gets a reference to the given string and assigns it to the SubjectId field. +func (o *RelationQuery) SetSubjectId(v string) { + o.SubjectId = &v +} + +// GetSubjectSet returns the SubjectSet field value if set, zero value otherwise. +func (o *RelationQuery) GetSubjectSet() SubjectSet { + if o == nil || o.SubjectSet == nil { + var ret SubjectSet + return ret + } + return *o.SubjectSet +} + +// GetSubjectSetOk returns a tuple with the SubjectSet field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *RelationQuery) GetSubjectSetOk() (*SubjectSet, bool) { + if o == nil || o.SubjectSet == nil { + return nil, false + } + return o.SubjectSet, true +} + +// HasSubjectSet returns a boolean if a field has been set. +func (o *RelationQuery) HasSubjectSet() bool { + if o != nil && o.SubjectSet != nil { + return true + } + + return false +} + +// SetSubjectSet gets a reference to the given SubjectSet and assigns it to the SubjectSet field. +func (o *RelationQuery) SetSubjectSet(v SubjectSet) { + o.SubjectSet = &v +} + +func (o RelationQuery) MarshalJSON() ([]byte, error) { + toSerialize := map[string]interface{}{} + if o.Namespace != nil { + toSerialize["namespace"] = o.Namespace + } + if o.Object != nil { + toSerialize["object"] = o.Object + } + if o.Relation != nil { + toSerialize["relation"] = o.Relation + } + if o.SubjectId != nil { + toSerialize["subject_id"] = o.SubjectId + } + if o.SubjectSet != nil { + toSerialize["subject_set"] = o.SubjectSet + } + return json.Marshal(toSerialize) +} + +type NullableRelationQuery struct { + value *RelationQuery + isSet bool +} + +func (v NullableRelationQuery) Get() *RelationQuery { + return v.value +} + +func (v *NullableRelationQuery) Set(val *RelationQuery) { + v.value = val + v.isSet = true +} + +func (v NullableRelationQuery) IsSet() bool { + return v.isSet +} + +func (v *NullableRelationQuery) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableRelationQuery(val *RelationQuery) *NullableRelationQuery { + return &NullableRelationQuery{value: val, isSet: true} +} + +func (v NullableRelationQuery) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableRelationQuery) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/internal/httpclient-next/model_subject_set.go b/internal/httpclient-next/model_subject_set.go new file mode 100644 index 000000000..85a09f1a5 --- /dev/null +++ b/internal/httpclient-next/model_subject_set.go @@ -0,0 +1,168 @@ +/* + * Ory Oathkeeper API + * + * Documentation for all of Ory Oathkeeper's APIs. + * + * API version: 1.0.0 + * Contact: hi@ory.sh + */ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package client + +import ( + "encoding/json" +) + +// SubjectSet struct for SubjectSet +type SubjectSet struct { + // Namespace of the Subject Set + Namespace string `json:"namespace"` + // Object of the Subject Set + Object string `json:"object"` + // Relation of the Subject Set + Relation string `json:"relation"` +} + +// NewSubjectSet instantiates a new SubjectSet object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewSubjectSet(namespace string, object string, relation string) *SubjectSet { + this := SubjectSet{} + this.Namespace = namespace + this.Object = object + this.Relation = relation + return &this +} + +// NewSubjectSetWithDefaults instantiates a new SubjectSet object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewSubjectSetWithDefaults() *SubjectSet { + this := SubjectSet{} + return &this +} + +// GetNamespace returns the Namespace field value +func (o *SubjectSet) GetNamespace() string { + if o == nil { + var ret string + return ret + } + + return o.Namespace +} + +// GetNamespaceOk returns a tuple with the Namespace field value +// and a boolean to check if the value has been set. +func (o *SubjectSet) GetNamespaceOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Namespace, true +} + +// SetNamespace sets field value +func (o *SubjectSet) SetNamespace(v string) { + o.Namespace = v +} + +// GetObject returns the Object field value +func (o *SubjectSet) GetObject() string { + if o == nil { + var ret string + return ret + } + + return o.Object +} + +// GetObjectOk returns a tuple with the Object field value +// and a boolean to check if the value has been set. +func (o *SubjectSet) GetObjectOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Object, true +} + +// SetObject sets field value +func (o *SubjectSet) SetObject(v string) { + o.Object = v +} + +// GetRelation returns the Relation field value +func (o *SubjectSet) GetRelation() string { + if o == nil { + var ret string + return ret + } + + return o.Relation +} + +// GetRelationOk returns a tuple with the Relation field value +// and a boolean to check if the value has been set. +func (o *SubjectSet) GetRelationOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Relation, true +} + +// SetRelation sets field value +func (o *SubjectSet) SetRelation(v string) { + o.Relation = v +} + +func (o SubjectSet) MarshalJSON() ([]byte, error) { + toSerialize := map[string]interface{}{} + if true { + toSerialize["namespace"] = o.Namespace + } + if true { + toSerialize["object"] = o.Object + } + if true { + toSerialize["relation"] = o.Relation + } + return json.Marshal(toSerialize) +} + +type NullableSubjectSet struct { + value *SubjectSet + isSet bool +} + +func (v NullableSubjectSet) Get() *SubjectSet { + return v.value +} + +func (v *NullableSubjectSet) Set(val *SubjectSet) { + v.value = val + v.isSet = true +} + +func (v NullableSubjectSet) IsSet() bool { + return v.isSet +} + +func (v *NullableSubjectSet) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableSubjectSet(val *SubjectSet) *NullableSubjectSet { + return &NullableSubjectSet{value: val, isSet: true} +} + +func (v NullableSubjectSet) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableSubjectSet) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/internal/httpclient-next/model_version.go b/internal/httpclient-next/model_version.go new file mode 100644 index 000000000..eb7f580a1 --- /dev/null +++ b/internal/httpclient-next/model_version.go @@ -0,0 +1,115 @@ +/* + * Ory Oathkeeper API + * + * Documentation for all of Ory Oathkeeper's APIs. + * + * API version: 1.0.0 + * Contact: hi@ory.sh + */ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package client + +import ( + "encoding/json" +) + +// Version struct for Version +type Version struct { + // Version is the service's version. + Version *string `json:"version,omitempty"` +} + +// NewVersion instantiates a new Version object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewVersion() *Version { + this := Version{} + return &this +} + +// NewVersionWithDefaults instantiates a new Version object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewVersionWithDefaults() *Version { + this := Version{} + return &this +} + +// GetVersion returns the Version field value if set, zero value otherwise. +func (o *Version) GetVersion() string { + if o == nil || o.Version == nil { + var ret string + return ret + } + return *o.Version +} + +// GetVersionOk returns a tuple with the Version field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *Version) GetVersionOk() (*string, bool) { + if o == nil || o.Version == nil { + return nil, false + } + return o.Version, true +} + +// HasVersion returns a boolean if a field has been set. +func (o *Version) HasVersion() bool { + if o != nil && o.Version != nil { + return true + } + + return false +} + +// SetVersion gets a reference to the given string and assigns it to the Version field. +func (o *Version) SetVersion(v string) { + o.Version = &v +} + +func (o Version) MarshalJSON() ([]byte, error) { + toSerialize := map[string]interface{}{} + if o.Version != nil { + toSerialize["version"] = o.Version + } + return json.Marshal(toSerialize) +} + +type NullableVersion struct { + value *Version + isSet bool +} + +func (v NullableVersion) Get() *Version { + return v.value +} + +func (v *NullableVersion) Set(val *Version) { + v.value = val + v.isSet = true +} + +func (v NullableVersion) IsSet() bool { + return v.isSet +} + +func (v *NullableVersion) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableVersion(val *Version) *NullableVersion { + return &NullableVersion{value: val, isSet: true} +} + +func (v NullableVersion) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableVersion) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/internal/httpclient-next/response.go b/internal/httpclient-next/response.go new file mode 100644 index 000000000..33256e887 --- /dev/null +++ b/internal/httpclient-next/response.go @@ -0,0 +1,48 @@ +/* + * Ory Oathkeeper API + * + * Documentation for all of Ory Oathkeeper's APIs. + * + * API version: 1.0.0 + * Contact: hi@ory.sh + */ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package client + +import ( + "net/http" +) + +// APIResponse stores the API response returned by the server. +type APIResponse struct { + *http.Response `json:"-"` + Message string `json:"message,omitempty"` + // Operation is the name of the OpenAPI operation. + Operation string `json:"operation,omitempty"` + // RequestURL is the request URL. This value is always available, even if the + // embedded *http.Response is nil. + RequestURL string `json:"url,omitempty"` + // Method is the HTTP method used for the request. This value is always + // available, even if the embedded *http.Response is nil. + Method string `json:"method,omitempty"` + // Payload holds the contents of the response body (which may be nil or empty). + // This is provided here as the raw response.Body() reader will have already + // been drained. + Payload []byte `json:"-"` +} + +// NewAPIResponse returns a new APIResonse object. +func NewAPIResponse(r *http.Response) *APIResponse { + + response := &APIResponse{Response: r} + return response +} + +// NewAPIResponseWithError returns a new APIResponse object with the provided error message. +func NewAPIResponseWithError(errorMessage string) *APIResponse { + + response := &APIResponse{Message: errorMessage} + return response +} diff --git a/internal/httpclient-next/utils.go b/internal/httpclient-next/utils.go new file mode 100644 index 000000000..13bbff6fd --- /dev/null +++ b/internal/httpclient-next/utils.go @@ -0,0 +1,329 @@ +/* + * Ory Oathkeeper API + * + * Documentation for all of Ory Oathkeeper's APIs. + * + * API version: 1.0.0 + * Contact: hi@ory.sh + */ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package client + +import ( + "encoding/json" + "time" +) + +// PtrBool is a helper routine that returns a pointer to given boolean value. +func PtrBool(v bool) *bool { return &v } + +// PtrInt is a helper routine that returns a pointer to given integer value. +func PtrInt(v int) *int { return &v } + +// PtrInt32 is a helper routine that returns a pointer to given integer value. +func PtrInt32(v int32) *int32 { return &v } + +// PtrInt64 is a helper routine that returns a pointer to given integer value. +func PtrInt64(v int64) *int64 { return &v } + +// PtrFloat32 is a helper routine that returns a pointer to given float value. +func PtrFloat32(v float32) *float32 { return &v } + +// PtrFloat64 is a helper routine that returns a pointer to given float value. +func PtrFloat64(v float64) *float64 { return &v } + +// PtrString is a helper routine that returns a pointer to given string value. +func PtrString(v string) *string { return &v } + +// PtrTime is helper routine that returns a pointer to given Time value. +func PtrTime(v time.Time) *time.Time { return &v } + +type NullableBool struct { + value *bool + isSet bool +} + +func (v NullableBool) Get() *bool { + return v.value +} + +func (v *NullableBool) Set(val *bool) { + v.value = val + v.isSet = true +} + +func (v NullableBool) IsSet() bool { + return v.isSet +} + +func (v *NullableBool) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableBool(val *bool) *NullableBool { + return &NullableBool{value: val, isSet: true} +} + +func (v NullableBool) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableBool) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + +type NullableInt struct { + value *int + isSet bool +} + +func (v NullableInt) Get() *int { + return v.value +} + +func (v *NullableInt) Set(val *int) { + v.value = val + v.isSet = true +} + +func (v NullableInt) IsSet() bool { + return v.isSet +} + +func (v *NullableInt) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableInt(val *int) *NullableInt { + return &NullableInt{value: val, isSet: true} +} + +func (v NullableInt) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableInt) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + +type NullableInt32 struct { + value *int32 + isSet bool +} + +func (v NullableInt32) Get() *int32 { + return v.value +} + +func (v *NullableInt32) Set(val *int32) { + v.value = val + v.isSet = true +} + +func (v NullableInt32) IsSet() bool { + return v.isSet +} + +func (v *NullableInt32) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableInt32(val *int32) *NullableInt32 { + return &NullableInt32{value: val, isSet: true} +} + +func (v NullableInt32) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableInt32) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + +type NullableInt64 struct { + value *int64 + isSet bool +} + +func (v NullableInt64) Get() *int64 { + return v.value +} + +func (v *NullableInt64) Set(val *int64) { + v.value = val + v.isSet = true +} + +func (v NullableInt64) IsSet() bool { + return v.isSet +} + +func (v *NullableInt64) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableInt64(val *int64) *NullableInt64 { + return &NullableInt64{value: val, isSet: true} +} + +func (v NullableInt64) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableInt64) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + +type NullableFloat32 struct { + value *float32 + isSet bool +} + +func (v NullableFloat32) Get() *float32 { + return v.value +} + +func (v *NullableFloat32) Set(val *float32) { + v.value = val + v.isSet = true +} + +func (v NullableFloat32) IsSet() bool { + return v.isSet +} + +func (v *NullableFloat32) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableFloat32(val *float32) *NullableFloat32 { + return &NullableFloat32{value: val, isSet: true} +} + +func (v NullableFloat32) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableFloat32) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + +type NullableFloat64 struct { + value *float64 + isSet bool +} + +func (v NullableFloat64) Get() *float64 { + return v.value +} + +func (v *NullableFloat64) Set(val *float64) { + v.value = val + v.isSet = true +} + +func (v NullableFloat64) IsSet() bool { + return v.isSet +} + +func (v *NullableFloat64) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableFloat64(val *float64) *NullableFloat64 { + return &NullableFloat64{value: val, isSet: true} +} + +func (v NullableFloat64) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableFloat64) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + +type NullableString struct { + value *string + isSet bool +} + +func (v NullableString) Get() *string { + return v.value +} + +func (v *NullableString) Set(val *string) { + v.value = val + v.isSet = true +} + +func (v NullableString) IsSet() bool { + return v.isSet +} + +func (v *NullableString) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableString(val *string) *NullableString { + return &NullableString{value: val, isSet: true} +} + +func (v NullableString) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableString) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + +type NullableTime struct { + value *time.Time + isSet bool +} + +func (v NullableTime) Get() *time.Time { + return v.value +} + +func (v *NullableTime) Set(val *time.Time) { + v.value = val + v.isSet = true +} + +func (v NullableTime) IsSet() bool { + return v.isSet +} + +func (v *NullableTime) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableTime(val *time.Time) *NullableTime { + return &NullableTime{value: val, isSet: true} +} + +func (v NullableTime) MarshalJSON() ([]byte, error) { + return v.value.MarshalJSON() +} + +func (v *NullableTime) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/internal/httpclient/client/health/is_instance_alive_responses.go b/internal/httpclient/client/health/is_instance_alive_responses.go index f2168ba88..e5ff09113 100644 --- a/internal/httpclient/client/health/is_instance_alive_responses.go +++ b/internal/httpclient/client/health/is_instance_alive_responses.go @@ -6,13 +6,11 @@ package health // Editing this file might prove futile when you re-run the swagger generate command import ( - "context" "fmt" "io" "github.com/go-openapi/runtime" "github.com/go-openapi/strfmt" - "github.com/go-openapi/swag" "github.com/ory/keto/internal/httpclient/models" ) @@ -81,22 +79,22 @@ func NewIsInstanceAliveInternalServerError() *IsInstanceAliveInternalServerError /* IsInstanceAliveInternalServerError describes a response with status code 500, with default header values. -The standard error format +genericError */ type IsInstanceAliveInternalServerError struct { - Payload *IsInstanceAliveInternalServerErrorBody + Payload *models.GenericError } func (o *IsInstanceAliveInternalServerError) Error() string { return fmt.Sprintf("[GET /health/alive][%d] isInstanceAliveInternalServerError %+v", 500, o.Payload) } -func (o *IsInstanceAliveInternalServerError) GetPayload() *IsInstanceAliveInternalServerErrorBody { +func (o *IsInstanceAliveInternalServerError) GetPayload() *models.GenericError { return o.Payload } func (o *IsInstanceAliveInternalServerError) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { - o.Payload = new(IsInstanceAliveInternalServerErrorBody) + o.Payload = new(models.GenericError) // response payload if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { @@ -105,55 +103,3 @@ func (o *IsInstanceAliveInternalServerError) readResponse(response runtime.Clien return nil } - -/*IsInstanceAliveInternalServerErrorBody is instance alive internal server error body -swagger:model IsInstanceAliveInternalServerErrorBody -*/ -type IsInstanceAliveInternalServerErrorBody struct { - - // code - Code int64 `json:"code,omitempty"` - - // details - Details []interface{} `json:"details"` - - // message - Message string `json:"message,omitempty"` - - // reason - Reason string `json:"reason,omitempty"` - - // request - Request string `json:"request,omitempty"` - - // status - Status string `json:"status,omitempty"` -} - -// Validate validates this is instance alive internal server error body -func (o *IsInstanceAliveInternalServerErrorBody) Validate(formats strfmt.Registry) error { - return nil -} - -// ContextValidate validates this is instance alive internal server error body based on context it is used -func (o *IsInstanceAliveInternalServerErrorBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error { - return nil -} - -// MarshalBinary interface implementation -func (o *IsInstanceAliveInternalServerErrorBody) MarshalBinary() ([]byte, error) { - if o == nil { - return nil, nil - } - return swag.WriteJSON(o) -} - -// UnmarshalBinary interface implementation -func (o *IsInstanceAliveInternalServerErrorBody) UnmarshalBinary(b []byte) error { - var res IsInstanceAliveInternalServerErrorBody - if err := swag.ReadJSON(b, &res); err != nil { - return err - } - *o = res - return nil -} diff --git a/internal/httpclient/client/read/get_check_responses.go b/internal/httpclient/client/read/get_check_responses.go index 6dcb1f5c3..ef3973c78 100644 --- a/internal/httpclient/client/read/get_check_responses.go +++ b/internal/httpclient/client/read/get_check_responses.go @@ -6,13 +6,11 @@ package read // Editing this file might prove futile when you re-run the swagger generate command import ( - "context" "fmt" "io" "github.com/go-openapi/runtime" "github.com/go-openapi/strfmt" - "github.com/go-openapi/swag" "github.com/ory/keto/internal/httpclient/models" ) @@ -93,22 +91,22 @@ func NewGetCheckBadRequest() *GetCheckBadRequest { /* GetCheckBadRequest describes a response with status code 400, with default header values. -The standard error format +genericError */ type GetCheckBadRequest struct { - Payload *GetCheckBadRequestBody + Payload *models.GenericError } func (o *GetCheckBadRequest) Error() string { return fmt.Sprintf("[GET /check][%d] getCheckBadRequest %+v", 400, o.Payload) } -func (o *GetCheckBadRequest) GetPayload() *GetCheckBadRequestBody { +func (o *GetCheckBadRequest) GetPayload() *models.GenericError { return o.Payload } func (o *GetCheckBadRequest) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { - o.Payload = new(GetCheckBadRequestBody) + o.Payload = new(models.GenericError) // response payload if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { @@ -157,22 +155,22 @@ func NewGetCheckInternalServerError() *GetCheckInternalServerError { /* GetCheckInternalServerError describes a response with status code 500, with default header values. -The standard error format +genericError */ type GetCheckInternalServerError struct { - Payload *GetCheckInternalServerErrorBody + Payload *models.GenericError } func (o *GetCheckInternalServerError) Error() string { return fmt.Sprintf("[GET /check][%d] getCheckInternalServerError %+v", 500, o.Payload) } -func (o *GetCheckInternalServerError) GetPayload() *GetCheckInternalServerErrorBody { +func (o *GetCheckInternalServerError) GetPayload() *models.GenericError { return o.Payload } func (o *GetCheckInternalServerError) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { - o.Payload = new(GetCheckInternalServerErrorBody) + o.Payload = new(models.GenericError) // response payload if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { @@ -181,107 +179,3 @@ func (o *GetCheckInternalServerError) readResponse(response runtime.ClientRespon return nil } - -/*GetCheckBadRequestBody get check bad request body -swagger:model GetCheckBadRequestBody -*/ -type GetCheckBadRequestBody struct { - - // code - Code int64 `json:"code,omitempty"` - - // details - Details []interface{} `json:"details"` - - // message - Message string `json:"message,omitempty"` - - // reason - Reason string `json:"reason,omitempty"` - - // request - Request string `json:"request,omitempty"` - - // status - Status string `json:"status,omitempty"` -} - -// Validate validates this get check bad request body -func (o *GetCheckBadRequestBody) Validate(formats strfmt.Registry) error { - return nil -} - -// ContextValidate validates this get check bad request body based on context it is used -func (o *GetCheckBadRequestBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error { - return nil -} - -// MarshalBinary interface implementation -func (o *GetCheckBadRequestBody) MarshalBinary() ([]byte, error) { - if o == nil { - return nil, nil - } - return swag.WriteJSON(o) -} - -// UnmarshalBinary interface implementation -func (o *GetCheckBadRequestBody) UnmarshalBinary(b []byte) error { - var res GetCheckBadRequestBody - if err := swag.ReadJSON(b, &res); err != nil { - return err - } - *o = res - return nil -} - -/*GetCheckInternalServerErrorBody get check internal server error body -swagger:model GetCheckInternalServerErrorBody -*/ -type GetCheckInternalServerErrorBody struct { - - // code - Code int64 `json:"code,omitempty"` - - // details - Details []interface{} `json:"details"` - - // message - Message string `json:"message,omitempty"` - - // reason - Reason string `json:"reason,omitempty"` - - // request - Request string `json:"request,omitempty"` - - // status - Status string `json:"status,omitempty"` -} - -// Validate validates this get check internal server error body -func (o *GetCheckInternalServerErrorBody) Validate(formats strfmt.Registry) error { - return nil -} - -// ContextValidate validates this get check internal server error body based on context it is used -func (o *GetCheckInternalServerErrorBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error { - return nil -} - -// MarshalBinary interface implementation -func (o *GetCheckInternalServerErrorBody) MarshalBinary() ([]byte, error) { - if o == nil { - return nil, nil - } - return swag.WriteJSON(o) -} - -// UnmarshalBinary interface implementation -func (o *GetCheckInternalServerErrorBody) UnmarshalBinary(b []byte) error { - var res GetCheckInternalServerErrorBody - if err := swag.ReadJSON(b, &res); err != nil { - return err - } - *o = res - return nil -} diff --git a/internal/httpclient/client/read/get_expand_responses.go b/internal/httpclient/client/read/get_expand_responses.go index 6404a0929..e855a248b 100644 --- a/internal/httpclient/client/read/get_expand_responses.go +++ b/internal/httpclient/client/read/get_expand_responses.go @@ -6,13 +6,11 @@ package read // Editing this file might prove futile when you re-run the swagger generate command import ( - "context" "fmt" "io" "github.com/go-openapi/runtime" "github.com/go-openapi/strfmt" - "github.com/go-openapi/swag" "github.com/ory/keto/internal/httpclient/models" ) @@ -93,22 +91,22 @@ func NewGetExpandBadRequest() *GetExpandBadRequest { /* GetExpandBadRequest describes a response with status code 400, with default header values. -The standard error format +genericError */ type GetExpandBadRequest struct { - Payload *GetExpandBadRequestBody + Payload *models.GenericError } func (o *GetExpandBadRequest) Error() string { return fmt.Sprintf("[GET /expand][%d] getExpandBadRequest %+v", 400, o.Payload) } -func (o *GetExpandBadRequest) GetPayload() *GetExpandBadRequestBody { +func (o *GetExpandBadRequest) GetPayload() *models.GenericError { return o.Payload } func (o *GetExpandBadRequest) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { - o.Payload = new(GetExpandBadRequestBody) + o.Payload = new(models.GenericError) // response payload if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { @@ -125,22 +123,22 @@ func NewGetExpandNotFound() *GetExpandNotFound { /* GetExpandNotFound describes a response with status code 404, with default header values. -The standard error format +genericError */ type GetExpandNotFound struct { - Payload *GetExpandNotFoundBody + Payload *models.GenericError } func (o *GetExpandNotFound) Error() string { return fmt.Sprintf("[GET /expand][%d] getExpandNotFound %+v", 404, o.Payload) } -func (o *GetExpandNotFound) GetPayload() *GetExpandNotFoundBody { +func (o *GetExpandNotFound) GetPayload() *models.GenericError { return o.Payload } func (o *GetExpandNotFound) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { - o.Payload = new(GetExpandNotFoundBody) + o.Payload = new(models.GenericError) // response payload if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { @@ -157,22 +155,22 @@ func NewGetExpandInternalServerError() *GetExpandInternalServerError { /* GetExpandInternalServerError describes a response with status code 500, with default header values. -The standard error format +genericError */ type GetExpandInternalServerError struct { - Payload *GetExpandInternalServerErrorBody + Payload *models.GenericError } func (o *GetExpandInternalServerError) Error() string { return fmt.Sprintf("[GET /expand][%d] getExpandInternalServerError %+v", 500, o.Payload) } -func (o *GetExpandInternalServerError) GetPayload() *GetExpandInternalServerErrorBody { +func (o *GetExpandInternalServerError) GetPayload() *models.GenericError { return o.Payload } func (o *GetExpandInternalServerError) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { - o.Payload = new(GetExpandInternalServerErrorBody) + o.Payload = new(models.GenericError) // response payload if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { @@ -181,159 +179,3 @@ func (o *GetExpandInternalServerError) readResponse(response runtime.ClientRespo return nil } - -/*GetExpandBadRequestBody get expand bad request body -swagger:model GetExpandBadRequestBody -*/ -type GetExpandBadRequestBody struct { - - // code - Code int64 `json:"code,omitempty"` - - // details - Details []interface{} `json:"details"` - - // message - Message string `json:"message,omitempty"` - - // reason - Reason string `json:"reason,omitempty"` - - // request - Request string `json:"request,omitempty"` - - // status - Status string `json:"status,omitempty"` -} - -// Validate validates this get expand bad request body -func (o *GetExpandBadRequestBody) Validate(formats strfmt.Registry) error { - return nil -} - -// ContextValidate validates this get expand bad request body based on context it is used -func (o *GetExpandBadRequestBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error { - return nil -} - -// MarshalBinary interface implementation -func (o *GetExpandBadRequestBody) MarshalBinary() ([]byte, error) { - if o == nil { - return nil, nil - } - return swag.WriteJSON(o) -} - -// UnmarshalBinary interface implementation -func (o *GetExpandBadRequestBody) UnmarshalBinary(b []byte) error { - var res GetExpandBadRequestBody - if err := swag.ReadJSON(b, &res); err != nil { - return err - } - *o = res - return nil -} - -/*GetExpandInternalServerErrorBody get expand internal server error body -swagger:model GetExpandInternalServerErrorBody -*/ -type GetExpandInternalServerErrorBody struct { - - // code - Code int64 `json:"code,omitempty"` - - // details - Details []interface{} `json:"details"` - - // message - Message string `json:"message,omitempty"` - - // reason - Reason string `json:"reason,omitempty"` - - // request - Request string `json:"request,omitempty"` - - // status - Status string `json:"status,omitempty"` -} - -// Validate validates this get expand internal server error body -func (o *GetExpandInternalServerErrorBody) Validate(formats strfmt.Registry) error { - return nil -} - -// ContextValidate validates this get expand internal server error body based on context it is used -func (o *GetExpandInternalServerErrorBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error { - return nil -} - -// MarshalBinary interface implementation -func (o *GetExpandInternalServerErrorBody) MarshalBinary() ([]byte, error) { - if o == nil { - return nil, nil - } - return swag.WriteJSON(o) -} - -// UnmarshalBinary interface implementation -func (o *GetExpandInternalServerErrorBody) UnmarshalBinary(b []byte) error { - var res GetExpandInternalServerErrorBody - if err := swag.ReadJSON(b, &res); err != nil { - return err - } - *o = res - return nil -} - -/*GetExpandNotFoundBody get expand not found body -swagger:model GetExpandNotFoundBody -*/ -type GetExpandNotFoundBody struct { - - // code - Code int64 `json:"code,omitempty"` - - // details - Details []interface{} `json:"details"` - - // message - Message string `json:"message,omitempty"` - - // reason - Reason string `json:"reason,omitempty"` - - // request - Request string `json:"request,omitempty"` - - // status - Status string `json:"status,omitempty"` -} - -// Validate validates this get expand not found body -func (o *GetExpandNotFoundBody) Validate(formats strfmt.Registry) error { - return nil -} - -// ContextValidate validates this get expand not found body based on context it is used -func (o *GetExpandNotFoundBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error { - return nil -} - -// MarshalBinary interface implementation -func (o *GetExpandNotFoundBody) MarshalBinary() ([]byte, error) { - if o == nil { - return nil, nil - } - return swag.WriteJSON(o) -} - -// UnmarshalBinary interface implementation -func (o *GetExpandNotFoundBody) UnmarshalBinary(b []byte) error { - var res GetExpandNotFoundBody - if err := swag.ReadJSON(b, &res); err != nil { - return err - } - *o = res - return nil -} diff --git a/internal/httpclient/client/read/get_relation_tuples_responses.go b/internal/httpclient/client/read/get_relation_tuples_responses.go index b799d86ed..dab71305b 100644 --- a/internal/httpclient/client/read/get_relation_tuples_responses.go +++ b/internal/httpclient/client/read/get_relation_tuples_responses.go @@ -6,13 +6,11 @@ package read // Editing this file might prove futile when you re-run the swagger generate command import ( - "context" "fmt" "io" "github.com/go-openapi/runtime" "github.com/go-openapi/strfmt" - "github.com/go-openapi/swag" "github.com/ory/keto/internal/httpclient/models" ) @@ -87,22 +85,22 @@ func NewGetRelationTuplesNotFound() *GetRelationTuplesNotFound { /* GetRelationTuplesNotFound describes a response with status code 404, with default header values. -The standard error format +genericError */ type GetRelationTuplesNotFound struct { - Payload *GetRelationTuplesNotFoundBody + Payload *models.GenericError } func (o *GetRelationTuplesNotFound) Error() string { return fmt.Sprintf("[GET /relation-tuples][%d] getRelationTuplesNotFound %+v", 404, o.Payload) } -func (o *GetRelationTuplesNotFound) GetPayload() *GetRelationTuplesNotFoundBody { +func (o *GetRelationTuplesNotFound) GetPayload() *models.GenericError { return o.Payload } func (o *GetRelationTuplesNotFound) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { - o.Payload = new(GetRelationTuplesNotFoundBody) + o.Payload = new(models.GenericError) // response payload if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { @@ -119,22 +117,22 @@ func NewGetRelationTuplesInternalServerError() *GetRelationTuplesInternalServerE /* GetRelationTuplesInternalServerError describes a response with status code 500, with default header values. -The standard error format +genericError */ type GetRelationTuplesInternalServerError struct { - Payload *GetRelationTuplesInternalServerErrorBody + Payload *models.GenericError } func (o *GetRelationTuplesInternalServerError) Error() string { return fmt.Sprintf("[GET /relation-tuples][%d] getRelationTuplesInternalServerError %+v", 500, o.Payload) } -func (o *GetRelationTuplesInternalServerError) GetPayload() *GetRelationTuplesInternalServerErrorBody { +func (o *GetRelationTuplesInternalServerError) GetPayload() *models.GenericError { return o.Payload } func (o *GetRelationTuplesInternalServerError) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { - o.Payload = new(GetRelationTuplesInternalServerErrorBody) + o.Payload = new(models.GenericError) // response payload if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { @@ -143,107 +141,3 @@ func (o *GetRelationTuplesInternalServerError) readResponse(response runtime.Cli return nil } - -/*GetRelationTuplesInternalServerErrorBody get relation tuples internal server error body -swagger:model GetRelationTuplesInternalServerErrorBody -*/ -type GetRelationTuplesInternalServerErrorBody struct { - - // code - Code int64 `json:"code,omitempty"` - - // details - Details []interface{} `json:"details"` - - // message - Message string `json:"message,omitempty"` - - // reason - Reason string `json:"reason,omitempty"` - - // request - Request string `json:"request,omitempty"` - - // status - Status string `json:"status,omitempty"` -} - -// Validate validates this get relation tuples internal server error body -func (o *GetRelationTuplesInternalServerErrorBody) Validate(formats strfmt.Registry) error { - return nil -} - -// ContextValidate validates this get relation tuples internal server error body based on context it is used -func (o *GetRelationTuplesInternalServerErrorBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error { - return nil -} - -// MarshalBinary interface implementation -func (o *GetRelationTuplesInternalServerErrorBody) MarshalBinary() ([]byte, error) { - if o == nil { - return nil, nil - } - return swag.WriteJSON(o) -} - -// UnmarshalBinary interface implementation -func (o *GetRelationTuplesInternalServerErrorBody) UnmarshalBinary(b []byte) error { - var res GetRelationTuplesInternalServerErrorBody - if err := swag.ReadJSON(b, &res); err != nil { - return err - } - *o = res - return nil -} - -/*GetRelationTuplesNotFoundBody get relation tuples not found body -swagger:model GetRelationTuplesNotFoundBody -*/ -type GetRelationTuplesNotFoundBody struct { - - // code - Code int64 `json:"code,omitempty"` - - // details - Details []interface{} `json:"details"` - - // message - Message string `json:"message,omitempty"` - - // reason - Reason string `json:"reason,omitempty"` - - // request - Request string `json:"request,omitempty"` - - // status - Status string `json:"status,omitempty"` -} - -// Validate validates this get relation tuples not found body -func (o *GetRelationTuplesNotFoundBody) Validate(formats strfmt.Registry) error { - return nil -} - -// ContextValidate validates this get relation tuples not found body based on context it is used -func (o *GetRelationTuplesNotFoundBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error { - return nil -} - -// MarshalBinary interface implementation -func (o *GetRelationTuplesNotFoundBody) MarshalBinary() ([]byte, error) { - if o == nil { - return nil, nil - } - return swag.WriteJSON(o) -} - -// UnmarshalBinary interface implementation -func (o *GetRelationTuplesNotFoundBody) UnmarshalBinary(b []byte) error { - var res GetRelationTuplesNotFoundBody - if err := swag.ReadJSON(b, &res); err != nil { - return err - } - *o = res - return nil -} diff --git a/internal/httpclient/client/read/post_check_responses.go b/internal/httpclient/client/read/post_check_responses.go index c2a56b716..d53346e91 100644 --- a/internal/httpclient/client/read/post_check_responses.go +++ b/internal/httpclient/client/read/post_check_responses.go @@ -6,13 +6,11 @@ package read // Editing this file might prove futile when you re-run the swagger generate command import ( - "context" "fmt" "io" "github.com/go-openapi/runtime" "github.com/go-openapi/strfmt" - "github.com/go-openapi/swag" "github.com/ory/keto/internal/httpclient/models" ) @@ -93,22 +91,22 @@ func NewPostCheckBadRequest() *PostCheckBadRequest { /* PostCheckBadRequest describes a response with status code 400, with default header values. -The standard error format +genericError */ type PostCheckBadRequest struct { - Payload *PostCheckBadRequestBody + Payload *models.GenericError } func (o *PostCheckBadRequest) Error() string { return fmt.Sprintf("[POST /check][%d] postCheckBadRequest %+v", 400, o.Payload) } -func (o *PostCheckBadRequest) GetPayload() *PostCheckBadRequestBody { +func (o *PostCheckBadRequest) GetPayload() *models.GenericError { return o.Payload } func (o *PostCheckBadRequest) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { - o.Payload = new(PostCheckBadRequestBody) + o.Payload = new(models.GenericError) // response payload if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { @@ -157,22 +155,22 @@ func NewPostCheckInternalServerError() *PostCheckInternalServerError { /* PostCheckInternalServerError describes a response with status code 500, with default header values. -The standard error format +genericError */ type PostCheckInternalServerError struct { - Payload *PostCheckInternalServerErrorBody + Payload *models.GenericError } func (o *PostCheckInternalServerError) Error() string { return fmt.Sprintf("[POST /check][%d] postCheckInternalServerError %+v", 500, o.Payload) } -func (o *PostCheckInternalServerError) GetPayload() *PostCheckInternalServerErrorBody { +func (o *PostCheckInternalServerError) GetPayload() *models.GenericError { return o.Payload } func (o *PostCheckInternalServerError) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { - o.Payload = new(PostCheckInternalServerErrorBody) + o.Payload = new(models.GenericError) // response payload if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { @@ -181,107 +179,3 @@ func (o *PostCheckInternalServerError) readResponse(response runtime.ClientRespo return nil } - -/*PostCheckBadRequestBody post check bad request body -swagger:model PostCheckBadRequestBody -*/ -type PostCheckBadRequestBody struct { - - // code - Code int64 `json:"code,omitempty"` - - // details - Details []interface{} `json:"details"` - - // message - Message string `json:"message,omitempty"` - - // reason - Reason string `json:"reason,omitempty"` - - // request - Request string `json:"request,omitempty"` - - // status - Status string `json:"status,omitempty"` -} - -// Validate validates this post check bad request body -func (o *PostCheckBadRequestBody) Validate(formats strfmt.Registry) error { - return nil -} - -// ContextValidate validates this post check bad request body based on context it is used -func (o *PostCheckBadRequestBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error { - return nil -} - -// MarshalBinary interface implementation -func (o *PostCheckBadRequestBody) MarshalBinary() ([]byte, error) { - if o == nil { - return nil, nil - } - return swag.WriteJSON(o) -} - -// UnmarshalBinary interface implementation -func (o *PostCheckBadRequestBody) UnmarshalBinary(b []byte) error { - var res PostCheckBadRequestBody - if err := swag.ReadJSON(b, &res); err != nil { - return err - } - *o = res - return nil -} - -/*PostCheckInternalServerErrorBody post check internal server error body -swagger:model PostCheckInternalServerErrorBody -*/ -type PostCheckInternalServerErrorBody struct { - - // code - Code int64 `json:"code,omitempty"` - - // details - Details []interface{} `json:"details"` - - // message - Message string `json:"message,omitempty"` - - // reason - Reason string `json:"reason,omitempty"` - - // request - Request string `json:"request,omitempty"` - - // status - Status string `json:"status,omitempty"` -} - -// Validate validates this post check internal server error body -func (o *PostCheckInternalServerErrorBody) Validate(formats strfmt.Registry) error { - return nil -} - -// ContextValidate validates this post check internal server error body based on context it is used -func (o *PostCheckInternalServerErrorBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error { - return nil -} - -// MarshalBinary interface implementation -func (o *PostCheckInternalServerErrorBody) MarshalBinary() ([]byte, error) { - if o == nil { - return nil, nil - } - return swag.WriteJSON(o) -} - -// UnmarshalBinary interface implementation -func (o *PostCheckInternalServerErrorBody) UnmarshalBinary(b []byte) error { - var res PostCheckInternalServerErrorBody - if err := swag.ReadJSON(b, &res); err != nil { - return err - } - *o = res - return nil -} diff --git a/internal/httpclient/client/write/create_relation_tuple_responses.go b/internal/httpclient/client/write/create_relation_tuple_responses.go index e3b365f3c..ec5593f17 100644 --- a/internal/httpclient/client/write/create_relation_tuple_responses.go +++ b/internal/httpclient/client/write/create_relation_tuple_responses.go @@ -6,13 +6,11 @@ package write // Editing this file might prove futile when you re-run the swagger generate command import ( - "context" "fmt" "io" "github.com/go-openapi/runtime" "github.com/go-openapi/strfmt" - "github.com/go-openapi/swag" "github.com/ory/keto/internal/httpclient/models" ) @@ -87,22 +85,22 @@ func NewCreateRelationTupleBadRequest() *CreateRelationTupleBadRequest { /* CreateRelationTupleBadRequest describes a response with status code 400, with default header values. -The standard error format +genericError */ type CreateRelationTupleBadRequest struct { - Payload *CreateRelationTupleBadRequestBody + Payload *models.GenericError } func (o *CreateRelationTupleBadRequest) Error() string { return fmt.Sprintf("[PUT /relation-tuples][%d] createRelationTupleBadRequest %+v", 400, o.Payload) } -func (o *CreateRelationTupleBadRequest) GetPayload() *CreateRelationTupleBadRequestBody { +func (o *CreateRelationTupleBadRequest) GetPayload() *models.GenericError { return o.Payload } func (o *CreateRelationTupleBadRequest) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { - o.Payload = new(CreateRelationTupleBadRequestBody) + o.Payload = new(models.GenericError) // response payload if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { @@ -119,22 +117,22 @@ func NewCreateRelationTupleInternalServerError() *CreateRelationTupleInternalSer /* CreateRelationTupleInternalServerError describes a response with status code 500, with default header values. -The standard error format +genericError */ type CreateRelationTupleInternalServerError struct { - Payload *CreateRelationTupleInternalServerErrorBody + Payload *models.GenericError } func (o *CreateRelationTupleInternalServerError) Error() string { return fmt.Sprintf("[PUT /relation-tuples][%d] createRelationTupleInternalServerError %+v", 500, o.Payload) } -func (o *CreateRelationTupleInternalServerError) GetPayload() *CreateRelationTupleInternalServerErrorBody { +func (o *CreateRelationTupleInternalServerError) GetPayload() *models.GenericError { return o.Payload } func (o *CreateRelationTupleInternalServerError) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { - o.Payload = new(CreateRelationTupleInternalServerErrorBody) + o.Payload = new(models.GenericError) // response payload if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { @@ -143,107 +141,3 @@ func (o *CreateRelationTupleInternalServerError) readResponse(response runtime.C return nil } - -/*CreateRelationTupleBadRequestBody create relation tuple bad request body -swagger:model CreateRelationTupleBadRequestBody -*/ -type CreateRelationTupleBadRequestBody struct { - - // code - Code int64 `json:"code,omitempty"` - - // details - Details []interface{} `json:"details"` - - // message - Message string `json:"message,omitempty"` - - // reason - Reason string `json:"reason,omitempty"` - - // request - Request string `json:"request,omitempty"` - - // status - Status string `json:"status,omitempty"` -} - -// Validate validates this create relation tuple bad request body -func (o *CreateRelationTupleBadRequestBody) Validate(formats strfmt.Registry) error { - return nil -} - -// ContextValidate validates this create relation tuple bad request body based on context it is used -func (o *CreateRelationTupleBadRequestBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error { - return nil -} - -// MarshalBinary interface implementation -func (o *CreateRelationTupleBadRequestBody) MarshalBinary() ([]byte, error) { - if o == nil { - return nil, nil - } - return swag.WriteJSON(o) -} - -// UnmarshalBinary interface implementation -func (o *CreateRelationTupleBadRequestBody) UnmarshalBinary(b []byte) error { - var res CreateRelationTupleBadRequestBody - if err := swag.ReadJSON(b, &res); err != nil { - return err - } - *o = res - return nil -} - -/*CreateRelationTupleInternalServerErrorBody create relation tuple internal server error body -swagger:model CreateRelationTupleInternalServerErrorBody -*/ -type CreateRelationTupleInternalServerErrorBody struct { - - // code - Code int64 `json:"code,omitempty"` - - // details - Details []interface{} `json:"details"` - - // message - Message string `json:"message,omitempty"` - - // reason - Reason string `json:"reason,omitempty"` - - // request - Request string `json:"request,omitempty"` - - // status - Status string `json:"status,omitempty"` -} - -// Validate validates this create relation tuple internal server error body -func (o *CreateRelationTupleInternalServerErrorBody) Validate(formats strfmt.Registry) error { - return nil -} - -// ContextValidate validates this create relation tuple internal server error body based on context it is used -func (o *CreateRelationTupleInternalServerErrorBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error { - return nil -} - -// MarshalBinary interface implementation -func (o *CreateRelationTupleInternalServerErrorBody) MarshalBinary() ([]byte, error) { - if o == nil { - return nil, nil - } - return swag.WriteJSON(o) -} - -// UnmarshalBinary interface implementation -func (o *CreateRelationTupleInternalServerErrorBody) UnmarshalBinary(b []byte) error { - var res CreateRelationTupleInternalServerErrorBody - if err := swag.ReadJSON(b, &res); err != nil { - return err - } - *o = res - return nil -} diff --git a/internal/httpclient/client/write/delete_relation_tuples_responses.go b/internal/httpclient/client/write/delete_relation_tuples_responses.go index 9c8ccdd18..9e30f997e 100644 --- a/internal/httpclient/client/write/delete_relation_tuples_responses.go +++ b/internal/httpclient/client/write/delete_relation_tuples_responses.go @@ -6,13 +6,13 @@ package write // Editing this file might prove futile when you re-run the swagger generate command import ( - "context" "fmt" "io" "github.com/go-openapi/runtime" "github.com/go-openapi/strfmt" - "github.com/go-openapi/swag" + + "github.com/ory/keto/internal/httpclient/models" ) // DeleteRelationTuplesReader is a Reader for the DeleteRelationTuples structure. @@ -74,22 +74,22 @@ func NewDeleteRelationTuplesBadRequest() *DeleteRelationTuplesBadRequest { /* DeleteRelationTuplesBadRequest describes a response with status code 400, with default header values. -The standard error format +genericError */ type DeleteRelationTuplesBadRequest struct { - Payload *DeleteRelationTuplesBadRequestBody + Payload *models.GenericError } func (o *DeleteRelationTuplesBadRequest) Error() string { return fmt.Sprintf("[DELETE /relation-tuples][%d] deleteRelationTuplesBadRequest %+v", 400, o.Payload) } -func (o *DeleteRelationTuplesBadRequest) GetPayload() *DeleteRelationTuplesBadRequestBody { +func (o *DeleteRelationTuplesBadRequest) GetPayload() *models.GenericError { return o.Payload } func (o *DeleteRelationTuplesBadRequest) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { - o.Payload = new(DeleteRelationTuplesBadRequestBody) + o.Payload = new(models.GenericError) // response payload if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { @@ -106,22 +106,22 @@ func NewDeleteRelationTuplesInternalServerError() *DeleteRelationTuplesInternalS /* DeleteRelationTuplesInternalServerError describes a response with status code 500, with default header values. -The standard error format +genericError */ type DeleteRelationTuplesInternalServerError struct { - Payload *DeleteRelationTuplesInternalServerErrorBody + Payload *models.GenericError } func (o *DeleteRelationTuplesInternalServerError) Error() string { return fmt.Sprintf("[DELETE /relation-tuples][%d] deleteRelationTuplesInternalServerError %+v", 500, o.Payload) } -func (o *DeleteRelationTuplesInternalServerError) GetPayload() *DeleteRelationTuplesInternalServerErrorBody { +func (o *DeleteRelationTuplesInternalServerError) GetPayload() *models.GenericError { return o.Payload } func (o *DeleteRelationTuplesInternalServerError) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { - o.Payload = new(DeleteRelationTuplesInternalServerErrorBody) + o.Payload = new(models.GenericError) // response payload if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { @@ -130,107 +130,3 @@ func (o *DeleteRelationTuplesInternalServerError) readResponse(response runtime. return nil } - -/*DeleteRelationTuplesBadRequestBody delete relation tuples bad request body -swagger:model DeleteRelationTuplesBadRequestBody -*/ -type DeleteRelationTuplesBadRequestBody struct { - - // code - Code int64 `json:"code,omitempty"` - - // details - Details []interface{} `json:"details"` - - // message - Message string `json:"message,omitempty"` - - // reason - Reason string `json:"reason,omitempty"` - - // request - Request string `json:"request,omitempty"` - - // status - Status string `json:"status,omitempty"` -} - -// Validate validates this delete relation tuples bad request body -func (o *DeleteRelationTuplesBadRequestBody) Validate(formats strfmt.Registry) error { - return nil -} - -// ContextValidate validates this delete relation tuples bad request body based on context it is used -func (o *DeleteRelationTuplesBadRequestBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error { - return nil -} - -// MarshalBinary interface implementation -func (o *DeleteRelationTuplesBadRequestBody) MarshalBinary() ([]byte, error) { - if o == nil { - return nil, nil - } - return swag.WriteJSON(o) -} - -// UnmarshalBinary interface implementation -func (o *DeleteRelationTuplesBadRequestBody) UnmarshalBinary(b []byte) error { - var res DeleteRelationTuplesBadRequestBody - if err := swag.ReadJSON(b, &res); err != nil { - return err - } - *o = res - return nil -} - -/*DeleteRelationTuplesInternalServerErrorBody delete relation tuples internal server error body -swagger:model DeleteRelationTuplesInternalServerErrorBody -*/ -type DeleteRelationTuplesInternalServerErrorBody struct { - - // code - Code int64 `json:"code,omitempty"` - - // details - Details []interface{} `json:"details"` - - // message - Message string `json:"message,omitempty"` - - // reason - Reason string `json:"reason,omitempty"` - - // request - Request string `json:"request,omitempty"` - - // status - Status string `json:"status,omitempty"` -} - -// Validate validates this delete relation tuples internal server error body -func (o *DeleteRelationTuplesInternalServerErrorBody) Validate(formats strfmt.Registry) error { - return nil -} - -// ContextValidate validates this delete relation tuples internal server error body based on context it is used -func (o *DeleteRelationTuplesInternalServerErrorBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error { - return nil -} - -// MarshalBinary interface implementation -func (o *DeleteRelationTuplesInternalServerErrorBody) MarshalBinary() ([]byte, error) { - if o == nil { - return nil, nil - } - return swag.WriteJSON(o) -} - -// UnmarshalBinary interface implementation -func (o *DeleteRelationTuplesInternalServerErrorBody) UnmarshalBinary(b []byte) error { - var res DeleteRelationTuplesInternalServerErrorBody - if err := swag.ReadJSON(b, &res); err != nil { - return err - } - *o = res - return nil -} diff --git a/internal/httpclient/client/write/patch_relation_tuples_responses.go b/internal/httpclient/client/write/patch_relation_tuples_responses.go index 9dc05158d..b14e10bd3 100644 --- a/internal/httpclient/client/write/patch_relation_tuples_responses.go +++ b/internal/httpclient/client/write/patch_relation_tuples_responses.go @@ -6,13 +6,13 @@ package write // Editing this file might prove futile when you re-run the swagger generate command import ( - "context" "fmt" "io" "github.com/go-openapi/runtime" "github.com/go-openapi/strfmt" - "github.com/go-openapi/swag" + + "github.com/ory/keto/internal/httpclient/models" ) // PatchRelationTuplesReader is a Reader for the PatchRelationTuples structure. @@ -80,22 +80,22 @@ func NewPatchRelationTuplesBadRequest() *PatchRelationTuplesBadRequest { /* PatchRelationTuplesBadRequest describes a response with status code 400, with default header values. -The standard error format +genericError */ type PatchRelationTuplesBadRequest struct { - Payload *PatchRelationTuplesBadRequestBody + Payload *models.GenericError } func (o *PatchRelationTuplesBadRequest) Error() string { return fmt.Sprintf("[PATCH /relation-tuples][%d] patchRelationTuplesBadRequest %+v", 400, o.Payload) } -func (o *PatchRelationTuplesBadRequest) GetPayload() *PatchRelationTuplesBadRequestBody { +func (o *PatchRelationTuplesBadRequest) GetPayload() *models.GenericError { return o.Payload } func (o *PatchRelationTuplesBadRequest) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { - o.Payload = new(PatchRelationTuplesBadRequestBody) + o.Payload = new(models.GenericError) // response payload if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { @@ -112,22 +112,22 @@ func NewPatchRelationTuplesNotFound() *PatchRelationTuplesNotFound { /* PatchRelationTuplesNotFound describes a response with status code 404, with default header values. -The standard error format +genericError */ type PatchRelationTuplesNotFound struct { - Payload *PatchRelationTuplesNotFoundBody + Payload *models.GenericError } func (o *PatchRelationTuplesNotFound) Error() string { return fmt.Sprintf("[PATCH /relation-tuples][%d] patchRelationTuplesNotFound %+v", 404, o.Payload) } -func (o *PatchRelationTuplesNotFound) GetPayload() *PatchRelationTuplesNotFoundBody { +func (o *PatchRelationTuplesNotFound) GetPayload() *models.GenericError { return o.Payload } func (o *PatchRelationTuplesNotFound) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { - o.Payload = new(PatchRelationTuplesNotFoundBody) + o.Payload = new(models.GenericError) // response payload if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { @@ -144,22 +144,22 @@ func NewPatchRelationTuplesInternalServerError() *PatchRelationTuplesInternalSer /* PatchRelationTuplesInternalServerError describes a response with status code 500, with default header values. -The standard error format +genericError */ type PatchRelationTuplesInternalServerError struct { - Payload *PatchRelationTuplesInternalServerErrorBody + Payload *models.GenericError } func (o *PatchRelationTuplesInternalServerError) Error() string { return fmt.Sprintf("[PATCH /relation-tuples][%d] patchRelationTuplesInternalServerError %+v", 500, o.Payload) } -func (o *PatchRelationTuplesInternalServerError) GetPayload() *PatchRelationTuplesInternalServerErrorBody { +func (o *PatchRelationTuplesInternalServerError) GetPayload() *models.GenericError { return o.Payload } func (o *PatchRelationTuplesInternalServerError) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { - o.Payload = new(PatchRelationTuplesInternalServerErrorBody) + o.Payload = new(models.GenericError) // response payload if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { @@ -168,159 +168,3 @@ func (o *PatchRelationTuplesInternalServerError) readResponse(response runtime.C return nil } - -/*PatchRelationTuplesBadRequestBody patch relation tuples bad request body -swagger:model PatchRelationTuplesBadRequestBody -*/ -type PatchRelationTuplesBadRequestBody struct { - - // code - Code int64 `json:"code,omitempty"` - - // details - Details []interface{} `json:"details"` - - // message - Message string `json:"message,omitempty"` - - // reason - Reason string `json:"reason,omitempty"` - - // request - Request string `json:"request,omitempty"` - - // status - Status string `json:"status,omitempty"` -} - -// Validate validates this patch relation tuples bad request body -func (o *PatchRelationTuplesBadRequestBody) Validate(formats strfmt.Registry) error { - return nil -} - -// ContextValidate validates this patch relation tuples bad request body based on context it is used -func (o *PatchRelationTuplesBadRequestBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error { - return nil -} - -// MarshalBinary interface implementation -func (o *PatchRelationTuplesBadRequestBody) MarshalBinary() ([]byte, error) { - if o == nil { - return nil, nil - } - return swag.WriteJSON(o) -} - -// UnmarshalBinary interface implementation -func (o *PatchRelationTuplesBadRequestBody) UnmarshalBinary(b []byte) error { - var res PatchRelationTuplesBadRequestBody - if err := swag.ReadJSON(b, &res); err != nil { - return err - } - *o = res - return nil -} - -/*PatchRelationTuplesInternalServerErrorBody patch relation tuples internal server error body -swagger:model PatchRelationTuplesInternalServerErrorBody -*/ -type PatchRelationTuplesInternalServerErrorBody struct { - - // code - Code int64 `json:"code,omitempty"` - - // details - Details []interface{} `json:"details"` - - // message - Message string `json:"message,omitempty"` - - // reason - Reason string `json:"reason,omitempty"` - - // request - Request string `json:"request,omitempty"` - - // status - Status string `json:"status,omitempty"` -} - -// Validate validates this patch relation tuples internal server error body -func (o *PatchRelationTuplesInternalServerErrorBody) Validate(formats strfmt.Registry) error { - return nil -} - -// ContextValidate validates this patch relation tuples internal server error body based on context it is used -func (o *PatchRelationTuplesInternalServerErrorBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error { - return nil -} - -// MarshalBinary interface implementation -func (o *PatchRelationTuplesInternalServerErrorBody) MarshalBinary() ([]byte, error) { - if o == nil { - return nil, nil - } - return swag.WriteJSON(o) -} - -// UnmarshalBinary interface implementation -func (o *PatchRelationTuplesInternalServerErrorBody) UnmarshalBinary(b []byte) error { - var res PatchRelationTuplesInternalServerErrorBody - if err := swag.ReadJSON(b, &res); err != nil { - return err - } - *o = res - return nil -} - -/*PatchRelationTuplesNotFoundBody patch relation tuples not found body -swagger:model PatchRelationTuplesNotFoundBody -*/ -type PatchRelationTuplesNotFoundBody struct { - - // code - Code int64 `json:"code,omitempty"` - - // details - Details []interface{} `json:"details"` - - // message - Message string `json:"message,omitempty"` - - // reason - Reason string `json:"reason,omitempty"` - - // request - Request string `json:"request,omitempty"` - - // status - Status string `json:"status,omitempty"` -} - -// Validate validates this patch relation tuples not found body -func (o *PatchRelationTuplesNotFoundBody) Validate(formats strfmt.Registry) error { - return nil -} - -// ContextValidate validates this patch relation tuples not found body based on context it is used -func (o *PatchRelationTuplesNotFoundBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error { - return nil -} - -// MarshalBinary interface implementation -func (o *PatchRelationTuplesNotFoundBody) MarshalBinary() ([]byte, error) { - if o == nil { - return nil, nil - } - return swag.WriteJSON(o) -} - -// UnmarshalBinary interface implementation -func (o *PatchRelationTuplesNotFoundBody) UnmarshalBinary(b []byte) error { - var res PatchRelationTuplesNotFoundBody - if err := swag.ReadJSON(b, &res); err != nil { - return err - } - *o = res - return nil -} diff --git a/internal/httpclient/models/create_relation_tuple_bad_request_body.go b/internal/httpclient/models/create_relation_tuple_bad_request_body.go new file mode 100644 index 000000000..6fcad1131 --- /dev/null +++ b/internal/httpclient/models/create_relation_tuple_bad_request_body.go @@ -0,0 +1,65 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package models + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "context" + + "github.com/go-openapi/strfmt" + "github.com/go-openapi/swag" +) + +// CreateRelationTupleBadRequestBody CreateRelationTupleBadRequestBody CreateRelationTupleBadRequestBody create relation tuple bad request body +// +// swagger:model CreateRelationTupleBadRequestBody +type CreateRelationTupleBadRequestBody struct { + + // code + Code int64 `json:"code,omitempty"` + + // details + Details []interface{} `json:"details"` + + // message + Message string `json:"message,omitempty"` + + // reason + Reason string `json:"reason,omitempty"` + + // request + Request string `json:"request,omitempty"` + + // status + Status string `json:"status,omitempty"` +} + +// Validate validates this create relation tuple bad request body +func (m *CreateRelationTupleBadRequestBody) Validate(formats strfmt.Registry) error { + return nil +} + +// ContextValidate validates this create relation tuple bad request body based on context it is used +func (m *CreateRelationTupleBadRequestBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + return nil +} + +// MarshalBinary interface implementation +func (m *CreateRelationTupleBadRequestBody) MarshalBinary() ([]byte, error) { + if m == nil { + return nil, nil + } + return swag.WriteJSON(m) +} + +// UnmarshalBinary interface implementation +func (m *CreateRelationTupleBadRequestBody) UnmarshalBinary(b []byte) error { + var res CreateRelationTupleBadRequestBody + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *m = res + return nil +} diff --git a/internal/httpclient/models/create_relation_tuple_internal_server_error_body.go b/internal/httpclient/models/create_relation_tuple_internal_server_error_body.go new file mode 100644 index 000000000..59b7327db --- /dev/null +++ b/internal/httpclient/models/create_relation_tuple_internal_server_error_body.go @@ -0,0 +1,65 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package models + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "context" + + "github.com/go-openapi/strfmt" + "github.com/go-openapi/swag" +) + +// CreateRelationTupleInternalServerErrorBody CreateRelationTupleInternalServerErrorBody CreateRelationTupleInternalServerErrorBody create relation tuple internal server error body +// +// swagger:model CreateRelationTupleInternalServerErrorBody +type CreateRelationTupleInternalServerErrorBody struct { + + // code + Code int64 `json:"code,omitempty"` + + // details + Details []interface{} `json:"details"` + + // message + Message string `json:"message,omitempty"` + + // reason + Reason string `json:"reason,omitempty"` + + // request + Request string `json:"request,omitempty"` + + // status + Status string `json:"status,omitempty"` +} + +// Validate validates this create relation tuple internal server error body +func (m *CreateRelationTupleInternalServerErrorBody) Validate(formats strfmt.Registry) error { + return nil +} + +// ContextValidate validates this create relation tuple internal server error body based on context it is used +func (m *CreateRelationTupleInternalServerErrorBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + return nil +} + +// MarshalBinary interface implementation +func (m *CreateRelationTupleInternalServerErrorBody) MarshalBinary() ([]byte, error) { + if m == nil { + return nil, nil + } + return swag.WriteJSON(m) +} + +// UnmarshalBinary interface implementation +func (m *CreateRelationTupleInternalServerErrorBody) UnmarshalBinary(b []byte) error { + var res CreateRelationTupleInternalServerErrorBody + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *m = res + return nil +} diff --git a/internal/httpclient/models/delete_relation_tuples_bad_request_body.go b/internal/httpclient/models/delete_relation_tuples_bad_request_body.go new file mode 100644 index 000000000..c562177a8 --- /dev/null +++ b/internal/httpclient/models/delete_relation_tuples_bad_request_body.go @@ -0,0 +1,65 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package models + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "context" + + "github.com/go-openapi/strfmt" + "github.com/go-openapi/swag" +) + +// DeleteRelationTuplesBadRequestBody DeleteRelationTuplesBadRequestBody DeleteRelationTuplesBadRequestBody DeleteRelationTuplesBadRequestBody DeleteRelationTuplesBadRequestBody DeleteRelationTuplesBadRequestBody delete relation tuples bad request body +// +// swagger:model DeleteRelationTuplesBadRequestBody +type DeleteRelationTuplesBadRequestBody struct { + + // code + Code int64 `json:"code,omitempty"` + + // details + Details []interface{} `json:"details"` + + // message + Message string `json:"message,omitempty"` + + // reason + Reason string `json:"reason,omitempty"` + + // request + Request string `json:"request,omitempty"` + + // status + Status string `json:"status,omitempty"` +} + +// Validate validates this delete relation tuples bad request body +func (m *DeleteRelationTuplesBadRequestBody) Validate(formats strfmt.Registry) error { + return nil +} + +// ContextValidate validates this delete relation tuples bad request body based on context it is used +func (m *DeleteRelationTuplesBadRequestBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + return nil +} + +// MarshalBinary interface implementation +func (m *DeleteRelationTuplesBadRequestBody) MarshalBinary() ([]byte, error) { + if m == nil { + return nil, nil + } + return swag.WriteJSON(m) +} + +// UnmarshalBinary interface implementation +func (m *DeleteRelationTuplesBadRequestBody) UnmarshalBinary(b []byte) error { + var res DeleteRelationTuplesBadRequestBody + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *m = res + return nil +} diff --git a/internal/httpclient/models/delete_relation_tuples_internal_server_error_body.go b/internal/httpclient/models/delete_relation_tuples_internal_server_error_body.go new file mode 100644 index 000000000..106078221 --- /dev/null +++ b/internal/httpclient/models/delete_relation_tuples_internal_server_error_body.go @@ -0,0 +1,65 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package models + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "context" + + "github.com/go-openapi/strfmt" + "github.com/go-openapi/swag" +) + +// DeleteRelationTuplesInternalServerErrorBody DeleteRelationTuplesInternalServerErrorBody DeleteRelationTuplesInternalServerErrorBody delete relation tuples internal server error body +// +// swagger:model DeleteRelationTuplesInternalServerErrorBody +type DeleteRelationTuplesInternalServerErrorBody struct { + + // code + Code int64 `json:"code,omitempty"` + + // details + Details []interface{} `json:"details"` + + // message + Message string `json:"message,omitempty"` + + // reason + Reason string `json:"reason,omitempty"` + + // request + Request string `json:"request,omitempty"` + + // status + Status string `json:"status,omitempty"` +} + +// Validate validates this delete relation tuples internal server error body +func (m *DeleteRelationTuplesInternalServerErrorBody) Validate(formats strfmt.Registry) error { + return nil +} + +// ContextValidate validates this delete relation tuples internal server error body based on context it is used +func (m *DeleteRelationTuplesInternalServerErrorBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + return nil +} + +// MarshalBinary interface implementation +func (m *DeleteRelationTuplesInternalServerErrorBody) MarshalBinary() ([]byte, error) { + if m == nil { + return nil, nil + } + return swag.WriteJSON(m) +} + +// UnmarshalBinary interface implementation +func (m *DeleteRelationTuplesInternalServerErrorBody) UnmarshalBinary(b []byte) error { + var res DeleteRelationTuplesInternalServerErrorBody + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *m = res + return nil +} diff --git a/internal/httpclient/models/generic_error.go b/internal/httpclient/models/generic_error.go new file mode 100644 index 000000000..84b5461ac --- /dev/null +++ b/internal/httpclient/models/generic_error.go @@ -0,0 +1,65 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package models + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "context" + + "github.com/go-openapi/strfmt" + "github.com/go-openapi/swag" +) + +// GenericError The standard error format +// +// swagger:model genericError +type GenericError struct { + + // code + Code int64 `json:"code,omitempty"` + + // details + Details []interface{} `json:"details"` + + // message + Message string `json:"message,omitempty"` + + // reason + Reason string `json:"reason,omitempty"` + + // request + Request string `json:"request,omitempty"` + + // status + Status string `json:"status,omitempty"` +} + +// Validate validates this generic error +func (m *GenericError) Validate(formats strfmt.Registry) error { + return nil +} + +// ContextValidate validates this generic error based on context it is used +func (m *GenericError) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + return nil +} + +// MarshalBinary interface implementation +func (m *GenericError) MarshalBinary() ([]byte, error) { + if m == nil { + return nil, nil + } + return swag.WriteJSON(m) +} + +// UnmarshalBinary interface implementation +func (m *GenericError) UnmarshalBinary(b []byte) error { + var res GenericError + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *m = res + return nil +} diff --git a/internal/httpclient/models/get_check_bad_request_body.go b/internal/httpclient/models/get_check_bad_request_body.go new file mode 100644 index 000000000..c7e8a8b0c --- /dev/null +++ b/internal/httpclient/models/get_check_bad_request_body.go @@ -0,0 +1,65 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package models + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "context" + + "github.com/go-openapi/strfmt" + "github.com/go-openapi/swag" +) + +// GetCheckBadRequestBody GetCheckBadRequestBody GetCheckBadRequestBody GetCheckBadRequestBody GetCheckBadRequestBody GetCheckBadRequestBody get check bad request body +// +// swagger:model GetCheckBadRequestBody +type GetCheckBadRequestBody struct { + + // code + Code int64 `json:"code,omitempty"` + + // details + Details []interface{} `json:"details"` + + // message + Message string `json:"message,omitempty"` + + // reason + Reason string `json:"reason,omitempty"` + + // request + Request string `json:"request,omitempty"` + + // status + Status string `json:"status,omitempty"` +} + +// Validate validates this get check bad request body +func (m *GetCheckBadRequestBody) Validate(formats strfmt.Registry) error { + return nil +} + +// ContextValidate validates this get check bad request body based on context it is used +func (m *GetCheckBadRequestBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + return nil +} + +// MarshalBinary interface implementation +func (m *GetCheckBadRequestBody) MarshalBinary() ([]byte, error) { + if m == nil { + return nil, nil + } + return swag.WriteJSON(m) +} + +// UnmarshalBinary interface implementation +func (m *GetCheckBadRequestBody) UnmarshalBinary(b []byte) error { + var res GetCheckBadRequestBody + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *m = res + return nil +} diff --git a/internal/httpclient/models/get_check_internal_server_error_body.go b/internal/httpclient/models/get_check_internal_server_error_body.go new file mode 100644 index 000000000..d778069c2 --- /dev/null +++ b/internal/httpclient/models/get_check_internal_server_error_body.go @@ -0,0 +1,65 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package models + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "context" + + "github.com/go-openapi/strfmt" + "github.com/go-openapi/swag" +) + +// GetCheckInternalServerErrorBody GetCheckInternalServerErrorBody GetCheckInternalServerErrorBody GetCheckInternalServerErrorBody get check internal server error body +// +// swagger:model GetCheckInternalServerErrorBody +type GetCheckInternalServerErrorBody struct { + + // code + Code int64 `json:"code,omitempty"` + + // details + Details []interface{} `json:"details"` + + // message + Message string `json:"message,omitempty"` + + // reason + Reason string `json:"reason,omitempty"` + + // request + Request string `json:"request,omitempty"` + + // status + Status string `json:"status,omitempty"` +} + +// Validate validates this get check internal server error body +func (m *GetCheckInternalServerErrorBody) Validate(formats strfmt.Registry) error { + return nil +} + +// ContextValidate validates this get check internal server error body based on context it is used +func (m *GetCheckInternalServerErrorBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + return nil +} + +// MarshalBinary interface implementation +func (m *GetCheckInternalServerErrorBody) MarshalBinary() ([]byte, error) { + if m == nil { + return nil, nil + } + return swag.WriteJSON(m) +} + +// UnmarshalBinary interface implementation +func (m *GetCheckInternalServerErrorBody) UnmarshalBinary(b []byte) error { + var res GetCheckInternalServerErrorBody + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *m = res + return nil +} diff --git a/internal/httpclient/models/get_check_response.go b/internal/httpclient/models/get_check_response.go index 37c08646a..2dbe6a6a7 100644 --- a/internal/httpclient/models/get_check_response.go +++ b/internal/httpclient/models/get_check_response.go @@ -14,7 +14,7 @@ import ( "github.com/go-openapi/validate" ) -// GetCheckResponse Represents the response for a check request. +// GetCheckResponse GetCheckResponse Represents the response for a check request. // // The content of the allowed field is mirrored in the HTTP status code. // diff --git a/internal/httpclient/models/get_expand_bad_request_body.go b/internal/httpclient/models/get_expand_bad_request_body.go new file mode 100644 index 000000000..c8d2b3317 --- /dev/null +++ b/internal/httpclient/models/get_expand_bad_request_body.go @@ -0,0 +1,65 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package models + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "context" + + "github.com/go-openapi/strfmt" + "github.com/go-openapi/swag" +) + +// GetExpandBadRequestBody GetExpandBadRequestBody GetExpandBadRequestBody GetExpandBadRequestBody GetExpandBadRequestBody get expand bad request body +// +// swagger:model GetExpandBadRequestBody +type GetExpandBadRequestBody struct { + + // code + Code int64 `json:"code,omitempty"` + + // details + Details []interface{} `json:"details"` + + // message + Message string `json:"message,omitempty"` + + // reason + Reason string `json:"reason,omitempty"` + + // request + Request string `json:"request,omitempty"` + + // status + Status string `json:"status,omitempty"` +} + +// Validate validates this get expand bad request body +func (m *GetExpandBadRequestBody) Validate(formats strfmt.Registry) error { + return nil +} + +// ContextValidate validates this get expand bad request body based on context it is used +func (m *GetExpandBadRequestBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + return nil +} + +// MarshalBinary interface implementation +func (m *GetExpandBadRequestBody) MarshalBinary() ([]byte, error) { + if m == nil { + return nil, nil + } + return swag.WriteJSON(m) +} + +// UnmarshalBinary interface implementation +func (m *GetExpandBadRequestBody) UnmarshalBinary(b []byte) error { + var res GetExpandBadRequestBody + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *m = res + return nil +} diff --git a/internal/httpclient/models/get_expand_internal_server_error_body.go b/internal/httpclient/models/get_expand_internal_server_error_body.go new file mode 100644 index 000000000..1924f381f --- /dev/null +++ b/internal/httpclient/models/get_expand_internal_server_error_body.go @@ -0,0 +1,65 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package models + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "context" + + "github.com/go-openapi/strfmt" + "github.com/go-openapi/swag" +) + +// GetExpandInternalServerErrorBody GetExpandInternalServerErrorBody GetExpandInternalServerErrorBody get expand internal server error body +// +// swagger:model GetExpandInternalServerErrorBody +type GetExpandInternalServerErrorBody struct { + + // code + Code int64 `json:"code,omitempty"` + + // details + Details []interface{} `json:"details"` + + // message + Message string `json:"message,omitempty"` + + // reason + Reason string `json:"reason,omitempty"` + + // request + Request string `json:"request,omitempty"` + + // status + Status string `json:"status,omitempty"` +} + +// Validate validates this get expand internal server error body +func (m *GetExpandInternalServerErrorBody) Validate(formats strfmt.Registry) error { + return nil +} + +// ContextValidate validates this get expand internal server error body based on context it is used +func (m *GetExpandInternalServerErrorBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + return nil +} + +// MarshalBinary interface implementation +func (m *GetExpandInternalServerErrorBody) MarshalBinary() ([]byte, error) { + if m == nil { + return nil, nil + } + return swag.WriteJSON(m) +} + +// UnmarshalBinary interface implementation +func (m *GetExpandInternalServerErrorBody) UnmarshalBinary(b []byte) error { + var res GetExpandInternalServerErrorBody + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *m = res + return nil +} diff --git a/internal/httpclient/models/get_expand_not_found_body.go b/internal/httpclient/models/get_expand_not_found_body.go new file mode 100644 index 000000000..4b7bae51e --- /dev/null +++ b/internal/httpclient/models/get_expand_not_found_body.go @@ -0,0 +1,65 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package models + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "context" + + "github.com/go-openapi/strfmt" + "github.com/go-openapi/swag" +) + +// GetExpandNotFoundBody GetExpandNotFoundBody GetExpandNotFoundBody GetExpandNotFoundBody GetExpandNotFoundBody get expand not found body +// +// swagger:model GetExpandNotFoundBody +type GetExpandNotFoundBody struct { + + // code + Code int64 `json:"code,omitempty"` + + // details + Details []interface{} `json:"details"` + + // message + Message string `json:"message,omitempty"` + + // reason + Reason string `json:"reason,omitempty"` + + // request + Request string `json:"request,omitempty"` + + // status + Status string `json:"status,omitempty"` +} + +// Validate validates this get expand not found body +func (m *GetExpandNotFoundBody) Validate(formats strfmt.Registry) error { + return nil +} + +// ContextValidate validates this get expand not found body based on context it is used +func (m *GetExpandNotFoundBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + return nil +} + +// MarshalBinary interface implementation +func (m *GetExpandNotFoundBody) MarshalBinary() ([]byte, error) { + if m == nil { + return nil, nil + } + return swag.WriteJSON(m) +} + +// UnmarshalBinary interface implementation +func (m *GetExpandNotFoundBody) UnmarshalBinary(b []byte) error { + var res GetExpandNotFoundBody + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *m = res + return nil +} diff --git a/internal/httpclient/models/get_relation_tuples_internal_server_error_body.go b/internal/httpclient/models/get_relation_tuples_internal_server_error_body.go new file mode 100644 index 000000000..4158eaaca --- /dev/null +++ b/internal/httpclient/models/get_relation_tuples_internal_server_error_body.go @@ -0,0 +1,65 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package models + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "context" + + "github.com/go-openapi/strfmt" + "github.com/go-openapi/swag" +) + +// GetRelationTuplesInternalServerErrorBody GetRelationTuplesInternalServerErrorBody GetRelationTuplesInternalServerErrorBody get relation tuples internal server error body +// +// swagger:model GetRelationTuplesInternalServerErrorBody +type GetRelationTuplesInternalServerErrorBody struct { + + // code + Code int64 `json:"code,omitempty"` + + // details + Details []interface{} `json:"details"` + + // message + Message string `json:"message,omitempty"` + + // reason + Reason string `json:"reason,omitempty"` + + // request + Request string `json:"request,omitempty"` + + // status + Status string `json:"status,omitempty"` +} + +// Validate validates this get relation tuples internal server error body +func (m *GetRelationTuplesInternalServerErrorBody) Validate(formats strfmt.Registry) error { + return nil +} + +// ContextValidate validates this get relation tuples internal server error body based on context it is used +func (m *GetRelationTuplesInternalServerErrorBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + return nil +} + +// MarshalBinary interface implementation +func (m *GetRelationTuplesInternalServerErrorBody) MarshalBinary() ([]byte, error) { + if m == nil { + return nil, nil + } + return swag.WriteJSON(m) +} + +// UnmarshalBinary interface implementation +func (m *GetRelationTuplesInternalServerErrorBody) UnmarshalBinary(b []byte) error { + var res GetRelationTuplesInternalServerErrorBody + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *m = res + return nil +} diff --git a/internal/httpclient/models/get_relation_tuples_not_found_body.go b/internal/httpclient/models/get_relation_tuples_not_found_body.go new file mode 100644 index 000000000..67bb66369 --- /dev/null +++ b/internal/httpclient/models/get_relation_tuples_not_found_body.go @@ -0,0 +1,65 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package models + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "context" + + "github.com/go-openapi/strfmt" + "github.com/go-openapi/swag" +) + +// GetRelationTuplesNotFoundBody GetRelationTuplesNotFoundBody GetRelationTuplesNotFoundBody get relation tuples not found body +// +// swagger:model GetRelationTuplesNotFoundBody +type GetRelationTuplesNotFoundBody struct { + + // code + Code int64 `json:"code,omitempty"` + + // details + Details []interface{} `json:"details"` + + // message + Message string `json:"message,omitempty"` + + // reason + Reason string `json:"reason,omitempty"` + + // request + Request string `json:"request,omitempty"` + + // status + Status string `json:"status,omitempty"` +} + +// Validate validates this get relation tuples not found body +func (m *GetRelationTuplesNotFoundBody) Validate(formats strfmt.Registry) error { + return nil +} + +// ContextValidate validates this get relation tuples not found body based on context it is used +func (m *GetRelationTuplesNotFoundBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + return nil +} + +// MarshalBinary interface implementation +func (m *GetRelationTuplesNotFoundBody) MarshalBinary() ([]byte, error) { + if m == nil { + return nil, nil + } + return swag.WriteJSON(m) +} + +// UnmarshalBinary interface implementation +func (m *GetRelationTuplesNotFoundBody) UnmarshalBinary(b []byte) error { + var res GetRelationTuplesNotFoundBody + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *m = res + return nil +} diff --git a/internal/httpclient/models/get_relation_tuples_response.go b/internal/httpclient/models/get_relation_tuples_response.go index e83f0dc18..cb58e8f36 100644 --- a/internal/httpclient/models/get_relation_tuples_response.go +++ b/internal/httpclient/models/get_relation_tuples_response.go @@ -14,7 +14,7 @@ import ( "github.com/go-openapi/swag" ) -// GetRelationTuplesResponse get relation tuples response +// GetRelationTuplesResponse GetRelationTuplesResponse GetRelationTuplesResponse GetRelationTuplesResponse GetRelationTuplesResponse GetRelationTuplesResponse get relation tuples response // // swagger:model getRelationTuplesResponse type GetRelationTuplesResponse struct { diff --git a/internal/httpclient/models/health_status.go b/internal/httpclient/models/health_status.go index 5525dbc20..a2057e101 100644 --- a/internal/httpclient/models/health_status.go +++ b/internal/httpclient/models/health_status.go @@ -12,7 +12,7 @@ import ( "github.com/go-openapi/swag" ) -// HealthStatus health status +// HealthStatus HealthStatus health status // // swagger:model healthStatus type HealthStatus struct { diff --git a/internal/httpclient/models/is_instance_alive_internal_server_error_body.go b/internal/httpclient/models/is_instance_alive_internal_server_error_body.go new file mode 100644 index 000000000..2d9dc89d9 --- /dev/null +++ b/internal/httpclient/models/is_instance_alive_internal_server_error_body.go @@ -0,0 +1,65 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package models + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "context" + + "github.com/go-openapi/strfmt" + "github.com/go-openapi/swag" +) + +// IsInstanceAliveInternalServerErrorBody IsInstanceAliveInternalServerErrorBody IsInstanceAliveInternalServerErrorBody IsInstanceAliveInternalServerErrorBody IsInstanceAliveInternalServerErrorBody is instance alive internal server error body +// +// swagger:model IsInstanceAliveInternalServerErrorBody +type IsInstanceAliveInternalServerErrorBody struct { + + // code + Code int64 `json:"code,omitempty"` + + // details + Details []interface{} `json:"details"` + + // message + Message string `json:"message,omitempty"` + + // reason + Reason string `json:"reason,omitempty"` + + // request + Request string `json:"request,omitempty"` + + // status + Status string `json:"status,omitempty"` +} + +// Validate validates this is instance alive internal server error body +func (m *IsInstanceAliveInternalServerErrorBody) Validate(formats strfmt.Registry) error { + return nil +} + +// ContextValidate validates this is instance alive internal server error body based on context it is used +func (m *IsInstanceAliveInternalServerErrorBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + return nil +} + +// MarshalBinary interface implementation +func (m *IsInstanceAliveInternalServerErrorBody) MarshalBinary() ([]byte, error) { + if m == nil { + return nil, nil + } + return swag.WriteJSON(m) +} + +// UnmarshalBinary interface implementation +func (m *IsInstanceAliveInternalServerErrorBody) UnmarshalBinary(b []byte) error { + var res IsInstanceAliveInternalServerErrorBody + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *m = res + return nil +} diff --git a/internal/httpclient/models/patch_delta.go b/internal/httpclient/models/patch_delta.go index 2a02a7efb..b5118203a 100644 --- a/internal/httpclient/models/patch_delta.go +++ b/internal/httpclient/models/patch_delta.go @@ -15,13 +15,13 @@ import ( "github.com/go-openapi/validate" ) -// PatchDelta patch delta +// PatchDelta PatchDelta PatchDelta PatchDelta PatchDelta PatchDelta PatchDelta patch delta // // swagger:model PatchDelta type PatchDelta struct { // action - // Enum: [insert delete] + // Enum: [[[[[[[insert delete]]]]]]] Action string `json:"action,omitempty"` // relation tuple @@ -50,7 +50,7 @@ var patchDeltaTypeActionPropEnum []interface{} func init() { var res []string - if err := json.Unmarshal([]byte(`["insert","delete"]`), &res); err != nil { + if err := json.Unmarshal([]byte(`["[[[[[[insert delete]]]]]]"]`), &res); err != nil { panic(err) } for _, v := range res { @@ -60,11 +60,8 @@ func init() { const ( - // PatchDeltaActionInsert captures enum value "insert" - PatchDeltaActionInsert string = "insert" - - // PatchDeltaActionDelete captures enum value "delete" - PatchDeltaActionDelete string = "delete" + // PatchDeltaActionInsertDelete captures enum value "[[[[[[insert delete]]]]]]" + PatchDeltaActionInsertDelete string = "[[[[[[insert delete]]]]]]" ) // prop value enum diff --git a/internal/httpclient/models/patch_relation_tuples_bad_request_body.go b/internal/httpclient/models/patch_relation_tuples_bad_request_body.go new file mode 100644 index 000000000..a295e2861 --- /dev/null +++ b/internal/httpclient/models/patch_relation_tuples_bad_request_body.go @@ -0,0 +1,65 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package models + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "context" + + "github.com/go-openapi/strfmt" + "github.com/go-openapi/swag" +) + +// PatchRelationTuplesBadRequestBody PatchRelationTuplesBadRequestBody PatchRelationTuplesBadRequestBody patch relation tuples bad request body +// +// swagger:model PatchRelationTuplesBadRequestBody +type PatchRelationTuplesBadRequestBody struct { + + // code + Code int64 `json:"code,omitempty"` + + // details + Details []interface{} `json:"details"` + + // message + Message string `json:"message,omitempty"` + + // reason + Reason string `json:"reason,omitempty"` + + // request + Request string `json:"request,omitempty"` + + // status + Status string `json:"status,omitempty"` +} + +// Validate validates this patch relation tuples bad request body +func (m *PatchRelationTuplesBadRequestBody) Validate(formats strfmt.Registry) error { + return nil +} + +// ContextValidate validates this patch relation tuples bad request body based on context it is used +func (m *PatchRelationTuplesBadRequestBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + return nil +} + +// MarshalBinary interface implementation +func (m *PatchRelationTuplesBadRequestBody) MarshalBinary() ([]byte, error) { + if m == nil { + return nil, nil + } + return swag.WriteJSON(m) +} + +// UnmarshalBinary interface implementation +func (m *PatchRelationTuplesBadRequestBody) UnmarshalBinary(b []byte) error { + var res PatchRelationTuplesBadRequestBody + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *m = res + return nil +} diff --git a/internal/httpclient/models/patch_relation_tuples_internal_server_error_body.go b/internal/httpclient/models/patch_relation_tuples_internal_server_error_body.go new file mode 100644 index 000000000..ab3a744bf --- /dev/null +++ b/internal/httpclient/models/patch_relation_tuples_internal_server_error_body.go @@ -0,0 +1,65 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package models + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "context" + + "github.com/go-openapi/strfmt" + "github.com/go-openapi/swag" +) + +// PatchRelationTuplesInternalServerErrorBody PatchRelationTuplesInternalServerErrorBody PatchRelationTuplesInternalServerErrorBody patch relation tuples internal server error body +// +// swagger:model PatchRelationTuplesInternalServerErrorBody +type PatchRelationTuplesInternalServerErrorBody struct { + + // code + Code int64 `json:"code,omitempty"` + + // details + Details []interface{} `json:"details"` + + // message + Message string `json:"message,omitempty"` + + // reason + Reason string `json:"reason,omitempty"` + + // request + Request string `json:"request,omitempty"` + + // status + Status string `json:"status,omitempty"` +} + +// Validate validates this patch relation tuples internal server error body +func (m *PatchRelationTuplesInternalServerErrorBody) Validate(formats strfmt.Registry) error { + return nil +} + +// ContextValidate validates this patch relation tuples internal server error body based on context it is used +func (m *PatchRelationTuplesInternalServerErrorBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + return nil +} + +// MarshalBinary interface implementation +func (m *PatchRelationTuplesInternalServerErrorBody) MarshalBinary() ([]byte, error) { + if m == nil { + return nil, nil + } + return swag.WriteJSON(m) +} + +// UnmarshalBinary interface implementation +func (m *PatchRelationTuplesInternalServerErrorBody) UnmarshalBinary(b []byte) error { + var res PatchRelationTuplesInternalServerErrorBody + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *m = res + return nil +} diff --git a/internal/httpclient/models/patch_relation_tuples_not_found_body.go b/internal/httpclient/models/patch_relation_tuples_not_found_body.go new file mode 100644 index 000000000..79e7f7bfc --- /dev/null +++ b/internal/httpclient/models/patch_relation_tuples_not_found_body.go @@ -0,0 +1,65 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package models + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "context" + + "github.com/go-openapi/strfmt" + "github.com/go-openapi/swag" +) + +// PatchRelationTuplesNotFoundBody PatchRelationTuplesNotFoundBody PatchRelationTuplesNotFoundBody patch relation tuples not found body +// +// swagger:model PatchRelationTuplesNotFoundBody +type PatchRelationTuplesNotFoundBody struct { + + // code + Code int64 `json:"code,omitempty"` + + // details + Details []interface{} `json:"details"` + + // message + Message string `json:"message,omitempty"` + + // reason + Reason string `json:"reason,omitempty"` + + // request + Request string `json:"request,omitempty"` + + // status + Status string `json:"status,omitempty"` +} + +// Validate validates this patch relation tuples not found body +func (m *PatchRelationTuplesNotFoundBody) Validate(formats strfmt.Registry) error { + return nil +} + +// ContextValidate validates this patch relation tuples not found body based on context it is used +func (m *PatchRelationTuplesNotFoundBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + return nil +} + +// MarshalBinary interface implementation +func (m *PatchRelationTuplesNotFoundBody) MarshalBinary() ([]byte, error) { + if m == nil { + return nil, nil + } + return swag.WriteJSON(m) +} + +// UnmarshalBinary interface implementation +func (m *PatchRelationTuplesNotFoundBody) UnmarshalBinary(b []byte) error { + var res PatchRelationTuplesNotFoundBody + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *m = res + return nil +} diff --git a/internal/httpclient/models/post_check_bad_request_body.go b/internal/httpclient/models/post_check_bad_request_body.go new file mode 100644 index 000000000..5f11603d5 --- /dev/null +++ b/internal/httpclient/models/post_check_bad_request_body.go @@ -0,0 +1,65 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package models + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "context" + + "github.com/go-openapi/strfmt" + "github.com/go-openapi/swag" +) + +// PostCheckBadRequestBody PostCheckBadRequestBody PostCheckBadRequestBody PostCheckBadRequestBody PostCheckBadRequestBody PostCheckBadRequestBody PostCheckBadRequestBody post check bad request body +// +// swagger:model PostCheckBadRequestBody +type PostCheckBadRequestBody struct { + + // code + Code int64 `json:"code,omitempty"` + + // details + Details []interface{} `json:"details"` + + // message + Message string `json:"message,omitempty"` + + // reason + Reason string `json:"reason,omitempty"` + + // request + Request string `json:"request,omitempty"` + + // status + Status string `json:"status,omitempty"` +} + +// Validate validates this post check bad request body +func (m *PostCheckBadRequestBody) Validate(formats strfmt.Registry) error { + return nil +} + +// ContextValidate validates this post check bad request body based on context it is used +func (m *PostCheckBadRequestBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + return nil +} + +// MarshalBinary interface implementation +func (m *PostCheckBadRequestBody) MarshalBinary() ([]byte, error) { + if m == nil { + return nil, nil + } + return swag.WriteJSON(m) +} + +// UnmarshalBinary interface implementation +func (m *PostCheckBadRequestBody) UnmarshalBinary(b []byte) error { + var res PostCheckBadRequestBody + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *m = res + return nil +} diff --git a/internal/httpclient/models/post_check_internal_server_error_body.go b/internal/httpclient/models/post_check_internal_server_error_body.go new file mode 100644 index 000000000..de5e2fa4c --- /dev/null +++ b/internal/httpclient/models/post_check_internal_server_error_body.go @@ -0,0 +1,65 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package models + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "context" + + "github.com/go-openapi/strfmt" + "github.com/go-openapi/swag" +) + +// PostCheckInternalServerErrorBody PostCheckInternalServerErrorBody PostCheckInternalServerErrorBody post check internal server error body +// +// swagger:model PostCheckInternalServerErrorBody +type PostCheckInternalServerErrorBody struct { + + // code + Code int64 `json:"code,omitempty"` + + // details + Details []interface{} `json:"details"` + + // message + Message string `json:"message,omitempty"` + + // reason + Reason string `json:"reason,omitempty"` + + // request + Request string `json:"request,omitempty"` + + // status + Status string `json:"status,omitempty"` +} + +// Validate validates this post check internal server error body +func (m *PostCheckInternalServerErrorBody) Validate(formats strfmt.Registry) error { + return nil +} + +// ContextValidate validates this post check internal server error body based on context it is used +func (m *PostCheckInternalServerErrorBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + return nil +} + +// MarshalBinary interface implementation +func (m *PostCheckInternalServerErrorBody) MarshalBinary() ([]byte, error) { + if m == nil { + return nil, nil + } + return swag.WriteJSON(m) +} + +// UnmarshalBinary interface implementation +func (m *PostCheckInternalServerErrorBody) UnmarshalBinary(b []byte) error { + var res PostCheckInternalServerErrorBody + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *m = res + return nil +} diff --git a/internal/httpclient/models/relation_query.go b/internal/httpclient/models/relation_query.go index 18e256a82..514b50af5 100644 --- a/internal/httpclient/models/relation_query.go +++ b/internal/httpclient/models/relation_query.go @@ -13,7 +13,7 @@ import ( "github.com/go-openapi/swag" ) -// RelationQuery relation query +// RelationQuery RelationQuery RelationQuery RelationQuery RelationQuery RelationQuery RelationQuery relation query // // swagger:model RelationQuery type RelationQuery struct { diff --git a/internal/httpclient/models/subject.go b/internal/httpclient/models/subject.go new file mode 100644 index 000000000..55e85e3a5 --- /dev/null +++ b/internal/httpclient/models/subject.go @@ -0,0 +1,11 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package models + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +// Subject Subject Subject Subject subject +// +// swagger:model subject +type Subject interface{} diff --git a/internal/httpclient/models/uuid.go b/internal/httpclient/models/uuid.go new file mode 100644 index 000000000..5ce11709b --- /dev/null +++ b/internal/httpclient/models/uuid.go @@ -0,0 +1,38 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package models + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "context" + + "github.com/go-openapi/errors" + "github.com/go-openapi/strfmt" + "github.com/go-openapi/validate" +) + +// UUID UUID +// +// swagger:model UUID +type UUID strfmt.UUID4 + +// Validate validates this UUID +func (m UUID) Validate(formats strfmt.Registry) error { + var res []error + + if err := validate.FormatOf("", "body", "uuid4", strfmt.UUID4(m).String(), formats); err != nil { + return err + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +// ContextValidate validates this UUID based on context it is used +func (m UUID) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + return nil +} diff --git a/openapitools.json b/openapitools.json new file mode 100644 index 000000000..601ac1d61 --- /dev/null +++ b/openapitools.json @@ -0,0 +1,7 @@ +{ + "$schema": "node_modules/@openapitools/openapi-generator-cli/config.schema.json", + "spaces": 2, + "generator-cli": { + "version": "5.2.1" + } +} diff --git a/package-lock.json b/package-lock.json index 872a57654..6521fc602 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "0.0.0", "license": "Apache 2.0", "dependencies": { + "@openapitools/openapi-generator-cli": "^2.1.18", "grpc_tools_node_protoc_ts": "^5.3.2", "grpc-tools": "^1.11.2" }, @@ -20,30 +21,463 @@ } }, "node_modules/@mapbox/node-pre-gyp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.5.tgz", - "integrity": "sha512-4srsKPXWlIxp5Vbqz5uLfBN+du2fJChBoYn/f2h991WLdk7jUvcSk/McVLSv/X+xQIPI8eGD5GjrnygdyHnhPA==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.8.tgz", + "integrity": "sha512-CMGKi28CF+qlbXh26hDe6NxCd7amqeAzEqnS6IHeO6LoaKyM/n+Xw3HT1COdq8cuioOdlKdqn/hCmqPUOMOywg==", "dependencies": { "detect-libc": "^1.0.3", "https-proxy-agent": "^5.0.0", "make-dir": "^3.1.0", - "node-fetch": "^2.6.1", + "node-fetch": "^2.6.5", "nopt": "^5.0.0", - "npmlog": "^4.1.2", + "npmlog": "^5.0.1", "rimraf": "^3.0.2", - "semver": "^7.3.4", - "tar": "^6.1.0" + "semver": "^7.3.5", + "tar": "^6.1.11" }, "bin": { "node-pre-gyp": "bin/node-pre-gyp" } }, "node_modules/@mapbox/node-pre-gyp/node_modules/node-fetch": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.2.tgz", - "integrity": "sha512-aLoxToI6RfZ+0NOjmWAgn9+LEd30YCkJKFSyWacNZdEKTit/ZMcKjGkTRo8uWEsnIb/hfKecNPEbln02PdWbcA==", + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, "engines": { "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/@nestjs/common": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-8.2.6.tgz", + "integrity": "sha512-flLYSXunxcKyjbYddrhwbc49uE705MxBt85rS3mHyhDbAIPSGGeZEqME44YyAzCg1NTfJSNe7ztmOce5kNkb9A==", + "dependencies": { + "axios": "0.24.0", + "iterare": "1.2.1", + "tslib": "2.3.1", + "uuid": "8.3.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "cache-manager": "*", + "class-transformer": "*", + "class-validator": "*", + "reflect-metadata": "^0.1.12", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "cache-manager": { + "optional": true + }, + "class-transformer": { + "optional": true + }, + "class-validator": { + "optional": true + } + } + }, + "node_modules/@nestjs/common/node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + }, + "node_modules/@nestjs/core": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-8.2.6.tgz", + "integrity": "sha512-NwPcEIMmCsucs3QaDlQvkoU1FlFM2wm/WjaqLQhkSoIEmAR1gNtBo88f5io5cpMwCo1k5xYhqGlaSl6TfngwWQ==", + "hasInstallScript": true, + "dependencies": { + "@nuxtjs/opencollective": "0.3.2", + "fast-safe-stringify": "2.1.1", + "iterare": "1.2.1", + "object-hash": "2.2.0", + "path-to-regexp": "3.2.0", + "tslib": "2.3.1", + "uuid": "8.3.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^8.0.0", + "@nestjs/microservices": "^8.0.0", + "@nestjs/platform-express": "^8.0.0", + "@nestjs/websockets": "^8.0.0", + "reflect-metadata": "^0.1.12", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "@nestjs/microservices": { + "optional": true + }, + "@nestjs/platform-express": { + "optional": true + }, + "@nestjs/websockets": { + "optional": true + } + } + }, + "node_modules/@nestjs/core/node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + }, + "node_modules/@nuxtjs/opencollective": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz", + "integrity": "sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==", + "dependencies": { + "chalk": "^4.1.0", + "consola": "^2.15.0", + "node-fetch": "^2.6.1" + }, + "bin": { + "opencollective": "bin/opencollective.js" + }, + "engines": { + "node": ">=8.0.0", + "npm": ">=5.0.0" + } + }, + "node_modules/@nuxtjs/opencollective/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@nuxtjs/opencollective/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@nuxtjs/opencollective/node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/@nuxtjs/opencollective/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@openapitools/openapi-generator-cli": { + "version": "2.4.26", + "resolved": "https://registry.npmjs.org/@openapitools/openapi-generator-cli/-/openapi-generator-cli-2.4.26.tgz", + "integrity": "sha512-O42H9q1HWGoIpcpMaUu318b6bmOgcjP3MieHwOrFdoG3KyttceBGlbLf9Kbf7WM91WSNCDXum7cnEKASuoGjAg==", + "hasInstallScript": true, + "dependencies": { + "@nestjs/common": "8.2.6", + "@nestjs/core": "8.2.6", + "@nuxtjs/opencollective": "0.3.2", + "chalk": "4.1.2", + "commander": "8.3.0", + "compare-versions": "3.6.0", + "concurrently": "6.5.1", + "console.table": "0.10.0", + "fs-extra": "10.0.0", + "glob": "7.1.6", + "inquirer": "8.2.0", + "lodash": "4.17.21", + "reflect-metadata": "0.1.13", + "rxjs": "7.5.2", + "tslib": "2.0.3" + }, + "bin": { + "openapi-generator-cli": "main.js" + }, + "engines": { + "node": ">=10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/openapi_generator" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/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==" + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dependencies": { + "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" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/inquirer": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.0.tgz", + "integrity": "sha512-0crLweprevJ02tTuA6ThpoAERAGyVILC4sS74uib58Xf/zSr1/ZWtmm7D5CI+bSQEaA04f0K7idaHpQbSWgiVQ==", + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.2.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/@textlint/ast-node-types": { @@ -105,6 +539,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -119,17 +554,28 @@ } }, "node_modules/aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" }, "node_modules/are-we-there-yet": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", - "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", "dependencies": { "delegates": "^1.0.0", - "readable-stream": "^2.0.6" + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/axios": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", + "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", + "dependencies": { + "follow-redirects": "^1.14.4" } }, "node_modules/babel-polyfill": { @@ -174,6 +620,35 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, "node_modules/boundary": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/boundary/-/boundary-1.0.1.tgz", @@ -189,6 +664,29 @@ "concat-map": "0.0.1" } }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "node_modules/chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", @@ -261,18 +759,84 @@ "node": ">=4" } }, + "node_modules/cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/cli-width": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", "dev": true }, - "node_modules/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=", + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "engines": { - "node": ">=0.10.0" + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/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==" + }, + "node_modules/cliui/node_modules/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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "engines": { + "node": ">=0.8" } }, "node_modules/collapse-white-space": { @@ -281,20 +845,164 @@ "integrity": "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==", "dev": true, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/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==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/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==" + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "engines": { + "node": ">= 12" + } + }, + "node_modules/compare-versions": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", + "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "node_modules/concurrently": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-6.5.1.tgz", + "integrity": "sha512-FlSwNpGjWQfRwPLXvJ/OgysbBxPkWpiVjy1042b0U7on7S7qwwMIILRj7WTN1mTgqa582bG6NFuScOoh6Zgdag==", + "dependencies": { + "chalk": "^4.1.0", + "date-fns": "^2.16.1", + "lodash": "^4.17.21", + "rxjs": "^6.6.3", + "spawn-command": "^0.0.2-1", + "supports-color": "^8.1.0", + "tree-kill": "^1.2.2", + "yargs": "^16.2.0" + }, + "bin": { + "concurrently": "bin/concurrently.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/concurrently/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/concurrently/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/concurrently/node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/concurrently/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/concurrently/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "node_modules/concurrently/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/consola": { + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", + "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==" }, "node_modules/console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" }, + "node_modules/console.table": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/console.table/-/console.table-0.10.0.tgz", + "integrity": "sha1-CRcCVYiHW+/XDPLv9L7yxuLXXQQ=", + "dependencies": { + "easy-table": "1.1.0" + }, + "engines": { + "node": "> 0.10" + } + }, "node_modules/core-js": { "version": "2.6.12", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", @@ -302,10 +1010,17 @@ "dev": true, "hasInstallScript": true }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + "node_modules/date-fns": { + "version": "2.28.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.28.0.tgz", + "integrity": "sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==", + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } }, "node_modules/debug": { "version": "4.3.2", @@ -323,6 +1038,14 @@ } } }, + "node_modules/defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dependencies": { + "clone": "^1.0.2" + } + }, "node_modules/delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", @@ -447,6 +1170,14 @@ "url": "https://github.com/fb55/domhandler?sponsor=1" } }, + "node_modules/easy-table": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.1.0.tgz", + "integrity": "sha1-hvmrTBAvA3G3KXuSplHVgkvIy3M=", + "optionalDependencies": { + "wcwidth": ">=1.0.1" + } + }, "node_modules/emoji-regex": { "version": "6.1.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.1.3.tgz", @@ -457,7 +1188,7 @@ "version": "0.1.13", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "dev": true, + "devOptional": true, "dependencies": { "iconv-lite": "^0.6.2" } @@ -466,7 +1197,7 @@ "version": "0.6.2", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", - "dev": true, + "devOptional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -483,11 +1214,18 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, "node_modules/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=", - "dev": true, "engines": { "node": ">=0.8.0" } @@ -512,6 +1250,11 @@ "node": ">=0.12" } }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" + }, "node_modules/fault": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz", @@ -537,6 +1280,25 @@ "node": ">=4" } }, + "node_modules/follow-redirects": { + "version": "1.14.8", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz", + "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/format": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", @@ -546,6 +1308,19 @@ "node": ">=0.4.x" } }, + "node_modules/fs-extra": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", + "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/fs-minipass": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", @@ -563,48 +1338,81 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "node_modules/gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", "dependencies": { - "aproba": "^1.0.3", + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gauge/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" } }, + "node_modules/gauge/node_modules/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==" + }, "node_modules/gauge/node_modules/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=", + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/gauge/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dependencies": { - "number-is-nan": "^1.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/gauge/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "node_modules/gauge/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" } }, "node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -625,6 +1433,11 @@ "resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.15.8.tgz", "integrity": "sha512-2jtfdqTaSxk0cuBJBtTTWsot4WtR9RVr2rXg7x7OoqiuOKopPrwXpM1G4dXIkLcUNRh3RKzz76C8IOkksZSeOw==" }, + "node_modules/graceful-fs": { + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" + }, "node_modules/grpc_tools_node_protoc_ts": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/grpc_tools_node_protoc_ts/-/grpc_tools_node_protoc_ts-5.3.2.tgz", @@ -687,6 +1500,14 @@ "node": ">=0.10.0" } }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, "node_modules/has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", @@ -720,7 +1541,6 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -728,6 +1548,25 @@ "node": ">=0.10.0" } }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -821,6 +1660,14 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "engines": { + "node": ">=8" + } + }, "node_modules/is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", @@ -839,6 +1686,17 @@ "node": ">=0.10.0" } }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-whitespace-character": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", @@ -859,16 +1717,84 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "node_modules/iterare": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", + "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } }, "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } }, "node_modules/lru-cache": { "version": "6.0.0", @@ -940,9 +1866,9 @@ "dev": true }, "node_modules/minipass": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.5.tgz", - "integrity": "sha512-+8NzxD82XQoNKNrl1d/FSi+X8wAEWR+sbYAfIvub4Nz0d22plFG72CEVVaufV8PNf4qSslFTD8VMOxNVhHCjTw==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", "dependencies": { "yallist": "^4.0.0" }, @@ -1014,22 +1940,14 @@ } }, "node_modules/npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", "dependencies": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "node_modules/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=", - "engines": { - "node": ">=0.10.0" + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" } }, "node_modules/object-assign": { @@ -1040,6 +1958,14 @@ "node": ">=0.10.0" } }, + "node_modules/object-hash": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", + "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==", + "engines": { + "node": ">= 6" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -1048,47 +1974,173 @@ "wrappy": "1" } }, - "node_modules/onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, + "node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/opencollective": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/opencollective/-/opencollective-1.0.3.tgz", + "integrity": "sha1-ruY3K8KBRFg2kMPKja7PwSDdDvE=", + "dev": true, + "dependencies": { + "babel-polyfill": "6.23.0", + "chalk": "1.1.3", + "inquirer": "3.0.6", + "minimist": "1.2.0", + "node-fetch": "1.6.3", + "opn": "4.0.2" + }, + "bin": { + "oc": "dist/bin/opencollective.js", + "opencollective": "dist/bin/opencollective.js" + } + }, + "node_modules/opn": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", + "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=", + "dev": true, + "dependencies": { + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ora/node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/ora/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dependencies": { - "mimic-fn": "^1.0.0" + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/opencollective": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/opencollective/-/opencollective-1.0.3.tgz", - "integrity": "sha1-ruY3K8KBRFg2kMPKja7PwSDdDvE=", - "dev": true, + "node_modules/ora/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dependencies": { - "babel-polyfill": "6.23.0", - "chalk": "1.1.3", - "inquirer": "3.0.6", - "minimist": "1.2.0", - "node-fetch": "1.6.3", - "opn": "4.0.2" + "ansi-regex": "^5.0.1" }, - "bin": { - "oc": "dist/bin/opencollective.js", - "opencollective": "dist/bin/opencollective.js" + "engines": { + "node": ">=8" } }, - "node_modules/opn": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", - "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=", - "dev": true, + "node_modules/ora/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dependencies": { - "object-assign": "^4.0.1", - "pinkie-promise": "^2.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/ory-prettier-styles": { @@ -1101,7 +2153,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -1128,6 +2179,11 @@ "node": ">=0.10.0" } }, + "node_modules/path-to-regexp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz", + "integrity": "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==" + }, "node_modules/pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", @@ -1161,25 +2217,24 @@ "node": ">=10.13.0" } }, - "node_modules/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==" - }, "node_modules/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==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dependencies": { - "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" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, + "node_modules/reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" + }, "node_modules/regenerator-runtime": { "version": "0.10.5", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", @@ -1241,6 +2296,14 @@ "node": ">= 0.10" } }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", @@ -1272,7 +2335,6 @@ "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true, "engines": { "node": ">=0.12.0" } @@ -1283,6 +2345,19 @@ "integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=", "dev": true }, + "node_modules/rxjs": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.2.tgz", + "integrity": "sha512-PwDt186XaL3QN5qXj/H9DGyHhP3/RYYgZZwqBv9Tv8rsAaiwFH1IsJJlcgD37J7UW5a6O67qX0KWKS3/pu0m4w==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/rxjs/node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + }, "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -1291,8 +2366,7 @@ "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/semver": { "version": "7.3.5", @@ -1326,6 +2400,11 @@ "node": ">=0.10.0" } }, + "node_modules/spawn-command": { + "version": "0.0.2-1", + "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", + "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=" + }, "node_modules/state-toggle": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz", @@ -1379,6 +2458,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "dependencies": { "ansi-regex": "^2.0.0" }, @@ -1423,14 +2503,12 @@ "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, "node_modules/tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, "dependencies": { "os-tmpdir": "~1.0.2" }, @@ -1438,12 +2516,25 @@ "node": ">=0.6.0" } }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + }, "node_modules/traverse": { "version": "0.6.6", "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=", "dev": true }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "bin": { + "tree-kill": "cli.js" + } + }, "node_modules/trim": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", @@ -1470,10 +2561,26 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/uglify-js": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.2.tgz", - "integrity": "sha512-rtPMlmcO4agTUfz10CbgJ1k6UAoXM2gWb3GoMPPZB/+/Ackf8lNWk11K4rYi2D0apgoFRLtQOZhb+/iGNJq26A==", + "version": "3.15.1", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.1.tgz", + "integrity": "sha512-FAGKF12fWdkpvNJZENacOH0e/83eG6JyVQyanIJaBXCN1J11TUQv1T1/z8S+Z0CG0ZPk1nPcreF/c7lrTd0TEQ==", "optional": true, "bin": { "uglifyjs": "bin/uglifyjs" @@ -1559,6 +2666,14 @@ "unist-util-is": "^3.0.0" } }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/update-section": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/update-section/-/update-section-0.3.3.tgz", @@ -1570,6 +2685,14 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/vfile": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/vfile/-/vfile-2.3.0.tgz", @@ -1601,12 +2724,34 @@ "unist-util-stringify-position": "^1.1.1" } }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", "dependencies": { - "string-width": "^1.0.2 || 2" + "string-width": "^1.0.2 || 2 || 3 || 4" } }, "node_modules/wordwrap": { @@ -1614,6 +2759,81 @@ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/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==" + }, + "node_modules/wrap-ansi/node_modules/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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -1634,33 +2854,385 @@ "node": ">=0.4" } }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/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==" + }, + "node_modules/yargs/node_modules/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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } } }, "dependencies": { "@mapbox/node-pre-gyp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.5.tgz", - "integrity": "sha512-4srsKPXWlIxp5Vbqz5uLfBN+du2fJChBoYn/f2h991WLdk7jUvcSk/McVLSv/X+xQIPI8eGD5GjrnygdyHnhPA==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.8.tgz", + "integrity": "sha512-CMGKi28CF+qlbXh26hDe6NxCd7amqeAzEqnS6IHeO6LoaKyM/n+Xw3HT1COdq8cuioOdlKdqn/hCmqPUOMOywg==", "requires": { "detect-libc": "^1.0.3", "https-proxy-agent": "^5.0.0", "make-dir": "^3.1.0", - "node-fetch": "^2.6.1", + "node-fetch": "^2.6.5", "nopt": "^5.0.0", - "npmlog": "^4.1.2", + "npmlog": "^5.0.1", "rimraf": "^3.0.2", - "semver": "^7.3.4", - "tar": "^6.1.0" + "semver": "^7.3.5", + "tar": "^6.1.11" + }, + "dependencies": { + "node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "requires": { + "whatwg-url": "^5.0.0" + } + } + } + }, + "@nestjs/common": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-8.2.6.tgz", + "integrity": "sha512-flLYSXunxcKyjbYddrhwbc49uE705MxBt85rS3mHyhDbAIPSGGeZEqME44YyAzCg1NTfJSNe7ztmOce5kNkb9A==", + "requires": { + "axios": "0.24.0", + "iterare": "1.2.1", + "tslib": "2.3.1", + "uuid": "8.3.2" + }, + "dependencies": { + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + } + } + }, + "@nestjs/core": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-8.2.6.tgz", + "integrity": "sha512-NwPcEIMmCsucs3QaDlQvkoU1FlFM2wm/WjaqLQhkSoIEmAR1gNtBo88f5io5cpMwCo1k5xYhqGlaSl6TfngwWQ==", + "requires": { + "@nuxtjs/opencollective": "0.3.2", + "fast-safe-stringify": "2.1.1", + "iterare": "1.2.1", + "object-hash": "2.2.0", + "path-to-regexp": "3.2.0", + "tslib": "2.3.1", + "uuid": "8.3.2" + }, + "dependencies": { + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + } + } + }, + "@nuxtjs/opencollective": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz", + "integrity": "sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==", + "requires": { + "chalk": "^4.1.0", + "consola": "^2.15.0", + "node-fetch": "^2.6.1" }, "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, "node-fetch": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.2.tgz", - "integrity": "sha512-aLoxToI6RfZ+0NOjmWAgn9+LEd30YCkJKFSyWacNZdEKTit/ZMcKjGkTRo8uWEsnIb/hfKecNPEbln02PdWbcA==" + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@openapitools/openapi-generator-cli": { + "version": "2.4.26", + "resolved": "https://registry.npmjs.org/@openapitools/openapi-generator-cli/-/openapi-generator-cli-2.4.26.tgz", + "integrity": "sha512-O42H9q1HWGoIpcpMaUu318b6bmOgcjP3MieHwOrFdoG3KyttceBGlbLf9Kbf7WM91WSNCDXum7cnEKASuoGjAg==", + "requires": { + "@nestjs/common": "8.2.6", + "@nestjs/core": "8.2.6", + "@nuxtjs/opencollective": "0.3.2", + "chalk": "4.1.2", + "commander": "8.3.0", + "compare-versions": "3.6.0", + "concurrently": "6.5.1", + "console.table": "0.10.0", + "fs-extra": "10.0.0", + "glob": "7.1.6", + "inquirer": "8.2.0", + "lodash": "4.17.21", + "reflect-metadata": "0.1.13", + "rxjs": "7.5.2", + "tslib": "2.0.3" + }, + "dependencies": { + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" + }, + "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": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==" + }, + "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==" + }, + "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" + } + }, + "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" + } + }, + "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" + } + }, + "inquirer": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.0.tgz", + "integrity": "sha512-0crLweprevJ02tTuA6ThpoAERAGyVILC4sS74uib58Xf/zSr1/ZWtmm7D5CI+bSQEaA04f0K7idaHpQbSWgiVQ==", + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.2.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + } + }, + "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==" + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "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" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } } } }, @@ -1716,7 +3288,8 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true }, "ansi-styles": { "version": "2.2.1", @@ -1725,17 +3298,25 @@ "dev": true }, "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" }, "are-we-there-yet": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", - "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", "requires": { "delegates": "^1.0.0", - "readable-stream": "^2.0.6" + "readable-stream": "^3.6.0" + } + }, + "axios": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", + "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", + "requires": { + "follow-redirects": "^1.14.4" } }, "babel-polyfill": { @@ -1778,6 +3359,21 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, "boundary": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/boundary/-/boundary-1.0.1.tgz", @@ -1793,6 +3389,15 @@ "concat-map": "0.0.1" } }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", @@ -1844,16 +3449,66 @@ "restore-cursor": "^2.0.0" } }, + "cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==" + }, "cli-width": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", "dev": true }, - "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=" + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "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==" + }, + "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==" + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" }, "collapse-white-space": { "version": "1.0.6", @@ -1861,26 +3516,132 @@ "integrity": "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==", "dev": true }, + "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==" + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" + }, + "commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==" + }, + "compare-versions": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", + "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==" + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, + "concurrently": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-6.5.1.tgz", + "integrity": "sha512-FlSwNpGjWQfRwPLXvJ/OgysbBxPkWpiVjy1042b0U7on7S7qwwMIILRj7WTN1mTgqa582bG6NFuScOoh6Zgdag==", + "requires": { + "chalk": "^4.1.0", + "date-fns": "^2.16.1", + "lodash": "^4.17.21", + "rxjs": "^6.6.3", + "spawn-command": "^0.0.2-1", + "supports-color": "^8.1.0", + "tree-kill": "^1.2.2", + "yargs": "^16.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "consola": { + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", + "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==" + }, "console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" }, + "console.table": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/console.table/-/console.table-0.10.0.tgz", + "integrity": "sha1-CRcCVYiHW+/XDPLv9L7yxuLXXQQ=", + "requires": { + "easy-table": "1.1.0" + } + }, "core-js": { "version": "2.6.12", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", "dev": true }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + "date-fns": { + "version": "2.28.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.28.0.tgz", + "integrity": "sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==" }, "debug": { "version": "4.3.2", @@ -1890,6 +3651,14 @@ "ms": "2.1.2" } }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "requires": { + "clone": "^1.0.2" + } + }, "delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", @@ -1981,6 +3750,14 @@ } } }, + "easy-table": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.1.0.tgz", + "integrity": "sha1-hvmrTBAvA3G3KXuSplHVgkvIy3M=", + "requires": { + "wcwidth": ">=1.0.1" + } + }, "emoji-regex": { "version": "6.1.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.1.3.tgz", @@ -1991,7 +3768,7 @@ "version": "0.1.13", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "dev": true, + "devOptional": true, "requires": { "iconv-lite": "^0.6.2" }, @@ -2000,7 +3777,7 @@ "version": "0.6.2", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", - "dev": true, + "devOptional": true, "requires": { "safer-buffer": ">= 2.1.2 < 3.0.0" } @@ -2013,11 +3790,15 @@ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "dev": true }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, "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=", - "dev": true + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "extend": { "version": "3.0.2", @@ -2036,6 +3817,11 @@ "tmp": "^0.0.33" } }, + "fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" + }, "fault": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz", @@ -2054,12 +3840,27 @@ "escape-string-regexp": "^1.0.5" } }, + "follow-redirects": { + "version": "1.14.8", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz", + "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==" + }, "format": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=", "dev": true }, + "fs-extra": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", + "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, "fs-minipass": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", @@ -2074,44 +3875,65 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", "requires": { - "aproba": "^1.0.3", + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" }, "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "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==" + }, "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=", + "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==" + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "requires": { - "number-is-nan": "^1.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" } }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "ansi-regex": "^5.0.1" } } } }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -2126,6 +3948,11 @@ "resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.15.8.tgz", "integrity": "sha512-2jtfdqTaSxk0cuBJBtTTWsot4WtR9RVr2rXg7x7OoqiuOKopPrwXpM1G4dXIkLcUNRh3RKzz76C8IOkksZSeOw==" }, + "graceful-fs": { + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" + }, "grpc_tools_node_protoc_ts": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/grpc_tools_node_protoc_ts/-/grpc_tools_node_protoc_ts-5.3.2.tgz", @@ -2171,6 +3998,11 @@ "ansi-regex": "^2.0.0" } }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", @@ -2201,11 +4033,15 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, "requires": { "safer-buffer": ">= 2.1.2 < 3" } }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -2280,6 +4116,11 @@ "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", "dev": true }, + "is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==" + }, "is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", @@ -2292,6 +4133,11 @@ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" + }, "is-whitespace-character": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", @@ -2304,16 +4150,60 @@ "integrity": "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==", "dev": true }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "iterare": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", + "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==" + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } }, "lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } + } }, "lru-cache": { "version": "6.0.0", @@ -2365,9 +4255,9 @@ "dev": true }, "minipass": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.5.tgz", - "integrity": "sha512-+8NzxD82XQoNKNrl1d/FSi+X8wAEWR+sbYAfIvub4Nz0d22plFG72CEVVaufV8PNf4qSslFTD8VMOxNVhHCjTw==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", "requires": { "yallist": "^4.0.0" } @@ -2421,26 +4311,26 @@ } }, "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" } }, - "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=" - }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, + "object-hash": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", + "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==" + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -2482,6 +4372,92 @@ "pinkie-promise": "^2.0.0" } }, + "ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "requires": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "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" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "ory-prettier-styles": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/ory-prettier-styles/-/ory-prettier-styles-1.1.2.tgz", @@ -2491,8 +4467,7 @@ "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=", - "dev": true + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, "parse-entities": { "version": "1.2.2", @@ -2513,6 +4488,11 @@ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, + "path-to-regexp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz", + "integrity": "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==" + }, "pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", @@ -2534,25 +4514,21 @@ "integrity": "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==", "dev": true }, - "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==" - }, "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==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "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" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" } }, + "reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" + }, "regenerator-runtime": { "version": "0.10.5", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", @@ -2604,6 +4580,11 @@ "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", "dev": true }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, "restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", @@ -2625,8 +4606,7 @@ "run-async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" }, "rx": { "version": "4.1.0", @@ -2634,6 +4614,21 @@ "integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=", "dev": true }, + "rxjs": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.2.tgz", + "integrity": "sha512-PwDt186XaL3QN5qXj/H9DGyHhP3/RYYgZZwqBv9Tv8rsAaiwFH1IsJJlcgD37J7UW5a6O67qX0KWKS3/pu0m4w==", + "requires": { + "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + } + } + }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -2642,8 +4637,7 @@ "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "semver": { "version": "7.3.5", @@ -2668,6 +4662,11 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, + "spawn-command": { + "version": "0.0.2-1", + "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", + "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=" + }, "state-toggle": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz", @@ -2710,6 +4709,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -2745,24 +4745,32 @@ "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, "requires": { "os-tmpdir": "~1.0.2" } }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + }, "traverse": { "version": "0.6.6", "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=", "dev": true }, + "tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==" + }, "trim": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", @@ -2781,10 +4789,20 @@ "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", "dev": true }, + "tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" + }, "uglify-js": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.2.tgz", - "integrity": "sha512-rtPMlmcO4agTUfz10CbgJ1k6UAoXM2gWb3GoMPPZB/+/Ackf8lNWk11K4rYi2D0apgoFRLtQOZhb+/iGNJq26A==", + "version": "3.15.1", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.1.tgz", + "integrity": "sha512-FAGKF12fWdkpvNJZENacOH0e/83eG6JyVQyanIJaBXCN1J11TUQv1T1/z8S+Z0CG0ZPk1nPcreF/c7lrTd0TEQ==", "optional": true }, "underscore": { @@ -2856,6 +4874,11 @@ "unist-util-is": "^3.0.0" } }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + }, "update-section": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/update-section/-/update-section-0.3.3.tgz", @@ -2867,6 +4890,11 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + }, "vfile": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/vfile/-/vfile-2.3.0.tgz", @@ -2894,12 +4922,34 @@ "unist-util-stringify-position": "^1.1.1" } }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "requires": { + "defaults": "^1.0.3" + } + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", "requires": { - "string-width": "^1.0.2 || 2" + "string-width": "^1.0.2 || 2 || 3 || 4" } }, "wordwrap": { @@ -2907,6 +4957,59 @@ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "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==" + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -2924,10 +5027,69 @@ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" + }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "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==" + }, + "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==" + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" } } } diff --git a/package.json b/package.json index d421504f8..7eaa301a1 100644 --- a/package.json +++ b/package.json @@ -22,12 +22,14 @@ "logo": "https://opencollective.com/ory/logo.txt" }, "dependencies": { + "@openapitools/openapi-generator-cli": "^2.1.18", "grpc_tools_node_protoc_ts": "^5.3.2", "grpc-tools": "^1.11.2" }, "scripts": { "doctoc": "doctoc README.md", "format": "prettier --write ${npm_package_config_prettierTarget}", - "format:check": "prettier --check ${npm_package_config_prettierTarget}" + "format:check": "prettier --check ${npm_package_config_prettierTarget}", + "openapi-generator-cli": "openapi-generator-cli" } } diff --git a/proto/ory/keto/acl/v1alpha1/acl.pb.go b/proto/ory/keto/acl/v1alpha1/acl.pb.go index 1cb0f641c..fdc29533b 100644 --- a/proto/ory/keto/acl/v1alpha1/acl.pb.go +++ b/proto/ory/keto/acl/v1alpha1/acl.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 +// protoc-gen-go v1.27.1 // protoc v3.13.0 // source: ory/keto/acl/v1alpha1/acl.proto diff --git a/proto/ory/keto/acl/v1alpha1/acl_pb.js b/proto/ory/keto/acl/v1alpha1/acl_pb.js index ffed4ed94..3bb29e09d 100644 --- a/proto/ory/keto/acl/v1alpha1/acl_pb.js +++ b/proto/ory/keto/acl/v1alpha1/acl_pb.js @@ -2,15 +2,24 @@ /** * @fileoverview * @enhanceable + * @suppress {missingRequire} reports error on implicit type usages. * @suppress {messageConventions} JS Compiler reports an error if a variable or * field starts with 'MSG_' and isn't a translatable message. * @public */ // GENERATED CODE -- DO NOT EDIT! +/* eslint-disable */ +// @ts-nocheck var jspb = require('google-protobuf'); var goog = jspb; -var global = Function('return this')(); +var global = (function() { + if (this) { return this; } + if (typeof window !== 'undefined') { return window; } + if (typeof global !== 'undefined') { return global; } + if (typeof self !== 'undefined') { return self; } + return Function('return this')(); +}.call(null)); goog.exportSymbol('proto.ory.keto.acl.v1alpha1.RelationTuple', null, global); goog.exportSymbol('proto.ory.keto.acl.v1alpha1.Subject', null, global); diff --git a/proto/ory/keto/acl/v1alpha1/check_service.pb.go b/proto/ory/keto/acl/v1alpha1/check_service.pb.go index bb30620e0..1f6524cdf 100644 --- a/proto/ory/keto/acl/v1alpha1/check_service.pb.go +++ b/proto/ory/keto/acl/v1alpha1/check_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 +// protoc-gen-go v1.27.1 // protoc v3.13.0 // source: ory/keto/acl/v1alpha1/check_service.proto diff --git a/proto/ory/keto/acl/v1alpha1/check_service_pb.js b/proto/ory/keto/acl/v1alpha1/check_service_pb.js index 4297855c7..5a19c3f4a 100644 --- a/proto/ory/keto/acl/v1alpha1/check_service_pb.js +++ b/proto/ory/keto/acl/v1alpha1/check_service_pb.js @@ -2,15 +2,24 @@ /** * @fileoverview * @enhanceable + * @suppress {missingRequire} reports error on implicit type usages. * @suppress {messageConventions} JS Compiler reports an error if a variable or * field starts with 'MSG_' and isn't a translatable message. * @public */ // GENERATED CODE -- DO NOT EDIT! +/* eslint-disable */ +// @ts-nocheck var jspb = require('google-protobuf'); var goog = jspb; -var global = Function('return this')(); +var global = (function() { + if (this) { return this; } + if (typeof window !== 'undefined') { return window; } + if (typeof global !== 'undefined') { return global; } + if (typeof self !== 'undefined') { return self; } + return Function('return this')(); +}.call(null)); var ory_keto_acl_v1alpha1_acl_pb = require('../../../../ory/keto/acl/v1alpha1/acl_pb.js'); goog.object.extend(proto, ory_keto_acl_v1alpha1_acl_pb); diff --git a/proto/ory/keto/acl/v1alpha1/expand_service.pb.go b/proto/ory/keto/acl/v1alpha1/expand_service.pb.go index d716379b1..38eaabef4 100644 --- a/proto/ory/keto/acl/v1alpha1/expand_service.pb.go +++ b/proto/ory/keto/acl/v1alpha1/expand_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 +// protoc-gen-go v1.27.1 // protoc v3.13.0 // source: ory/keto/acl/v1alpha1/expand_service.proto diff --git a/proto/ory/keto/acl/v1alpha1/expand_service_pb.js b/proto/ory/keto/acl/v1alpha1/expand_service_pb.js index 80c0fb9f6..65ce783b9 100644 --- a/proto/ory/keto/acl/v1alpha1/expand_service_pb.js +++ b/proto/ory/keto/acl/v1alpha1/expand_service_pb.js @@ -2,15 +2,24 @@ /** * @fileoverview * @enhanceable + * @suppress {missingRequire} reports error on implicit type usages. * @suppress {messageConventions} JS Compiler reports an error if a variable or * field starts with 'MSG_' and isn't a translatable message. * @public */ // GENERATED CODE -- DO NOT EDIT! +/* eslint-disable */ +// @ts-nocheck var jspb = require('google-protobuf'); var goog = jspb; -var global = Function('return this')(); +var global = (function() { + if (this) { return this; } + if (typeof window !== 'undefined') { return window; } + if (typeof global !== 'undefined') { return global; } + if (typeof self !== 'undefined') { return self; } + return Function('return this')(); +}.call(null)); var ory_keto_acl_v1alpha1_acl_pb = require('../../../../ory/keto/acl/v1alpha1/acl_pb.js'); goog.object.extend(proto, ory_keto_acl_v1alpha1_acl_pb); diff --git a/proto/ory/keto/acl/v1alpha1/read_service.pb.go b/proto/ory/keto/acl/v1alpha1/read_service.pb.go index 5008e5126..e5733e79f 100644 --- a/proto/ory/keto/acl/v1alpha1/read_service.pb.go +++ b/proto/ory/keto/acl/v1alpha1/read_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 +// protoc-gen-go v1.27.1 // protoc v3.13.0 // source: ory/keto/acl/v1alpha1/read_service.proto diff --git a/proto/ory/keto/acl/v1alpha1/read_service_pb.js b/proto/ory/keto/acl/v1alpha1/read_service_pb.js index fde6f5da3..fcd8145be 100644 --- a/proto/ory/keto/acl/v1alpha1/read_service_pb.js +++ b/proto/ory/keto/acl/v1alpha1/read_service_pb.js @@ -2,15 +2,24 @@ /** * @fileoverview * @enhanceable + * @suppress {missingRequire} reports error on implicit type usages. * @suppress {messageConventions} JS Compiler reports an error if a variable or * field starts with 'MSG_' and isn't a translatable message. * @public */ // GENERATED CODE -- DO NOT EDIT! +/* eslint-disable */ +// @ts-nocheck var jspb = require('google-protobuf'); var goog = jspb; -var global = Function('return this')(); +var global = (function() { + if (this) { return this; } + if (typeof window !== 'undefined') { return window; } + if (typeof global !== 'undefined') { return global; } + if (typeof self !== 'undefined') { return self; } + return Function('return this')(); +}.call(null)); var ory_keto_acl_v1alpha1_acl_pb = require('../../../../ory/keto/acl/v1alpha1/acl_pb.js'); goog.object.extend(proto, ory_keto_acl_v1alpha1_acl_pb); diff --git a/proto/ory/keto/acl/v1alpha1/version.pb.go b/proto/ory/keto/acl/v1alpha1/version.pb.go index 9485ccbf0..af27fcde1 100644 --- a/proto/ory/keto/acl/v1alpha1/version.pb.go +++ b/proto/ory/keto/acl/v1alpha1/version.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 +// protoc-gen-go v1.27.1 // protoc v3.13.0 // source: ory/keto/acl/v1alpha1/version.proto diff --git a/proto/ory/keto/acl/v1alpha1/version_pb.js b/proto/ory/keto/acl/v1alpha1/version_pb.js index 000b78d85..23e0edf44 100644 --- a/proto/ory/keto/acl/v1alpha1/version_pb.js +++ b/proto/ory/keto/acl/v1alpha1/version_pb.js @@ -2,15 +2,24 @@ /** * @fileoverview * @enhanceable + * @suppress {missingRequire} reports error on implicit type usages. * @suppress {messageConventions} JS Compiler reports an error if a variable or * field starts with 'MSG_' and isn't a translatable message. * @public */ // GENERATED CODE -- DO NOT EDIT! +/* eslint-disable */ +// @ts-nocheck var jspb = require('google-protobuf'); var goog = jspb; -var global = Function('return this')(); +var global = (function() { + if (this) { return this; } + if (typeof window !== 'undefined') { return window; } + if (typeof global !== 'undefined') { return global; } + if (typeof self !== 'undefined') { return self; } + return Function('return this')(); +}.call(null)); goog.exportSymbol('proto.ory.keto.acl.v1alpha1.GetVersionRequest', null, global); goog.exportSymbol('proto.ory.keto.acl.v1alpha1.GetVersionResponse', null, global); diff --git a/proto/ory/keto/acl/v1alpha1/write_service.pb.go b/proto/ory/keto/acl/v1alpha1/write_service.pb.go index 1e3035089..70ba24cde 100644 --- a/proto/ory/keto/acl/v1alpha1/write_service.pb.go +++ b/proto/ory/keto/acl/v1alpha1/write_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 +// protoc-gen-go v1.27.1 // protoc v3.13.0 // source: ory/keto/acl/v1alpha1/write_service.proto diff --git a/proto/ory/keto/acl/v1alpha1/write_service_pb.js b/proto/ory/keto/acl/v1alpha1/write_service_pb.js index c16fb9d32..a458f0fe7 100644 --- a/proto/ory/keto/acl/v1alpha1/write_service_pb.js +++ b/proto/ory/keto/acl/v1alpha1/write_service_pb.js @@ -2,15 +2,24 @@ /** * @fileoverview * @enhanceable + * @suppress {missingRequire} reports error on implicit type usages. * @suppress {messageConventions} JS Compiler reports an error if a variable or * field starts with 'MSG_' and isn't a translatable message. * @public */ // GENERATED CODE -- DO NOT EDIT! +/* eslint-disable */ +// @ts-nocheck var jspb = require('google-protobuf'); var goog = jspb; -var global = Function('return this')(); +var global = (function() { + if (this) { return this; } + if (typeof window !== 'undefined') { return window; } + if (typeof global !== 'undefined') { return global; } + if (typeof self !== 'undefined') { return self; } + return Function('return this')(); +}.call(null)); var ory_keto_acl_v1alpha1_acl_pb = require('../../../../ory/keto/acl/v1alpha1/acl_pb.js'); goog.object.extend(proto, ory_keto_acl_v1alpha1_acl_pb); diff --git a/spec/api.json b/spec/api.json index 0791079f2..5167939e6 100755 --- a/spec/api.json +++ b/spec/api.json @@ -1,1213 +1,1544 @@ { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "schemes": [ - "http", - "https" - ], - "swagger": "2.0", + "components": { + "responses": { + "emptyResponse": { + "description": "Empty responses are sent when, for example, resources are deleted. The HTTP status code for empty responses is typically 201." + } + }, + "schemas": { + "CreateRelationTupleBadRequestBody": { + "description": "CreateRelationTupleBadRequestBody CreateRelationTupleBadRequestBody create relation tuple bad request body", + "properties": { + "code": { + "description": "code", + "format": "int64", + "type": "integer" + }, + "details": { + "description": "details", + "items": { + "type": "object" + }, + "type": "array" + }, + "message": { + "description": "message", + "type": "string" + }, + "reason": { + "description": "reason", + "type": "string" + }, + "request": { + "description": "request", + "type": "string" + }, + "status": { + "description": "status", + "type": "string" + } + }, + "type": "object" + }, + "CreateRelationTupleInternalServerErrorBody": { + "description": "CreateRelationTupleInternalServerErrorBody CreateRelationTupleInternalServerErrorBody create relation tuple internal server error body", + "properties": { + "code": { + "description": "code", + "format": "int64", + "type": "integer" + }, + "details": { + "description": "details", + "items": { + "type": "object" + }, + "type": "array" + }, + "message": { + "description": "message", + "type": "string" + }, + "reason": { + "description": "reason", + "type": "string" + }, + "request": { + "description": "request", + "type": "string" + }, + "status": { + "description": "status", + "type": "string" + } + }, + "type": "object" + }, + "DeleteRelationTuplesBadRequestBody": { + "description": "DeleteRelationTuplesBadRequestBody DeleteRelationTuplesBadRequestBody DeleteRelationTuplesBadRequestBody DeleteRelationTuplesBadRequestBody DeleteRelationTuplesBadRequestBody delete relation tuples bad request body", + "properties": { + "code": { + "description": "code", + "format": "int64", + "type": "integer" + }, + "details": { + "description": "details", + "items": { + "type": "object" + }, + "type": "array" + }, + "message": { + "description": "message", + "type": "string" + }, + "reason": { + "description": "reason", + "type": "string" + }, + "request": { + "description": "request", + "type": "string" + }, + "status": { + "description": "status", + "type": "string" + } + }, + "type": "object" + }, + "DeleteRelationTuplesInternalServerErrorBody": { + "description": "DeleteRelationTuplesInternalServerErrorBody DeleteRelationTuplesInternalServerErrorBody delete relation tuples internal server error body", + "properties": { + "code": { + "description": "code", + "format": "int64", + "type": "integer" + }, + "details": { + "description": "details", + "items": { + "type": "object" + }, + "type": "array" + }, + "message": { + "description": "message", + "type": "string" + }, + "reason": { + "description": "reason", + "type": "string" + }, + "request": { + "description": "request", + "type": "string" + }, + "status": { + "description": "status", + "type": "string" + } + }, + "type": "object" + }, + "GetCheckBadRequestBody": { + "description": "GetCheckBadRequestBody GetCheckBadRequestBody GetCheckBadRequestBody GetCheckBadRequestBody GetCheckBadRequestBody get check bad request body", + "properties": { + "code": { + "description": "code", + "format": "int64", + "type": "integer" + }, + "details": { + "description": "details", + "items": { + "type": "object" + }, + "type": "array" + }, + "message": { + "description": "message", + "type": "string" + }, + "reason": { + "description": "reason", + "type": "string" + }, + "request": { + "description": "request", + "type": "string" + }, + "status": { + "description": "status", + "type": "string" + } + }, + "type": "object" + }, + "GetCheckInternalServerErrorBody": { + "description": "GetCheckInternalServerErrorBody GetCheckInternalServerErrorBody GetCheckInternalServerErrorBody get check internal server error body", + "properties": { + "code": { + "description": "code", + "format": "int64", + "type": "integer" + }, + "details": { + "description": "details", + "items": { + "type": "object" + }, + "type": "array" + }, + "message": { + "description": "message", + "type": "string" + }, + "reason": { + "description": "reason", + "type": "string" + }, + "request": { + "description": "request", + "type": "string" + }, + "status": { + "description": "status", + "type": "string" + } + }, + "type": "object" + }, + "GetExpandBadRequestBody": { + "description": "GetExpandBadRequestBody GetExpandBadRequestBody GetExpandBadRequestBody GetExpandBadRequestBody get expand bad request body", + "properties": { + "code": { + "description": "code", + "format": "int64", + "type": "integer" + }, + "details": { + "description": "details", + "items": { + "type": "object" + }, + "type": "array" + }, + "message": { + "description": "message", + "type": "string" + }, + "reason": { + "description": "reason", + "type": "string" + }, + "request": { + "description": "request", + "type": "string" + }, + "status": { + "description": "status", + "type": "string" + } + }, + "type": "object" + }, + "GetExpandInternalServerErrorBody": { + "description": "GetExpandInternalServerErrorBody GetExpandInternalServerErrorBody get expand internal server error body", + "properties": { + "code": { + "description": "code", + "format": "int64", + "type": "integer" + }, + "details": { + "description": "details", + "items": { + "type": "object" + }, + "type": "array" + }, + "message": { + "description": "message", + "type": "string" + }, + "reason": { + "description": "reason", + "type": "string" + }, + "request": { + "description": "request", + "type": "string" + }, + "status": { + "description": "status", + "type": "string" + } + }, + "type": "object" + }, + "GetExpandNotFoundBody": { + "description": "GetExpandNotFoundBody GetExpandNotFoundBody GetExpandNotFoundBody GetExpandNotFoundBody get expand not found body", + "properties": { + "code": { + "description": "code", + "format": "int64", + "type": "integer" + }, + "details": { + "description": "details", + "items": { + "type": "object" + }, + "type": "array" + }, + "message": { + "description": "message", + "type": "string" + }, + "reason": { + "description": "reason", + "type": "string" + }, + "request": { + "description": "request", + "type": "string" + }, + "status": { + "description": "status", + "type": "string" + } + }, + "type": "object" + }, + "GetRelationTuplesInternalServerErrorBody": { + "description": "GetRelationTuplesInternalServerErrorBody GetRelationTuplesInternalServerErrorBody get relation tuples internal server error body", + "properties": { + "code": { + "description": "code", + "format": "int64", + "type": "integer" + }, + "details": { + "description": "details", + "items": { + "type": "object" + }, + "type": "array" + }, + "message": { + "description": "message", + "type": "string" + }, + "reason": { + "description": "reason", + "type": "string" + }, + "request": { + "description": "request", + "type": "string" + }, + "status": { + "description": "status", + "type": "string" + } + }, + "type": "object" + }, + "GetRelationTuplesNotFoundBody": { + "description": "GetRelationTuplesNotFoundBody GetRelationTuplesNotFoundBody get relation tuples not found body", + "properties": { + "code": { + "description": "code", + "format": "int64", + "type": "integer" + }, + "details": { + "description": "details", + "items": { + "type": "object" + }, + "type": "array" + }, + "message": { + "description": "message", + "type": "string" + }, + "reason": { + "description": "reason", + "type": "string" + }, + "request": { + "description": "request", + "type": "string" + }, + "status": { + "description": "status", + "type": "string" + } + }, + "type": "object" + }, + "InternalRelationTuple": { + "properties": { + "namespace": { + "description": "Namespace of the Relation Tuple", + "type": "string" + }, + "object": { + "description": "Object of the Relation Tuple", + "type": "string" + }, + "relation": { + "description": "Relation of the Relation Tuple", + "type": "string" + }, + "subject_id": { + "description": "SubjectID of the Relation Tuple\n\nEither SubjectSet or SubjectID are required.", + "type": "string" + }, + "subject_set": { + "$ref": "#/components/schemas/SubjectSet" + } + }, + "required": [ + "namespace", + "object", + "relation" + ], + "type": "object" + }, + "IsInstanceAliveInternalServerErrorBody": { + "description": "IsInstanceAliveInternalServerErrorBody IsInstanceAliveInternalServerErrorBody IsInstanceAliveInternalServerErrorBody IsInstanceAliveInternalServerErrorBody is instance alive internal server error body", + "properties": { + "code": { + "description": "code", + "format": "int64", + "type": "integer" + }, + "details": { + "description": "details", + "items": { + "type": "object" + }, + "type": "array" + }, + "message": { + "description": "message", + "type": "string" + }, + "reason": { + "description": "reason", + "type": "string" + }, + "request": { + "description": "request", + "type": "string" + }, + "status": { + "description": "status", + "type": "string" + } + }, + "type": "object" + }, + "PatchDelta": { + "description": "PatchDelta PatchDelta PatchDelta PatchDelta PatchDelta PatchDelta patch delta", + "properties": { + "action": { + "description": "action", + "enum": [ + "[[[[[[insert delete]]]]]]" + ], + "type": "string" + }, + "relation_tuple": { + "$ref": "#/components/schemas/InternalRelationTuple" + } + }, + "type": "object" + }, + "PatchRelationTuplesBadRequestBody": { + "description": "PatchRelationTuplesBadRequestBody PatchRelationTuplesBadRequestBody patch relation tuples bad request body", + "properties": { + "code": { + "description": "code", + "format": "int64", + "type": "integer" + }, + "details": { + "description": "details", + "items": { + "type": "object" + }, + "type": "array" + }, + "message": { + "description": "message", + "type": "string" + }, + "reason": { + "description": "reason", + "type": "string" + }, + "request": { + "description": "request", + "type": "string" + }, + "status": { + "description": "status", + "type": "string" + } + }, + "type": "object" + }, + "PatchRelationTuplesInternalServerErrorBody": { + "description": "PatchRelationTuplesInternalServerErrorBody PatchRelationTuplesInternalServerErrorBody patch relation tuples internal server error body", + "properties": { + "code": { + "description": "code", + "format": "int64", + "type": "integer" + }, + "details": { + "description": "details", + "items": { + "type": "object" + }, + "type": "array" + }, + "message": { + "description": "message", + "type": "string" + }, + "reason": { + "description": "reason", + "type": "string" + }, + "request": { + "description": "request", + "type": "string" + }, + "status": { + "description": "status", + "type": "string" + } + }, + "type": "object" + }, + "PatchRelationTuplesNotFoundBody": { + "description": "PatchRelationTuplesNotFoundBody PatchRelationTuplesNotFoundBody patch relation tuples not found body", + "properties": { + "code": { + "description": "code", + "format": "int64", + "type": "integer" + }, + "details": { + "description": "details", + "items": { + "type": "object" + }, + "type": "array" + }, + "message": { + "description": "message", + "type": "string" + }, + "reason": { + "description": "reason", + "type": "string" + }, + "request": { + "description": "request", + "type": "string" + }, + "status": { + "description": "status", + "type": "string" + } + }, + "type": "object" + }, + "PostCheckBadRequestBody": { + "description": "PostCheckBadRequestBody PostCheckBadRequestBody PostCheckBadRequestBody PostCheckBadRequestBody PostCheckBadRequestBody PostCheckBadRequestBody post check bad request body", + "properties": { + "code": { + "description": "code", + "format": "int64", + "type": "integer" + }, + "details": { + "description": "details", + "items": { + "type": "object" + }, + "type": "array" + }, + "message": { + "description": "message", + "type": "string" + }, + "reason": { + "description": "reason", + "type": "string" + }, + "request": { + "description": "request", + "type": "string" + }, + "status": { + "description": "status", + "type": "string" + } + }, + "type": "object" + }, + "PostCheckInternalServerErrorBody": { + "description": "PostCheckInternalServerErrorBody PostCheckInternalServerErrorBody post check internal server error body", + "properties": { + "code": { + "description": "code", + "format": "int64", + "type": "integer" + }, + "details": { + "description": "details", + "items": { + "type": "object" + }, + "type": "array" + }, + "message": { + "description": "message", + "type": "string" + }, + "reason": { + "description": "reason", + "type": "string" + }, + "request": { + "description": "request", + "type": "string" + }, + "status": { + "description": "status", + "type": "string" + } + }, + "type": "object" + }, + "RelationQuery": { + "description": "RelationQuery RelationQuery RelationQuery RelationQuery RelationQuery RelationQuery relation query", + "properties": { + "namespace": { + "description": "Namespace of the Relation Tuple", + "type": "string" + }, + "object": { + "description": "Object of the Relation Tuple", + "type": "string" + }, + "relation": { + "description": "Relation of the Relation Tuple", + "type": "string" + }, + "subject_id": { + "description": "SubjectID of the Relation Tuple\n\nEither SubjectSet or SubjectID can be provided.", + "type": "string" + }, + "subject_set": { + "$ref": "#/components/schemas/SubjectSet" + } + }, + "type": "object" + }, + "SubjectSet": { + "properties": { + "namespace": { + "description": "Namespace of the Subject Set", + "type": "string" + }, + "object": { + "description": "Object of the Subject Set", + "type": "string" + }, + "relation": { + "description": "Relation of the Subject Set", + "type": "string" + } + }, + "required": [ + "namespace", + "object", + "relation" + ], + "type": "object" + }, + "UUID": { + "format": "uuid4", + "type": "string" + }, + "expandTree": { + "properties": { + "children": { + "description": "children", + "items": { + "$ref": "#/components/schemas/expandTree" + }, + "type": "array" + }, + "subject_id": { + "description": "subject id", + "type": "string" + }, + "subject_set": { + "$ref": "#/components/schemas/SubjectSet" + }, + "type": { + "enum": [ + "union", + "exclusion", + "intersection", + "leaf" + ], + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + "genericError": { + "description": "The standard error format", + "properties": { + "code": { + "description": "code", + "format": "int64", + "type": "integer" + }, + "details": { + "description": "details", + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + "message": { + "description": "message", + "type": "string" + }, + "reason": { + "description": "reason", + "type": "string" + }, + "request": { + "description": "request", + "type": "string" + }, + "status": { + "description": "status", + "type": "string" + } + }, + "type": "object" + }, + "getCheckResponse": { + "description": "The content of the allowed field is mirrored in the HTTP status code.", + "properties": { + "allowed": { + "description": "whether the relation tuple is allowed", + "type": "boolean" + } + }, + "required": [ + "allowed" + ], + "title": "GetCheckResponse Represents the response for a check request.", + "type": "object" + }, + "getRelationTuplesResponse": { + "description": "GetRelationTuplesResponse GetRelationTuplesResponse GetRelationTuplesResponse GetRelationTuplesResponse GetRelationTuplesResponse get relation tuples response", + "properties": { + "next_page_token": { + "description": "The opaque token to provide in a subsequent request\nto get the next page. It is the empty string iff this is\nthe last page.", + "type": "string" + }, + "relation_tuples": { + "description": "relation tuples", + "items": { + "$ref": "#/components/schemas/InternalRelationTuple" + }, + "type": "array" + } + }, + "type": "object" + }, + "healthNotReadyStatus": { + "properties": { + "errors": { + "additionalProperties": { + "type": "string" + }, + "description": "Errors contains a list of errors that caused the not ready status.", + "type": "object" + } + }, + "type": "object" + }, + "healthStatus": { + "description": "HealthStatus health status", + "properties": { + "status": { + "description": "Status always contains \"ok\".", + "type": "string" + } + }, + "type": "object" + }, + "subject": { + "description": "Subject Subject Subject subject", + "type": "object" + }, + "version": { + "properties": { + "version": { + "description": "Version is the service's version.", + "type": "string" + } + }, + "type": "object" + } + } + }, "info": { - "description": "Ory Keto is a cloud native access control server providing best-practice patterns (RBAC, ABAC, ACL, AWS IAM Policies, Kubernetes Roles, ...) via REST APIs.", - "title": "ORY Keto", "contact": { - "name": "ORY", - "url": "https://www.ory.sh", "email": "hi@ory.sh" }, + "description": "Documentation for all of Ory Oathkeeper's APIs.\n", "license": { - "name": "Apache 2.0", - "url": "https://github.com/ory/keto/blob/master/LICENSE" + "name": "Apache 2.0" }, - "version": "Latest" + "title": "Ory Oathkeeper API", + "version": "" }, - "basePath": "/", + "openapi": "3.0.3", "paths": { "/check": { "get": { "description": "To learn how relation tuples and the check works, head over to [the documentation](../concepts/relation-tuples.mdx).", - "consumes": [ - "application/x-www-form-urlencoded" - ], - "produces": [ - "application/json" - ], - "schemes": [ - "http", - "https" - ], - "tags": [ - "read" - ], - "summary": "Check a relation tuple", "operationId": "getCheck", "parameters": [ { - "type": "string", "description": "Namespace of the Relation Tuple", + "in": "query", "name": "namespace", - "in": "query" + "schema": { + "type": "string" + } }, { - "type": "string", "description": "Object of the Relation Tuple", + "in": "query", "name": "object", - "in": "query" + "schema": { + "type": "string" + } }, { - "type": "string", "description": "Relation of the Relation Tuple", + "in": "query", "name": "relation", - "in": "query" + "schema": { + "type": "string" + } }, { - "type": "string", "description": "SubjectID of the Relation Tuple", + "in": "query", "name": "subject_id", - "in": "query" + "schema": { + "type": "string" + } }, { - "type": "string", "description": "Namespace of the Subject Set", + "in": "query", "name": "subject_set.namespace", - "in": "query" + "schema": { + "type": "string" + } }, { - "type": "string", "description": "Object of the Subject Set", + "in": "query", "name": "subject_set.object", - "in": "query" + "schema": { + "type": "string" + } }, { - "type": "string", "description": "Relation of the Subject Set", + "in": "query", "name": "subject_set.relation", - "in": "query" + "schema": { + "type": "string" + } }, { - "type": "integer", - "format": "int64", + "in": "query", "name": "max-depth", - "in": "query" + "schema": { + "format": "int64", + "type": "integer" + } } ], "responses": { "200": { - "description": "getCheckResponse", - "schema": { - "$ref": "#/definitions/getCheckResponse" - } + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/getCheckResponse" + } + } + }, + "description": "getCheckResponse" }, "400": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/genericError" } } - } + }, + "description": "genericError" }, "403": { - "description": "getCheckResponse", - "schema": { - "$ref": "#/definitions/getCheckResponse" - } + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/getCheckResponse" + } + } + }, + "description": "getCheckResponse" }, "500": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/genericError" } } - } + }, + "description": "genericError" } - } + }, + "summary": "Check a relation tuple", + "tags": [ + "read" + ] }, "post": { "description": "To learn how relation tuples and the check works, head over to [the documentation](../concepts/relation-tuples.mdx).", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "schemes": [ - "http", - "https" - ], - "tags": [ - "read" - ], - "summary": "Check a relation tuple", "operationId": "postCheck", "parameters": [ { - "name": "Payload", - "in": "body", + "in": "query", + "name": "max-depth", "schema": { - "$ref": "#/definitions/RelationQuery" + "format": "int64", + "type": "integer" } - }, - { - "type": "integer", - "format": "int64", - "name": "max-depth", - "in": "query" } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RelationQuery" + } + } + }, + "x-originalParamName": "Payload" + }, "responses": { "200": { - "description": "getCheckResponse", - "schema": { - "$ref": "#/definitions/getCheckResponse" - } + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/getCheckResponse" + } + } + }, + "description": "getCheckResponse" }, "400": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/genericError" } } - } + }, + "description": "genericError" }, "403": { - "description": "getCheckResponse", - "schema": { - "$ref": "#/definitions/getCheckResponse" - } + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/getCheckResponse" + } + } + }, + "description": "getCheckResponse" }, "500": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/genericError" } } - } + }, + "description": "genericError" } - } + }, + "summary": "Check a relation tuple", + "tags": [ + "read" + ] } }, "/expand": { "get": { "description": "Use this endpoint to expand a relation tuple.", - "consumes": [ - "application/x-www-form-urlencoded" - ], - "produces": [ - "application/json" - ], - "schemes": [ - "http", - "https" - ], - "tags": [ - "read" - ], - "summary": "Expand a Relation Tuple", "operationId": "getExpand", "parameters": [ { - "type": "string", "description": "Namespace of the Subject Set", - "name": "namespace", "in": "query", - "required": true + "name": "namespace", + "required": true, + "schema": { + "type": "string" + } }, { - "type": "string", "description": "Object of the Subject Set", - "name": "object", "in": "query", - "required": true + "name": "object", + "required": true, + "schema": { + "type": "string" + } }, { - "type": "string", "description": "Relation of the Subject Set", - "name": "relation", "in": "query", - "required": true + "name": "relation", + "required": true, + "schema": { + "type": "string" + } }, { - "type": "integer", - "format": "int64", + "in": "query", "name": "max-depth", - "in": "query" + "schema": { + "format": "int64", + "type": "integer" + } } ], "responses": { "200": { - "description": "expandTree", - "schema": { - "$ref": "#/definitions/expandTree" - } + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/expandTree" + } + } + }, + "description": "expandTree" }, "400": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/genericError" } } - } + }, + "description": "genericError" }, "404": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/genericError" } } - } + }, + "description": "genericError" }, "500": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/genericError" } } - } + }, + "description": "genericError" } - } + }, + "summary": "Expand a Relation Tuple", + "tags": [ + "read" + ] } }, "/health/alive": { "get": { - "description": "This endpoint returns a 200 status code when the HTTP server is up running.\nThis status does currently not include checks whether the database connection is working.\n\nIf the service supports TLS Edge Termination, this endpoint does not require the\n`X-Forwarded-Proto` header to be set.\n\nBe aware that if you are running multiple nodes of this service, the health status will never\nrefer to the cluster state, only to a single instance.", - "produces": [ - "application/json" - ], - "tags": [ - "health" - ], - "summary": "Check alive status", - "operationId": "isInstanceAlive", + "description": "This endpoint returns a HTTP 200 status code when Ory Keto is accepting incoming\nHTTP requests. This status does currently not include checks whether the database connection is working.\n\nIf the service supports TLS Edge Termination, this endpoint does not require the\n`X-Forwarded-Proto` header to be set.\n\nBe aware that if you are running multiple nodes of this service, the health status will never\nrefer to the cluster state, only to a single instance.", + "operationId": "isAlive", "responses": { "200": { - "description": "healthStatus", - "schema": { - "$ref": "#/definitions/healthStatus" - } + "content": { + "application/json": { + "schema": { + "properties": { + "status": { + "description": "Always \"ok\".", + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" + } + } + }, + "description": "Ory Keto is ready to accept connections." }, "500": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/genericError" } } - } + }, + "description": "genericError" } - } + }, + "summary": "Check HTTP Server Status", + "tags": [ + "metadata" + ] } }, "/health/ready": { "get": { - "description": "This endpoint returns a 200 status code when the HTTP server is up running and the environment dependencies (e.g.\nthe database) are responsive as well.\n\nIf the service supports TLS Edge Termination, this endpoint does not require the\n`X-Forwarded-Proto` header to be set.\n\nBe aware that if you are running multiple nodes of this service, the health status will never\nrefer to the cluster state, only to a single instance.", - "produces": [ - "application/json" - ], - "tags": [ - "health" - ], - "summary": "Check readiness status", - "operationId": "isInstanceReady", + "description": "This endpoint returns a HTTP 200 status code when Ory Keto is up running and the environment dependencies (e.g.\nthe database) are responsive as well.\n\nIf the service supports TLS Edge Termination, this endpoint does not require the\n`X-Forwarded-Proto` header to be set.\n\nBe aware that if you are running multiple nodes of Ory Keto, the health status will never\nrefer to the cluster state, only to a single instance.", + "operationId": "isReady", "responses": { "200": { - "description": "healthStatus", - "schema": { - "$ref": "#/definitions/healthStatus" - } + "content": { + "application/json": { + "schema": { + "properties": { + "status": { + "description": "Always \"ok\".", + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" + } + } + }, + "description": "Ory Keto is ready to accept requests." }, "503": { - "description": "healthNotReadyStatus", - "schema": { - "$ref": "#/definitions/healthNotReadyStatus" - } + "content": { + "application/json": { + "schema": { + "properties": { + "errors": { + "additionalProperties": { + "type": "string" + }, + "description": "Errors contains a list of errors that caused the not ready status.", + "type": "object" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Ory Kratos is not yet ready to accept requests." } - } + }, + "summary": "Check HTTP Server and Database Status", + "tags": [ + "metadata" + ] } }, "/relation-tuples": { - "get": { - "description": "Get all relation tuples that match the query. Only the namespace field is required.", - "consumes": [ - "application/x-www-form-urlencoded" - ], - "produces": [ - "application/json" - ], - "schemes": [ - "http", - "https" - ], - "tags": [ - "read" - ], - "summary": "Query relation tuples", - "operationId": "getRelationTuples", - "parameters": [ - { - "type": "string", - "name": "page_token", - "in": "query" - }, - { - "type": "integer", - "format": "int64", - "name": "page_size", - "in": "query" - }, + "delete": { + "description": "Use this endpoint to delete relation tuples", + "operationId": "deleteRelationTuples", + "parameters": [ { - "type": "string", "description": "Namespace of the Relation Tuple", + "in": "query", "name": "namespace", - "in": "query" + "schema": { + "type": "string" + } }, { - "type": "string", "description": "Object of the Relation Tuple", + "in": "query", "name": "object", - "in": "query" + "schema": { + "type": "string" + } }, { - "type": "string", "description": "Relation of the Relation Tuple", + "in": "query", "name": "relation", - "in": "query" + "schema": { + "type": "string" + } }, { - "type": "string", "description": "SubjectID of the Relation Tuple", + "in": "query", "name": "subject_id", - "in": "query" + "schema": { + "type": "string" + } }, { - "type": "string", "description": "Namespace of the Subject Set", + "in": "query", "name": "subject_set.namespace", - "in": "query" + "schema": { + "type": "string" + } }, { - "type": "string", "description": "Object of the Subject Set", + "in": "query", "name": "subject_set.object", - "in": "query" + "schema": { + "type": "string" + } }, { - "type": "string", "description": "Relation of the Subject Set", + "in": "query", "name": "subject_set.relation", - "in": "query" + "schema": { + "type": "string" + } } ], "responses": { - "200": { - "description": "getRelationTuplesResponse", - "schema": { - "$ref": "#/definitions/getRelationTuplesResponse" - } + "204": { + "$ref": "#/components/responses/emptyResponse" }, - "404": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/genericError" } } - } + }, + "description": "genericError" }, "500": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/genericError" } } - } + }, + "description": "genericError" } - } - }, - "put": { - "description": "Use this endpoint to create a relation tuple.", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "schemes": [ - "http", - "https" - ], + }, + "summary": "Delete Relation Tuples", "tags": [ "write" - ], - "summary": "Create a Relation Tuple", - "operationId": "createRelationTuple", + ] + }, + "get": { + "description": "Get all relation tuples that match the query. Only the namespace field is required.", + "operationId": "getRelationTuples", "parameters": [ { - "name": "Payload", - "in": "body", - "schema": { - "$ref": "#/definitions/RelationQuery" - } - } - ], - "responses": { - "201": { - "description": "RelationQuery", + "in": "query", + "name": "page_token", "schema": { - "$ref": "#/definitions/RelationQuery" + "type": "string" } }, - "400": { - "description": "The standard error format", + { + "in": "query", + "name": "page_size", "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } + "format": "int64", + "type": "integer" } }, - "500": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - } - } - }, - "delete": { - "description": "Use this endpoint to delete relation tuples", - "consumes": [ - "application/x-www-form-urlencoded" - ], - "produces": [ - "application/json" - ], - "schemes": [ - "http", - "https" - ], - "tags": [ - "write" - ], - "summary": "Delete Relation Tuples", - "operationId": "deleteRelationTuples", - "parameters": [ { - "type": "string", "description": "Namespace of the Relation Tuple", + "in": "query", "name": "namespace", - "in": "query" + "schema": { + "type": "string" + } }, { - "type": "string", "description": "Object of the Relation Tuple", + "in": "query", "name": "object", - "in": "query" + "schema": { + "type": "string" + } }, { - "type": "string", "description": "Relation of the Relation Tuple", + "in": "query", "name": "relation", - "in": "query" + "schema": { + "type": "string" + } }, { - "type": "string", "description": "SubjectID of the Relation Tuple", + "in": "query", "name": "subject_id", - "in": "query" + "schema": { + "type": "string" + } }, { - "type": "string", "description": "Namespace of the Subject Set", + "in": "query", "name": "subject_set.namespace", - "in": "query" + "schema": { + "type": "string" + } }, { - "type": "string", "description": "Object of the Subject Set", + "in": "query", "name": "subject_set.object", - "in": "query" + "schema": { + "type": "string" + } }, { - "type": "string", "description": "Relation of the Subject Set", + "in": "query", "name": "subject_set.relation", - "in": "query" + "schema": { + "type": "string" + } } ], "responses": { - "204": { - "description": "Empty responses are sent when, for example, resources are deleted. The HTTP status code for empty responses is typically 201." + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/getRelationTuplesResponse" + } + } + }, + "description": "getRelationTuplesResponse" }, - "400": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/genericError" } } - } + }, + "description": "genericError" }, "500": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/genericError" } } - } + }, + "description": "genericError" } - } + }, + "summary": "Query relation tuples", + "tags": [ + "read" + ] }, "patch": { "description": "Use this endpoint to patch one or more relation tuples.", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "schemes": [ - "http", - "https" - ], - "tags": [ - "write" - ], - "summary": "Patch Multiple Relation Tuples", "operationId": "patchRelationTuples", - "parameters": [ - { - "name": "Payload", - "in": "body", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/PatchDelta" + "requestBody": { + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/PatchDelta" + }, + "type": "array" } } - } - ], + }, + "x-originalParamName": "Payload" + }, "responses": { "204": { - "description": "Empty responses are sent when, for example, resources are deleted. The HTTP status code for empty responses is typically 201." + "$ref": "#/components/responses/emptyResponse" }, "400": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/genericError" } } - } + }, + "description": "genericError" }, "404": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/genericError" } } - } + }, + "description": "genericError" }, "500": { - "description": "The standard error format", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/genericError" } } + }, + "description": "genericError" + } + }, + "summary": "Patch Multiple Relation Tuples", + "tags": [ + "write" + ] + }, + "put": { + "description": "Use this endpoint to create a relation tuple.", + "operationId": "createRelationTuple", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RelationQuery" + } } + }, + "x-originalParamName": "Payload" + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RelationQuery" + } + } + }, + "description": "RelationQuery" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/genericError" + } + } + }, + "description": "genericError" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/genericError" + } + } + }, + "description": "genericError" } - } + }, + "summary": "Create a Relation Tuple", + "tags": [ + "write" + ] } }, "/version": { "get": { - "description": "This endpoint returns the service version typically notated using semantic versioning.\n\nIf the service supports TLS Edge Termination, this endpoint does not require the\n`X-Forwarded-Proto` header to be set.\n\nBe aware that if you are running multiple nodes of this service, the health status will never\nrefer to the cluster state, only to a single instance.", - "produces": [ - "application/json" - ], - "tags": [ - "version" - ], - "summary": "Get service version", + "description": "This endpoint returns the version of Ory Keto.\n\nIf the service supports TLS Edge Termination, this endpoint does not require the\n`X-Forwarded-Proto` header to be set.\n\nBe aware that if you are running multiple nodes of this service, the version will never\nrefer to the cluster state, only to a single instance.", "operationId": "getVersion", "responses": { "200": { - "description": "version", - "schema": { - "$ref": "#/definitions/version" - } - } - } - } - } - }, - "definitions": { - "InternalRelationTuple": { - "type": "object", - "required": [ - "namespace", - "object", - "relation" - ], - "properties": { - "namespace": { - "description": "Namespace of the Relation Tuple", - "type": "string" - }, - "object": { - "description": "Object of the Relation Tuple", - "type": "string" - }, - "relation": { - "description": "Relation of the Relation Tuple", - "type": "string" - }, - "subject_id": { - "description": "SubjectID of the Relation Tuple\n\nEither SubjectSet or SubjectID are required.", - "type": "string" - }, - "subject_set": { - "$ref": "#/definitions/SubjectSet" - } - } - }, - "PatchDelta": { - "type": "object", - "properties": { - "action": { - "type": "string", - "enum": [ - "insert", - "delete" - ] - }, - "relation_tuple": { - "$ref": "#/definitions/InternalRelationTuple" - } - } - }, - "RelationQuery": { - "type": "object", - "properties": { - "namespace": { - "description": "Namespace of the Relation Tuple", - "type": "string" - }, - "object": { - "description": "Object of the Relation Tuple", - "type": "string" - }, - "relation": { - "description": "Relation of the Relation Tuple", - "type": "string" - }, - "subject_id": { - "description": "SubjectID of the Relation Tuple\n\nEither SubjectSet or SubjectID can be provided.", - "type": "string" - }, - "subject_set": { - "$ref": "#/definitions/SubjectSet" - } - } - }, - "SubjectSet": { - "type": "object", - "required": [ - "namespace", - "object", - "relation" - ], - "properties": { - "namespace": { - "description": "Namespace of the Subject Set", - "type": "string" - }, - "object": { - "description": "Object of the Subject Set", - "type": "string" - }, - "relation": { - "description": "Relation of the Subject Set", - "type": "string" - } - } - }, - "expandTree": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "children": { - "type": "array", - "items": { - "$ref": "#/definitions/expandTree" + "content": { + "application/json": { + "schema": { + "properties": { + "version": { + "description": "The version of Ory Keto.", + "type": "string" + } + }, + "required": [ + "version" + ], + "type": "object" + } + } + }, + "description": "Returns the Ory Keto version." } }, - "subject_id": { - "type": "string" - }, - "subject_set": { - "$ref": "#/definitions/SubjectSet" - }, - "type": { - "type": "string", - "enum": [ - "union", - "exclusion", - "intersection", - "leaf" - ] - } - } - }, - "getCheckResponse": { - "description": "The content of the allowed field is mirrored in the HTTP status code.", - "type": "object", - "title": "Represents the response for a check request.", - "required": [ - "allowed" - ], - "properties": { - "allowed": { - "description": "whether the relation tuple is allowed", - "type": "boolean" - } - } - }, - "getRelationTuplesResponse": { - "type": "object", - "properties": { - "next_page_token": { - "description": "The opaque token to provide in a subsequent request\nto get the next page. It is the empty string iff this is\nthe last page.", - "type": "string" - }, - "relation_tuples": { - "type": "array", - "items": { - "$ref": "#/definitions/InternalRelationTuple" - } - } - } - }, - "healthNotReadyStatus": { - "type": "object", - "properties": { - "errors": { - "description": "Errors contains a list of errors that caused the not ready status.", - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - }, - "healthStatus": { - "type": "object", - "properties": { - "status": { - "description": "Status always contains \"ok\".", - "type": "string" - } - } - }, - "version": { - "type": "object", - "properties": { - "version": { - "description": "Version is the service's version.", - "type": "string" - } + "summary": "Return Running Software Version.", + "tags": [ + "metadata" + ] } } } diff --git a/spec/swagger.json b/spec/swagger.json index 6753b1843..b69da273b 100755 --- a/spec/swagger.json +++ b/spec/swagger.json @@ -49,22 +49,19 @@ "type": "string", "description": "Namespace of the Relation Tuple", "name": "namespace", - "in": "query", - "required": true + "in": "query" }, { "type": "string", "description": "Object of the Relation Tuple", "name": "object", - "in": "query", - "required": true + "in": "query" }, { "type": "string", "description": "Relation of the Relation Tuple", "name": "relation", - "in": "query", - "required": true + "in": "query" }, { "type": "string", @@ -89,6 +86,12 @@ "description": "Relation of the Subject Set", "name": "subject_set.relation", "in": "query" + }, + { + "type": "integer", + "format": "int64", + "name": "max-depth", + "in": "query" } ], "responses": { @@ -99,34 +102,9 @@ } }, "400": { - "description": "The standard error format", + "description": "genericError", "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } + "$ref": "#/definitions/genericError" } }, "403": { @@ -136,34 +114,9 @@ } }, "500": { - "description": "The standard error format", + "description": "genericError", "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } + "$ref": "#/definitions/genericError" } } } @@ -192,6 +145,12 @@ "schema": { "$ref": "#/definitions/RelationQuery" } + }, + { + "type": "integer", + "format": "int64", + "name": "max-depth", + "in": "query" } ], "responses": { @@ -202,34 +161,9 @@ } }, "400": { - "description": "The standard error format", + "description": "genericError", "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } + "$ref": "#/definitions/genericError" } }, "403": { @@ -239,34 +173,9 @@ } }, "500": { - "description": "The standard error format", + "description": "genericError", "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } + "$ref": "#/definitions/genericError" } } } @@ -327,96 +236,21 @@ } }, "400": { - "description": "The standard error format", + "description": "genericError", "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } + "$ref": "#/definitions/genericError" } }, "404": { - "description": "The standard error format", + "description": "genericError", "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } + "$ref": "#/definitions/genericError" } }, "500": { - "description": "The standard error format", + "description": "genericError", "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } + "$ref": "#/definitions/genericError" } } } @@ -441,34 +275,9 @@ } }, "500": { - "description": "The standard error format", + "description": "genericError", "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } + "$ref": "#/definitions/genericError" } } } @@ -520,26 +329,34 @@ "summary": "Query relation tuples", "operationId": "getRelationTuples", "parameters": [ + { + "type": "string", + "name": "page_token", + "in": "query" + }, + { + "type": "integer", + "format": "int64", + "name": "page_size", + "in": "query" + }, { "type": "string", "description": "Namespace of the Relation Tuple", "name": "namespace", - "in": "query", - "required": true + "in": "query" }, { "type": "string", "description": "Object of the Relation Tuple", "name": "object", - "in": "query", - "required": true + "in": "query" }, { "type": "string", "description": "Relation of the Relation Tuple", "name": "relation", - "in": "query", - "required": true + "in": "query" }, { "type": "string", @@ -564,17 +381,6 @@ "description": "Relation of the Subject Set", "name": "subject_set.relation", "in": "query" - }, - { - "type": "string", - "name": "page_token", - "in": "query" - }, - { - "type": "integer", - "format": "int64", - "name": "page_size", - "in": "query" } ], "responses": { @@ -585,65 +391,15 @@ } }, "404": { - "description": "The standard error format", + "description": "genericError", "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } + "$ref": "#/definitions/genericError" } }, "500": { - "description": "The standard error format", + "description": "genericError", "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } + "$ref": "#/definitions/genericError" } } } @@ -682,71 +438,21 @@ } }, "400": { - "description": "The standard error format", + "description": "genericError", "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } + "$ref": "#/definitions/genericError" } }, "500": { - "description": "The standard error format", + "description": "genericError", "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } + "$ref": "#/definitions/genericError" } } } }, "delete": { - "description": "Use this endpoint to delete a relation tuple.", + "description": "Use this endpoint to delete relation tuples", "consumes": [ "application/x-www-form-urlencoded" ], @@ -760,29 +466,26 @@ "tags": [ "write" ], - "summary": "Delete a Relation Tuple", - "operationId": "deleteRelationTuple", + "summary": "Delete Relation Tuples", + "operationId": "deleteRelationTuples", "parameters": [ { "type": "string", "description": "Namespace of the Relation Tuple", "name": "namespace", - "in": "query", - "required": true + "in": "query" }, { "type": "string", "description": "Object of the Relation Tuple", "name": "object", - "in": "query", - "required": true + "in": "query" }, { "type": "string", "description": "Relation of the Relation Tuple", "name": "relation", - "in": "query", - "required": true + "in": "query" }, { "type": "string", @@ -811,68 +514,18 @@ ], "responses": { "204": { - "description": "Empty responses are sent when, for example, resources are deleted. The HTTP status code for empty responses is typically 201." + "$ref": "#/responses/emptyResponse" }, "400": { - "description": "The standard error format", + "description": "genericError", "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } + "$ref": "#/definitions/genericError" } }, "500": { - "description": "The standard error format", + "description": "genericError", "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } + "$ref": "#/definitions/genericError" } } } @@ -908,99 +561,24 @@ ], "responses": { "204": { - "description": "Empty responses are sent when, for example, resources are deleted. The HTTP status code for empty responses is typically 201." + "$ref": "#/responses/emptyResponse" }, "400": { - "description": "The standard error format", + "description": "genericError", "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } + "$ref": "#/definitions/genericError" } }, "404": { - "description": "The standard error format", + "description": "genericError", "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } + "$ref": "#/definitions/genericError" } }, "500": { - "description": "The standard error format", + "description": "genericError", "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int64" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request": { - "type": "string" - }, - "status": { - "type": "string" - } - } + "$ref": "#/definitions/genericError" } } } @@ -1029,6 +607,380 @@ } }, "definitions": { + "CreateRelationTupleBadRequestBody": { + "description": "CreateRelationTupleBadRequestBody CreateRelationTupleBadRequestBody create relation tuple bad request body", + "type": "object", + "properties": { + "code": { + "description": "code", + "type": "integer", + "format": "int64" + }, + "details": { + "description": "details", + "type": "array", + "items": { + "type": "object" + } + }, + "message": { + "description": "message", + "type": "string" + }, + "reason": { + "description": "reason", + "type": "string" + }, + "request": { + "description": "request", + "type": "string" + }, + "status": { + "description": "status", + "type": "string" + } + } + }, + "CreateRelationTupleInternalServerErrorBody": { + "description": "CreateRelationTupleInternalServerErrorBody CreateRelationTupleInternalServerErrorBody create relation tuple internal server error body", + "type": "object", + "properties": { + "code": { + "description": "code", + "type": "integer", + "format": "int64" + }, + "details": { + "description": "details", + "type": "array", + "items": { + "type": "object" + } + }, + "message": { + "description": "message", + "type": "string" + }, + "reason": { + "description": "reason", + "type": "string" + }, + "request": { + "description": "request", + "type": "string" + }, + "status": { + "description": "status", + "type": "string" + } + } + }, + "DeleteRelationTuplesBadRequestBody": { + "description": "DeleteRelationTuplesBadRequestBody DeleteRelationTuplesBadRequestBody DeleteRelationTuplesBadRequestBody DeleteRelationTuplesBadRequestBody DeleteRelationTuplesBadRequestBody delete relation tuples bad request body", + "type": "object", + "properties": { + "code": { + "description": "code", + "type": "integer", + "format": "int64" + }, + "details": { + "description": "details", + "type": "array", + "items": { + "type": "object" + } + }, + "message": { + "description": "message", + "type": "string" + }, + "reason": { + "description": "reason", + "type": "string" + }, + "request": { + "description": "request", + "type": "string" + }, + "status": { + "description": "status", + "type": "string" + } + } + }, + "DeleteRelationTuplesInternalServerErrorBody": { + "description": "DeleteRelationTuplesInternalServerErrorBody DeleteRelationTuplesInternalServerErrorBody delete relation tuples internal server error body", + "type": "object", + "properties": { + "code": { + "description": "code", + "type": "integer", + "format": "int64" + }, + "details": { + "description": "details", + "type": "array", + "items": { + "type": "object" + } + }, + "message": { + "description": "message", + "type": "string" + }, + "reason": { + "description": "reason", + "type": "string" + }, + "request": { + "description": "request", + "type": "string" + }, + "status": { + "description": "status", + "type": "string" + } + } + }, + "GetCheckBadRequestBody": { + "description": "GetCheckBadRequestBody GetCheckBadRequestBody GetCheckBadRequestBody GetCheckBadRequestBody GetCheckBadRequestBody get check bad request body", + "type": "object", + "properties": { + "code": { + "description": "code", + "type": "integer", + "format": "int64" + }, + "details": { + "description": "details", + "type": "array", + "items": { + "type": "object" + } + }, + "message": { + "description": "message", + "type": "string" + }, + "reason": { + "description": "reason", + "type": "string" + }, + "request": { + "description": "request", + "type": "string" + }, + "status": { + "description": "status", + "type": "string" + } + } + }, + "GetCheckInternalServerErrorBody": { + "description": "GetCheckInternalServerErrorBody GetCheckInternalServerErrorBody GetCheckInternalServerErrorBody get check internal server error body", + "type": "object", + "properties": { + "code": { + "description": "code", + "type": "integer", + "format": "int64" + }, + "details": { + "description": "details", + "type": "array", + "items": { + "type": "object" + } + }, + "message": { + "description": "message", + "type": "string" + }, + "reason": { + "description": "reason", + "type": "string" + }, + "request": { + "description": "request", + "type": "string" + }, + "status": { + "description": "status", + "type": "string" + } + } + }, + "GetExpandBadRequestBody": { + "description": "GetExpandBadRequestBody GetExpandBadRequestBody GetExpandBadRequestBody GetExpandBadRequestBody get expand bad request body", + "type": "object", + "properties": { + "code": { + "description": "code", + "type": "integer", + "format": "int64" + }, + "details": { + "description": "details", + "type": "array", + "items": { + "type": "object" + } + }, + "message": { + "description": "message", + "type": "string" + }, + "reason": { + "description": "reason", + "type": "string" + }, + "request": { + "description": "request", + "type": "string" + }, + "status": { + "description": "status", + "type": "string" + } + } + }, + "GetExpandInternalServerErrorBody": { + "description": "GetExpandInternalServerErrorBody GetExpandInternalServerErrorBody get expand internal server error body", + "type": "object", + "properties": { + "code": { + "description": "code", + "type": "integer", + "format": "int64" + }, + "details": { + "description": "details", + "type": "array", + "items": { + "type": "object" + } + }, + "message": { + "description": "message", + "type": "string" + }, + "reason": { + "description": "reason", + "type": "string" + }, + "request": { + "description": "request", + "type": "string" + }, + "status": { + "description": "status", + "type": "string" + } + } + }, + "GetExpandNotFoundBody": { + "description": "GetExpandNotFoundBody GetExpandNotFoundBody GetExpandNotFoundBody GetExpandNotFoundBody get expand not found body", + "type": "object", + "properties": { + "code": { + "description": "code", + "type": "integer", + "format": "int64" + }, + "details": { + "description": "details", + "type": "array", + "items": { + "type": "object" + } + }, + "message": { + "description": "message", + "type": "string" + }, + "reason": { + "description": "reason", + "type": "string" + }, + "request": { + "description": "request", + "type": "string" + }, + "status": { + "description": "status", + "type": "string" + } + } + }, + "GetRelationTuplesInternalServerErrorBody": { + "description": "GetRelationTuplesInternalServerErrorBody GetRelationTuplesInternalServerErrorBody get relation tuples internal server error body", + "type": "object", + "properties": { + "code": { + "description": "code", + "type": "integer", + "format": "int64" + }, + "details": { + "description": "details", + "type": "array", + "items": { + "type": "object" + } + }, + "message": { + "description": "message", + "type": "string" + }, + "reason": { + "description": "reason", + "type": "string" + }, + "request": { + "description": "request", + "type": "string" + }, + "status": { + "description": "status", + "type": "string" + } + } + }, + "GetRelationTuplesNotFoundBody": { + "description": "GetRelationTuplesNotFoundBody GetRelationTuplesNotFoundBody get relation tuples not found body", + "type": "object", + "properties": { + "code": { + "description": "code", + "type": "integer", + "format": "int64" + }, + "details": { + "description": "details", + "type": "array", + "items": { + "type": "object" + } + }, + "message": { + "description": "message", + "type": "string" + }, + "reason": { + "description": "reason", + "type": "string" + }, + "request": { + "description": "request", + "type": "string" + }, + "status": { + "description": "status", + "type": "string" + } + } + }, "InternalRelationTuple": { "type": "object", "required": [ @@ -1058,14 +1010,49 @@ } } }, + "IsInstanceAliveInternalServerErrorBody": { + "description": "IsInstanceAliveInternalServerErrorBody IsInstanceAliveInternalServerErrorBody IsInstanceAliveInternalServerErrorBody IsInstanceAliveInternalServerErrorBody is instance alive internal server error body", + "type": "object", + "properties": { + "code": { + "description": "code", + "type": "integer", + "format": "int64" + }, + "details": { + "description": "details", + "type": "array", + "items": { + "type": "object" + } + }, + "message": { + "description": "message", + "type": "string" + }, + "reason": { + "description": "reason", + "type": "string" + }, + "request": { + "description": "request", + "type": "string" + }, + "status": { + "description": "status", + "type": "string" + } + } + }, "PatchDelta": { + "description": "PatchDelta PatchDelta PatchDelta PatchDelta PatchDelta PatchDelta patch delta", "type": "object", "properties": { "action": { + "description": "action", "type": "string", "enum": [ - "insert", - "delete" + "[[[[[[insert delete]]]]]]" ] }, "relation_tuple": { @@ -1073,11 +1060,179 @@ } } }, + "PatchRelationTuplesBadRequestBody": { + "description": "PatchRelationTuplesBadRequestBody PatchRelationTuplesBadRequestBody patch relation tuples bad request body", + "type": "object", + "properties": { + "code": { + "description": "code", + "type": "integer", + "format": "int64" + }, + "details": { + "description": "details", + "type": "array", + "items": { + "type": "object" + } + }, + "message": { + "description": "message", + "type": "string" + }, + "reason": { + "description": "reason", + "type": "string" + }, + "request": { + "description": "request", + "type": "string" + }, + "status": { + "description": "status", + "type": "string" + } + } + }, + "PatchRelationTuplesInternalServerErrorBody": { + "description": "PatchRelationTuplesInternalServerErrorBody PatchRelationTuplesInternalServerErrorBody patch relation tuples internal server error body", + "type": "object", + "properties": { + "code": { + "description": "code", + "type": "integer", + "format": "int64" + }, + "details": { + "description": "details", + "type": "array", + "items": { + "type": "object" + } + }, + "message": { + "description": "message", + "type": "string" + }, + "reason": { + "description": "reason", + "type": "string" + }, + "request": { + "description": "request", + "type": "string" + }, + "status": { + "description": "status", + "type": "string" + } + } + }, + "PatchRelationTuplesNotFoundBody": { + "description": "PatchRelationTuplesNotFoundBody PatchRelationTuplesNotFoundBody patch relation tuples not found body", + "type": "object", + "properties": { + "code": { + "description": "code", + "type": "integer", + "format": "int64" + }, + "details": { + "description": "details", + "type": "array", + "items": { + "type": "object" + } + }, + "message": { + "description": "message", + "type": "string" + }, + "reason": { + "description": "reason", + "type": "string" + }, + "request": { + "description": "request", + "type": "string" + }, + "status": { + "description": "status", + "type": "string" + } + } + }, + "PostCheckBadRequestBody": { + "description": "PostCheckBadRequestBody PostCheckBadRequestBody PostCheckBadRequestBody PostCheckBadRequestBody PostCheckBadRequestBody PostCheckBadRequestBody post check bad request body", + "type": "object", + "properties": { + "code": { + "description": "code", + "type": "integer", + "format": "int64" + }, + "details": { + "description": "details", + "type": "array", + "items": { + "type": "object" + } + }, + "message": { + "description": "message", + "type": "string" + }, + "reason": { + "description": "reason", + "type": "string" + }, + "request": { + "description": "request", + "type": "string" + }, + "status": { + "description": "status", + "type": "string" + } + } + }, + "PostCheckInternalServerErrorBody": { + "description": "PostCheckInternalServerErrorBody PostCheckInternalServerErrorBody post check internal server error body", + "type": "object", + "properties": { + "code": { + "description": "code", + "type": "integer", + "format": "int64" + }, + "details": { + "description": "details", + "type": "array", + "items": { + "type": "object" + } + }, + "message": { + "description": "message", + "type": "string" + }, + "reason": { + "description": "reason", + "type": "string" + }, + "request": { + "description": "request", + "type": "string" + }, + "status": { + "description": "status", + "type": "string" + } + } + }, "RelationQuery": { + "description": "RelationQuery RelationQuery RelationQuery RelationQuery RelationQuery RelationQuery relation query", "type": "object", - "required": [ - "namespace" - ], "properties": { "namespace": { "description": "Namespace of the Relation Tuple", @@ -1122,21 +1277,26 @@ } } }, + "UUID": {"type": "string", "format": "uuid4"}, "expandTree": { "type": "object", "required": [ - "type", - "subject" + "type" ], "properties": { "children": { + "description": "children", "type": "array", "items": { "$ref": "#/definitions/expandTree" } }, - "subject": { - "$ref": "#/definitions/subject" + "subject_id": { + "description": "subject id", + "type": "string" + }, + "subject_set": { + "$ref": "#/definitions/SubjectSet" }, "type": { "type": "string", @@ -1149,10 +1309,45 @@ } } }, + "genericError": { + "description": "The standard error format", + "type": "object", + "properties": { + "code": { + "description": "code", + "type": "integer", + "format": "int64" + }, + "details": { + "description": "details", + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "message": { + "description": "message", + "type": "string" + }, + "reason": { + "description": "reason", + "type": "string" + }, + "request": { + "description": "request", + "type": "string" + }, + "status": { + "description": "status", + "type": "string" + } + } + }, "getCheckResponse": { "description": "The content of the allowed field is mirrored in the HTTP status code.", "type": "object", - "title": "Represents the response for a check request.", + "title": "GetCheckResponse Represents the response for a check request.", "required": [ "allowed" ], @@ -1164,6 +1359,7 @@ } }, "getRelationTuplesResponse": { + "description": "GetRelationTuplesResponse GetRelationTuplesResponse GetRelationTuplesResponse GetRelationTuplesResponse GetRelationTuplesResponse get relation tuples response", "type": "object", "properties": { "next_page_token": { @@ -1171,6 +1367,7 @@ "type": "string" }, "relation_tuples": { + "description": "relation tuples", "type": "array", "items": { "$ref": "#/definitions/InternalRelationTuple" @@ -1191,6 +1388,7 @@ } }, "healthStatus": { + "description": "HealthStatus health status", "type": "object", "properties": { "status": { @@ -1200,6 +1398,7 @@ } }, "subject": { + "description": "Subject Subject Subject subject", "type": "object" }, "version": { @@ -1211,5 +1410,10 @@ } } } + }, + "responses": { + "emptyResponse": { + "description": "Empty responses are sent when, for example, resources are deleted. The HTTP status code for empty responses is typically 201." + } } } \ No newline at end of file