From c72ba476fbe804702bc01ac41e84e756170967d5 Mon Sep 17 00:00:00 2001 From: Denis Arh Date: Wed, 23 Nov 2022 11:28:20 +0100 Subject: [PATCH] Fix discovery server build issues Rename "aux" to "extra" due to: > "aux" disallowed as path element component on Windows --- .github/workflows/release.yml | 16 +- aux/server-discovery/.env.example | 139 -- aux/server-discovery/go.mod | 49 - aux/server-discovery/go.sum | 754 ------- .../de/corteza-server/auth/inc_footer.yaml | 2 - .../expressions-help.yaml | 124 -- .../src/en/corteza-server/auth/login.yaml | 22 - .../src/en/corteza-server/auth/logout.yaml | 3 - .../auth/oauth2-authorize-client.yaml | 14 - .../auth/pending-email-confirmation.yaml | 4 - .../auth/request-password-reset.yaml | 9 - .../compose.settings.yaml | 11 - .../en/corteza-webapp-admin/ui.settings.yaml | 24 - .../expressions-help.yaml | 123 -- .../src/en/corteza-webapp-compose/module.yaml | 102 - .../en/corteza-webapp-reporter/general.yaml | 7 - .../en/corteza-webapp-workflow/general.yaml | 22 - .../fr/corteza-server/auth/inc_footer.yaml | 2 - .../src/fr/corteza-server/auth/mfa-totp.yaml | 23 - .../expressions-help.yaml | 124 -- .../src/ro/corteza-server/auth/profile.yaml | 19 - .../expressions-help.yaml | 124 -- .../expressions-help.yaml | 124 -- .../auth/authorized-clients.yaml | 10 - .../corteza-server/auth/change-password.yaml | 17 - .../corteza-server/auth/create-password.yaml | 15 - .../corteza-server/auth/error-internal.yaml | 3 - .../uk/corteza-server/auth/inc_header.yaml | 3 - .../src/uk/corteza-server/auth/inc_nav.yaml | 8 - .../src/uk/corteza-server/auth/logout.yaml | 4 - .../corteza-server/auth/mfa-totp-disable.yaml | 6 - .../src/uk/corteza-server/auth/mfa.yaml | 19 - .../auth/password-reset-requested.yaml | 9 - .../auth/pending-email-confirmation.yaml | 5 - .../corteza-server/auth/reset-password.yaml | 12 - .../src/uk/corteza-server/auth/security.yaml | 23 - .../src/uk/corteza-server/auth/sessions.yaml | 17 - .../src/uk/corteza-server/auth/signup.yaml | 24 - .../corteza-webapp-admin/system.settings.yaml | 119 -- .../expressions-help.yaml | 124 -- .../corteza-server/pkg/locale/input.go | 15 - .../corteza-server/pkg/logger/logger.go | 107 - .../corteza-server/pkg/options/DB.gen.go | 35 - .../corteza-server/pkg/options/DB.yaml | 7 - .../pkg/options/HTTPClient.gen.go | 41 - .../pkg/options/HTTPClient.yaml | 24 - .../pkg/options/HTTPServer.gen.go | 77 - .../pkg/options/HTTPServer.yaml | 119 -- .../corteza-server/pkg/options/RBAC.gen.go | 41 - .../corteza-server/pkg/options/RBAC.yaml | 45 - .../corteza-server/pkg/options/SCIM.gen.go | 40 - .../corteza-server/pkg/options/SCIM.yaml | 18 - .../corteza-server/pkg/options/SMTP.gen.go | 43 - .../corteza-server/pkg/options/SMTP.yaml | 35 - .../pkg/options/actionLog.gen.go | 39 - .../corteza-server/pkg/options/actionLog.yaml | 21 - .../corteza-server/pkg/options/apigw.gen.go | 51 - .../corteza-server/pkg/options/apigw.yaml | 49 - .../corteza-server/pkg/options/auth.gen.go | 85 - .../corteza-server/pkg/options/auth.yaml | 182 -- .../pkg/options/corredor.gen.go | 64 - .../corteza-server/pkg/options/corredor.yaml | 65 - .../pkg/options/environment.gen.go | 35 - .../pkg/options/environment.yaml | 7 - .../pkg/options/eventbus.gen.go | 41 - .../corteza-server/pkg/options/eventbus.yaml | 16 - .../pkg/options/federation.gen.go | 51 - .../pkg/options/federation.yaml | 45 - .../corteza-server/pkg/options/limit.gen.go | 33 - .../corteza-server/pkg/options/limit.yaml | 50 - .../corteza-server/pkg/options/locale.gen.go | 41 - .../corteza-server/pkg/options/locale.yaml | 33 - .../corteza-server/pkg/options/log.gen.go | 41 - .../corteza-server/pkg/options/log.yaml | 49 - .../pkg/options/messagebus.gen.go | 37 - .../pkg/options/messagebus.yaml | 15 - .../corteza-server/pkg/options/monitor.gen.go | 39 - .../corteza-server/pkg/options/monitor.yaml | 11 - .../pkg/options/objectStore.gen.go | 46 - .../pkg/options/objectStore.yaml | 44 - .../corteza-server/pkg/options/plugins.gen.go | 36 - .../corteza-server/pkg/options/plugins.yaml | 12 - .../pkg/options/provision.gen.go | 37 - .../corteza-server/pkg/options/provision.yaml | 23 - .../corteza-server/pkg/options/seeder.gen.go | 33 - .../corteza-server/pkg/options/seeder.yaml | 8 - .../corteza-server/pkg/options/sentry.gen.go | 49 - .../corteza-server/pkg/options/sentry.yaml | 49 - .../pkg/options/template.gen.go | 37 - .../corteza-server/pkg/options/template.yaml | 11 - .../corteza-server/pkg/options/upgrade.gen.go | 37 - .../corteza-server/pkg/options/upgrade.yaml | 16 - .../corteza-server/pkg/options/waitFor.gen.go | 48 - .../corteza-server/pkg/options/waitFor.yaml | 56 - .../pkg/options/websocket.gen.go | 44 - .../corteza-server/pkg/options/websocket.yaml | 24 - .../pkg/options/workflow.gen.go | 39 - .../corteza-server/pkg/options/workflow.yaml | 18 - .../github.com/dgrijalva/jwt-go/.travis.yml | 13 - .../vendor/github.com/go-chi/chi/.travis.yml | 18 - .../vendor/github.com/go-chi/chi/chain.go | 49 - .../vendor/github.com/go-chi/chi/chi.go | 134 -- .../vendor/github.com/go-chi/chi/context.go | 161 -- .../go-chi/chi/middleware/closenotify17.go | 42 - .../go-chi/chi/middleware/closenotify18.go | 17 - .../go-chi/chi/middleware/compress.go | 273 --- .../go-chi/chi/middleware/compress18.go | 15 - .../go-chi/chi/middleware/content_type.go | 45 - .../go-chi/chi/middleware/get_head.go | 39 - .../go-chi/chi/middleware/heartbeat.go | 26 - .../go-chi/chi/middleware/logger.go | 158 -- .../go-chi/chi/middleware/middleware.go | 12 - .../go-chi/chi/middleware/profiler.go | 55 - .../go-chi/chi/middleware/realip.go | 54 - .../go-chi/chi/middleware/recoverer.go | 39 - .../go-chi/chi/middleware/request_id.go | 92 - .../github.com/go-chi/chi/middleware/strip.go | 48 - .../go-chi/chi/middleware/terminal.go | 63 - .../go-chi/chi/middleware/throttle.go | 101 - .../go-chi/chi/middleware/url_format.go | 72 - .../github.com/go-chi/chi/middleware/value.go | 17 - .../go-chi/chi/middleware/wrap_writer.go | 154 -- .../go-chi/chi/middleware/wrap_writer17.go | 34 - .../go-chi/chi/middleware/wrap_writer18.go | 41 - .../vendor/github.com/go-chi/chi/mux.go | 459 ---- .../vendor/github.com/go-chi/chi/tree.go | 844 -------- .../github.com/go-chi/chi/v5/.gitignore | 3 - .../chi/v5/middleware/content_charset.go | 51 - .../go-chi/chi/v5/middleware/nocache.go | 58 - .../go-chi/chi/v5/middleware/timeout.go | 49 - .../vendor/github.com/spf13/cast/.travis.yml | 15 - .../vendor/github.com/spf13/cobra/.travis.yml | 21 - .../github.com/spf13/cobra/zsh_completions.go | 126 -- .../vendor/go.uber.org/atomic/.travis.yml | 27 - .../vendor/go.uber.org/multierr/.travis.yml | 23 - .../vendor/go.uber.org/zap/stacktrace.go | 85 - .../vendor/golang.org/x/net/AUTHORS | 3 - .../vendor/golang.org/x/net/CONTRIBUTORS | 3 - .../vendor/golang.org/x/text/AUTHORS | 3 - .../vendor/golang.org/x/text/CONTRIBUTORS | 3 - .../golang.org/x/text/language/go1_1.go | 39 - .../golang.org/x/text/language/go1_2.go | 12 - {aux => extra}/server-discovery/.editorconfig | 0 {aux => extra}/server-discovery/.gitignore | 0 {aux => extra}/server-discovery/Dockerfile | 0 .../server-discovery/Dockerfile.snapshot | 0 {aux => extra}/server-discovery/Makefile | 2 +- {aux => extra}/server-discovery/Makefile.inc | 0 {aux => extra}/server-discovery/app/app.go | 2 +- .../server-discovery/app/boot_levels.go | 8 +- .../server-discovery/app/servers.go | 2 +- .../server-discovery/docker-compose.yaml | 0 extra/server-discovery/go.mod | 55 + extra/server-discovery/go.sum | 293 +++ .../server-discovery/indexer/internal.go | 0 .../server-discovery/indexer/service.go | 10 +- {aux => extra}/server-discovery/main.go | 4 +- .../server-discovery/pkg/api/client.go | 2 +- .../server-discovery/pkg/api/server/cors.go | 0 .../server-discovery/pkg/api/server/demux.go | 0 .../pkg/api/server/handlers.go | 6 +- .../server-discovery/pkg/api/server/logger.go | 0 .../pkg/api/server/middleware.go | 0 .../server-discovery/pkg/api/server/server.go | 2 +- .../pkg/api/server/waitfor.go | 0 .../server-discovery/pkg/auth/identity.go | 0 .../pkg/auth/identity_context.go | 0 .../server-discovery/pkg/auth/interfaces.go | 0 .../server-discovery/pkg/auth/token_issuer.go | 0 .../pkg/auth/token_middleware.go | 0 {aux => extra}/server-discovery/pkg/es/es.go | 2 +- .../pkg/es/mapping/mapping.go | 2 +- .../pkg/es/mapping/mapping_test.go | 0 .../pkg/es/reindex/reindex.go | 2 +- .../server-discovery/pkg/healthcheck/check.go | 0 .../pkg/healthcheck/check_test.go | 0 .../pkg/healthcheck/http_handler.go | 0 .../pkg/options/HttpServer.go | 0 .../server-discovery/pkg/options/corteza.go | 0 .../pkg/options/environment.go | 0 .../server-discovery/pkg/options/es.go | 0 .../server-discovery/pkg/options/helpers.go | 0 .../server-discovery/pkg/options/indexer.go | 0 .../server-discovery/pkg/options/options.go | 0 .../server-discovery/pkg/options/searcher.go | 0 .../server-discovery/pkg/options/waitFor.go | 0 .../server-discovery/searcher/healthcheck.go | 0 .../server-discovery/searcher/rest/conv.go | 0 .../server-discovery/searcher/rest/es.go | 0 .../searcher/rest/handlers/search.go | 2 +- .../searcher/rest/request/request.go | 0 .../server-discovery/searcher/rest/router.go | 4 +- .../server-discovery/searcher/rest/search.go | 4 +- .../server-discovery/searcher/service.go | 6 +- .../github.com/PaesslerAG/gval/.gitignore | 30 + .../github.com/PaesslerAG/gval/.travis.yml | 12 + .../vendor/github.com/PaesslerAG/gval/LICENSE | 12 + .../github.com/PaesslerAG/gval/README.md | 163 ++ .../github.com/PaesslerAG/gval/evaluable.go | 348 +++ .../github.com/PaesslerAG/gval/functions.go | 126 ++ .../vendor/github.com/PaesslerAG/gval/gval.go | 327 +++ .../github.com/PaesslerAG/gval/language.go | 281 +++ .../github.com/PaesslerAG/gval/operator.go | 391 ++++ .../github.com/PaesslerAG/gval/parse.go | 347 +++ .../github.com/PaesslerAG/gval/parser.go | 147 ++ .../PaesslerAG/gval/prtg-batmin-gopher.png | Bin 0 -> 34696 bytes .../github.com/SentimensRG/ctx/.gitignore | 0 .../vendor/github.com/SentimensRG/ctx/LICENSE | 0 .../github.com/SentimensRG/ctx/README.md | 63 + .../vendor/github.com/SentimensRG/ctx/ctx.go | 0 .../SentimensRG/ctx/sigctx/README.md | 63 + .../SentimensRG/ctx/sigctx/sigctx.go | 0 .../asaskevich/govalidator/.gitignore | 15 + .../asaskevich/govalidator/.travis.yml | 12 + .../asaskevich/govalidator/CODE_OF_CONDUCT.md | 43 + .../asaskevich/govalidator/CONTRIBUTING.md | 63 + .../github.com/asaskevich/govalidator/LICENSE | 21 + .../asaskevich/govalidator/README.md | 622 ++++++ .../asaskevich/govalidator/arrays.go | 87 + .../asaskevich/govalidator/converter.go | 81 + .../github.com/asaskevich/govalidator/doc.go | 3 + .../asaskevich/govalidator/error.go | 47 + .../asaskevich/govalidator/numerics.go | 100 + .../asaskevich/govalidator/patterns.go | 113 + .../asaskevich/govalidator/types.go | 656 ++++++ .../asaskevich/govalidator/utils.go | 270 +++ .../asaskevich/govalidator/validator.go | 1769 +++++++++++++++ .../asaskevich/govalidator/wercker.yml | 15 + .../github.com/aymerick/douceur/LICENSE | 0 .../aymerick/douceur/css/declaration.go | 0 .../github.com/aymerick/douceur/css/rule.go | 0 .../aymerick/douceur/css/stylesheet.go | 0 .../aymerick/douceur/parser/parser.go | 0 .../cortezaproject/corteza-locale/.gitignore | 0 .../corteza-locale/CONTRIBUTING.md | 77 + .../cortezaproject/corteza-locale/DCO | 0 .../cortezaproject/corteza-locale/DEV.md | 91 + .../cortezaproject/corteza-locale/LICENSE | 0 .../cortezaproject/corteza-locale/README.md | 98 + .../cortezaproject/corteza-locale/crowdin.yml | 0 .../corteza-locale/docker-compose.yaml | 0 .../cortezaproject/corteza-locale/locale.go | 0 .../cortezaproject/corteza-locale/security.md | 37 + .../corteza-locale/src/de/config.yaml | 1 + .../auth/authorized-clients.yaml | 0 .../corteza-server/auth/change-password.yaml | 0 .../corteza-server/auth/create-password.yaml | 0 .../corteza-server/auth/error-internal.yaml | 0 .../de/corteza-server/auth/inc_footer.yaml | 3 + .../de/corteza-server/auth/inc_header.yaml | 0 .../src/de/corteza-server/auth/inc_nav.yaml | 0 .../src/de/corteza-server/auth/login.yaml | 2 +- .../src/de/corteza-server/auth/logout.yaml | 0 .../corteza-server/auth/mfa-totp-disable.yaml | 0 .../src/de/corteza-server/auth/mfa-totp.yaml | 13 +- .../src/de/corteza-server/auth/mfa.yaml | 0 .../auth/oauth2-authorize-client.yaml | 0 .../auth/password-reset-requested.yaml | 0 .../auth/pending-email-confirmation.yaml | 0 .../src/de/corteza-server/auth/profile.yaml | 4 +- .../auth/request-password-reset.yaml | 0 .../corteza-server/auth/reset-password.yaml | 0 .../src/de/corteza-server/auth/security.yaml | 0 .../src/de/corteza-server/auth/sessions.yaml | 4 +- .../src/de/corteza-server/auth/signup.yaml | 0 .../automation/access-control.yaml | 0 .../de/corteza-server/automation/session.yaml | 0 .../de/corteza-server/automation/trigger.yaml | 0 .../corteza-server/automation/workflow.yaml | 0 .../compose/access-control.yaml | 0 .../de/corteza-server/compose/attachment.yaml | 0 .../src/de/corteza-server/compose/chart.yaml | 0 .../src/de/corteza-server/compose/field.yaml | 14 + .../src/de/corteza-server/compose/module.yaml | 0 .../de/corteza-server/compose/namespace.yaml | 2 +- .../corteza-server/compose/notifications.yaml | 0 .../src/de/corteza-server/compose/page.yaml | 0 .../src/de/corteza-server/compose/record.yaml | 0 .../federation/access-control.yaml | 0 .../federation/exposed-module.yaml | 0 .../federation/module-mapping.yaml | 0 .../corteza-server/federation/node-sync.yaml | 0 .../de/corteza-server/federation/node.yaml | 0 .../federation/shared-module.yaml | 0 .../src/de/corteza-server/internal/auth.yaml | 0 .../corteza-server/system/access-control.yaml | 0 .../corteza-server/system/apigw-filter.yaml | 0 .../de/corteza-server/system/apigw-route.yaml | 0 .../de/corteza-server/system/application.yaml | 0 .../de/corteza-server/system/attachment.yaml | 0 .../de/corteza-server/system/auth-client.yaml | 0 .../src/de/corteza-server/system/auth.yaml | 0 .../src/de/corteza-server/system/queue.yaml | 0 .../de/corteza-server/system/reminder.yaml | 0 .../src/de/corteza-server/system/report.yaml | 0 .../src/de/corteza-server/system/role.yaml | 0 .../src/de/corteza-server/system/sink.yaml | 0 .../de/corteza-server/system/statistics.yaml | 0 .../de/corteza-server/system/template.yaml | 0 .../src/de/corteza-server/system/user.yaml | 0 .../src/de/corteza-webapp-admin/admin.yaml | 0 .../automation.permissions.yaml | 0 .../automation.scripts.yaml | 0 .../automation.sessions.yaml | 0 .../automation.workflows.yaml | 0 .../compose.automation.yaml | 0 .../compose.permissions.yaml | 0 .../compose.settings.yaml | 0 .../de/corteza-webapp-admin/dashboard.yaml | 0 .../federation.nodes.yaml | 0 .../federation.permissions.yaml | 0 .../de/corteza-webapp-admin/navigation.yaml | 0 .../corteza-webapp-admin/notification.yaml | 2 + .../system.actionlog.yaml | 0 .../de/corteza-webapp-admin/system.apigw.yaml | 0 .../system.applications.yaml | 0 .../system.authclients.yaml | 4 +- .../system.permissions.yaml | 0 .../corteza-webapp-admin/system.queues.yaml | 0 .../de/corteza-webapp-admin/system.roles.yaml | 0 .../corteza-webapp-admin/system.settings.yaml | 13 +- .../system.templates.yaml | 0 .../de/corteza-webapp-admin/system.users.yaml | 11 + .../de/corteza-webapp-admin/ui.settings.yaml | 0 .../src/de/corteza-webapp-admin/ui.yaml | 0 .../src/de/corteza-webapp-compose/block.yaml | 7 +- .../src/de/corteza-webapp-compose/chart.yaml | 0 .../src/de/corteza-webapp-compose/field.yaml | 6 + .../de/corteza-webapp-compose/general.yaml | 2 +- .../src/de/corteza-webapp-compose/module.yaml | 0 .../de/corteza-webapp-compose/namespace.yaml | 0 .../de/corteza-webapp-compose/navigation.yaml | 0 .../corteza-webapp-compose/notification.yaml | 0 .../de/corteza-webapp-compose/onboarding.yaml | 0 .../src/de/corteza-webapp-compose/page.yaml | 0 .../de/corteza-webapp-compose/permission.yaml | 0 .../de/corteza-webapp-compose/preview.yaml | 0 .../de/corteza-webapp-compose/sidebar.yaml | 0 .../src/de/corteza-webapp-one/app.yaml | 0 .../src/de/corteza-webapp-one/layout.yaml | 0 .../src/de/corteza-webapp-one/navigation.yaml | 0 .../de/corteza-webapp-reporter/create.yaml | 0 .../src/de/corteza-webapp-reporter/edit.yaml | 0 .../de/corteza-webapp-reporter/general.yaml | 0 .../src/de/corteza-webapp-reporter/list.yaml | 0 .../corteza-webapp-reporter/navigation.yaml | 0 .../corteza-webapp-reporter/notification.yaml | 0 .../corteza-webapp-reporter/permission.yaml | 0 .../corteza-webapp-workflow/navigation.yaml | 0 .../corteza-webapp-workflow/permission.yaml | 0 .../corteza-locale/src/en/config.yaml | 0 .../auth/authorized-clients.yaml | 0 .../corteza-server/auth/change-password.yaml | 0 .../corteza-server/auth/create-password.yaml | 0 .../corteza-server/auth/error-internal.yaml | 0 .../en/corteza-server/auth/inc_footer.yaml | 0 .../en/corteza-server/auth/inc_header.yaml | 0 .../src/en/corteza-server/auth/inc_nav.yaml | 0 .../src/en}/corteza-server/auth/login.yaml | 6 +- .../src/en/corteza-server/auth/logout.yaml | 3 + .../corteza-server/auth/mfa-totp-disable.yaml | 0 .../src/en/corteza-server/auth/mfa-totp.yaml | 8 +- .../src/en/corteza-server/auth/mfa.yaml | 0 .../auth/oauth2-authorize-client.yaml | 5 +- .../auth/password-reset-requested.yaml | 2 +- .../auth/pending-email-confirmation.yaml | 4 + .../src/en}/corteza-server/auth/profile.yaml | 5 +- .../auth/request-password-reset.yaml | 3 +- .../corteza-server/auth/reset-password.yaml | 0 .../src/en/corteza-server/auth/security.yaml | 0 .../src/en/corteza-server/auth/sessions.yaml | 6 +- .../src/en/corteza-server/auth/signup.yaml | 2 +- .../automation/access-control.yaml | 0 .../en/corteza-server/automation/session.yaml | 0 .../en/corteza-server/automation/trigger.yaml | 0 .../corteza-server/automation/workflow.yaml | 0 .../compose/access-control.yaml | 0 .../en/corteza-server/compose/attachment.yaml | 3 + .../src/en/corteza-server/compose/chart.yaml | 0 .../src/en/corteza-server/compose/field.yaml | 14 + .../src/en/corteza-server/compose/module.yaml | 0 .../en/corteza-server/compose/namespace.yaml | 0 .../corteza-server/compose/notifications.yaml | 0 .../src/en/corteza-server/compose/page.yaml | 0 .../corteza-server/compose/record-field.yaml | 6 + .../src/en/corteza-server/compose/record.yaml | 0 .../federation/access-control.yaml | 0 .../federation/exposed-module.yaml | 0 .../federation/module-mapping.yaml | 0 .../corteza-server/federation/node-sync.yaml | 0 .../en/corteza-server/federation/node.yaml | 0 .../federation/shared-module.yaml | 0 .../src/en/corteza-server/internal/auth.yaml | 0 .../corteza-server/system/access-control.yaml | 0 .../corteza-server/system/apigw-filter.yaml | 2 + .../en/corteza-server/system/apigw-route.yaml | 1 + .../en/corteza-server/system/application.yaml | 0 .../en/corteza-server/system/attachment.yaml | 0 .../en/corteza-server/system/auth-client.yaml | 2 + .../src/en/corteza-server/system/auth.yaml | 0 .../en/corteza-server/system/credentials.yaml | 4 + .../corteza-server/system/dal-connection.yaml | 13 + .../system/dal-sensitivity-level.yaml | 8 + .../corteza-server/system/data-privacy.yaml | 9 + .../src/en/corteza-server/system/queue.yaml | 0 .../en/corteza-server/system/reminder.yaml | 0 .../src/en/corteza-server/system/report.yaml | 0 .../src/en/corteza-server/system/role.yaml | 0 .../en/corteza-server/system/settings.yaml | 8 + .../src/en/corteza-server/system/sink.yaml | 0 .../en/corteza-server/system/statistics.yaml | 0 .../en/corteza-server/system/template.yaml | 0 .../src/en/corteza-server/system/user.yaml | 0 .../src/en/corteza-webapp-admin/admin.yaml | 6 + .../automation.scripts.yaml | 0 .../automation.sessions.yaml | 3 + .../automation.workflows.yaml | 8 +- .../compose.automation.yaml | 0 .../compose.settings.yaml | 25 + .../en/corteza-webapp-admin/dashboard.yaml | 0 .../expressions-help.yaml | 0 .../federation.nodes.yaml | 6 +- .../src/en/corteza-webapp-admin/general.yaml | 16 + .../en/corteza-webapp-admin/navigation.yaml | 2 + .../en/corteza-webapp-admin/notification.yaml | 271 +++ .../en/corteza-webapp-admin/permissions.yaml | 109 +- .../system.actionlog.yaml | 0 .../en/corteza-webapp-admin/system.apigw.yaml | 99 +- .../system.applications.yaml | 10 +- .../system.authclients.yaml | 15 +- .../system.connections.yaml | 110 + .../en/corteza-webapp-admin/system.email.yaml | 0 .../corteza-webapp-admin/system.queues.yaml | 8 +- .../en/corteza-webapp-admin/system.roles.yaml | 11 +- .../system.sensitivityLevel.yaml | 42 + .../corteza-webapp-admin/system.settings.yaml | 12 +- .../system.templates.yaml | 9 +- .../en/corteza-webapp-admin/system.users.yaml | 27 +- .../en/corteza-webapp-admin/ui.settings.yaml | 50 + .../src/en/corteza-webapp-admin/ui.yaml | 0 .../src/en/corteza-webapp-compose/block.yaml | 119 +- .../src/en/corteza-webapp-compose/chart.yaml | 12 +- .../src/en/corteza-webapp-compose/field.yaml | 59 +- .../en/corteza-webapp-compose/general.yaml | 20 +- .../src/en/corteza-webapp-compose/module.yaml | 199 ++ .../en/corteza-webapp-compose/namespace.yaml | 28 +- .../en/corteza-webapp-compose/navigation.yaml | 0 .../corteza-webapp-compose/notification.yaml | 18 + .../en/corteza-webapp-compose/onboarding.yaml | 4 + .../src/en/corteza-webapp-compose/page.yaml | 19 +- .../corteza-webapp-compose/permissions.yaml | 49 +- .../en/corteza-webapp-compose/preview.yaml | 0 .../resource-translator.yaml | 8 +- .../en/corteza-webapp-compose/sidebar.yaml | 6 +- .../en/corteza-webapp-discovery/filters.yaml | 2 + .../en/corteza-webapp-discovery/general.yaml | 2 + .../corteza-webapp-discovery/navigation.yaml | 11 + .../notification.yaml | 6 + .../en/corteza-webapp-discovery/search.yaml | 7 +- .../src/en/corteza-webapp-one/app.yaml | 0 .../src/en/corteza-webapp-one/layout.yaml | 0 .../src/en/corteza-webapp-one/navigation.yaml | 0 .../corteza-webapp-one/onboarding-tour.yaml | 0 .../en/corteza-webapp-privacy/dashboard.yaml | 31 + .../corteza-webapp-privacy/data-overview.yaml | 19 + .../en/corteza-webapp-privacy/general.yaml | 15 + .../src/en/corteza-webapp-privacy/map.yaml | 4 + .../module-records.yaml | 3 + .../corteza-webapp-privacy}/navigation.yaml | 0 .../corteza-webapp-privacy/notification.yaml | 11 + .../en/corteza-webapp-privacy/request.yaml | 81 + .../sensitive-data.yaml | 11 + .../en/corteza-webapp-reporter/builder.yaml | 28 +- .../en/corteza-webapp-reporter/create.yaml | 0 .../corteza-webapp-reporter/datasources.yaml | 0 .../display-element.yaml | 0 .../src/en/corteza-webapp-reporter/edit.yaml | 4 +- .../en/corteza-webapp-reporter/general.yaml | 17 + .../src/en/corteza-webapp-reporter/list.yaml | 2 + .../corteza-webapp-reporter/navigation.yaml | 0 .../corteza-webapp-reporter/notification.yaml | 0 .../corteza-webapp-reporter/permissions.yaml | 29 +- .../en/corteza-webapp-reporter/scenarios.yaml | 0 .../en/corteza-webapp-reporter/sidebar.yaml | 0 .../src/en/corteza-webapp-reporter/view.yaml | 3 + .../corteza-webapp-workflow/configurator.yaml | 8 +- .../en/corteza-webapp-workflow/editor.yaml | 1 + .../en/corteza-webapp-workflow/general.yaml | 48 + .../src/en/corteza-webapp-workflow/help.yaml | 0 .../corteza-webapp-workflow/navigation.yaml | 0 .../corteza-webapp-workflow/notification.yaml | 9 +- .../corteza-webapp-workflow/permissions.yaml | 29 +- .../src/en/corteza-webapp-workflow/steps.yaml | 60 +- .../corteza-locale/src/fr/config.yaml | 1 + .../auth/authorized-clients.yaml | 10 + .../corteza-server/auth/change-password.yaml | 17 + .../corteza-server/auth/create-password.yaml | 15 + .../corteza-server/auth/error-internal.yaml | 3 + .../fr/corteza-server/auth/inc_footer.yaml | 3 + .../fr/corteza-server/auth/inc_header.yaml | 3 + .../src/fr/corteza-server/auth/inc_nav.yaml | 8 + .../src/fr/corteza-server/auth/login.yaml | 22 + .../src/fr/corteza-server/auth/logout.yaml | 4 + .../corteza-server/auth/mfa-totp-disable.yaml | 6 + .../src/fr/corteza-server/auth/mfa-totp.yaml | 28 + .../src/fr/corteza-server/auth/mfa.yaml | 19 + .../auth/oauth2-authorize-client.yaml | 15 + .../auth/password-reset-requested.yaml | 9 + .../auth/pending-email-confirmation.yaml | 5 + .../src/fr/corteza-server/auth/profile.yaml | 21 + .../auth/request-password-reset.yaml | 10 + .../corteza-server/auth/reset-password.yaml | 12 + .../src/fr/corteza-server/auth/security.yaml | 23 + .../src/fr/corteza-server/auth/sessions.yaml | 19 + .../src/fr/corteza-server/auth/signup.yaml | 24 + .../automation/access-control.yaml | 0 .../fr/corteza-server/automation/session.yaml | 0 .../fr/corteza-server/automation/trigger.yaml | 0 .../corteza-server/automation/workflow.yaml | 0 .../compose/access-control.yaml | 0 .../fr/corteza-server/compose/attachment.yaml | 0 .../src/fr/corteza-server/compose/chart.yaml | 0 .../src/fr/corteza-server/compose/field.yaml | 14 + .../src/fr/corteza-server/compose/module.yaml | 0 .../fr}/corteza-server/compose/namespace.yaml | 2 +- .../corteza-server/compose/notifications.yaml | 0 .../src/fr/corteza-server/compose/page.yaml | 0 .../src/fr/corteza-server/compose/record.yaml | 0 .../federation/access-control.yaml | 0 .../federation/exposed-module.yaml | 0 .../federation/module-mapping.yaml | 0 .../corteza-server/federation/node-sync.yaml | 0 .../fr/corteza-server/federation/node.yaml | 0 .../federation/shared-module.yaml | 0 .../src/fr/corteza-server/internal/auth.yaml | 0 .../corteza-server/system/access-control.yaml | 0 .../corteza-server/system/apigw-filter.yaml | 0 .../fr/corteza-server/system/apigw-route.yaml | 0 .../fr/corteza-server/system/application.yaml | 0 .../fr/corteza-server/system/attachment.yaml | 0 .../fr/corteza-server/system/auth-client.yaml | 0 .../src/fr/corteza-server/system/auth.yaml | 0 .../src/fr/corteza-server/system/queue.yaml | 0 .../fr/corteza-server/system/reminder.yaml | 0 .../src/fr/corteza-server/system/report.yaml | 0 .../src/fr/corteza-server/system/role.yaml | 0 .../src/fr/corteza-server/system/sink.yaml | 0 .../fr/corteza-server/system/statistics.yaml | 0 .../fr/corteza-server/system/template.yaml | 0 .../src/fr/corteza-server/system/user.yaml | 0 .../src/fr/corteza-webapp-admin/admin.yaml | 0 .../automation.permissions.yaml | 0 .../automation.scripts.yaml | 0 .../automation.sessions.yaml | 0 .../automation.workflows.yaml | 0 .../compose.automation.yaml | 0 .../compose.permissions.yaml | 0 .../compose.settings.yaml | 0 .../fr/corteza-webapp-admin/dashboard.yaml | 0 .../federation.nodes.yaml | 0 .../federation.permissions.yaml | 0 .../fr/corteza-webapp-admin/navigation.yaml | 0 .../fr/corteza-webapp-admin/notification.yaml | 229 ++ .../system.actionlog.yaml | 0 .../fr/corteza-webapp-admin/system.apigw.yaml | 0 .../system.applications.yaml | 0 .../system.authclients.yaml | 4 +- .../system.permissions.yaml | 0 .../corteza-webapp-admin/system.queues.yaml | 0 .../fr/corteza-webapp-admin/system.roles.yaml | 0 .../corteza-webapp-admin/system.settings.yaml | 13 +- .../system.templates.yaml | 0 .../corteza-webapp-admin/system.users.yaml | 11 + .../fr/corteza-webapp-admin/ui.settings.yaml | 0 .../src/fr/corteza-webapp-admin/ui.yaml | 0 .../src/fr/corteza-webapp-compose/block.yaml | 7 +- .../src/fr/corteza-webapp-compose/chart.yaml | 0 .../src/fr}/corteza-webapp-compose/field.yaml | 6 + .../fr/corteza-webapp-compose/general.yaml | 0 .../src/fr/corteza-webapp-compose/module.yaml | 0 .../fr/corteza-webapp-compose/namespace.yaml | 0 .../fr/corteza-webapp-compose/navigation.yaml | 0 .../corteza-webapp-compose/notification.yaml | 0 .../fr/corteza-webapp-compose/onboarding.yaml | 0 .../src/fr/corteza-webapp-compose/page.yaml | 0 .../fr/corteza-webapp-compose/permission.yaml | 0 .../fr/corteza-webapp-compose/preview.yaml | 0 .../fr/corteza-webapp-compose/sidebar.yaml | 0 .../src/fr/corteza-webapp-one/app.yaml | 0 .../src/fr/corteza-webapp-one/layout.yaml | 0 .../src/fr/corteza-webapp-one/navigation.yaml | 0 .../fr/corteza-webapp-reporter/create.yaml | 0 .../src/fr/corteza-webapp-reporter/edit.yaml | 0 .../fr/corteza-webapp-reporter/general.yaml | 0 .../src/fr/corteza-webapp-reporter/list.yaml | 0 .../corteza-webapp-reporter/navigation.yaml | 0 .../corteza-webapp-reporter/notification.yaml | 0 .../corteza-webapp-reporter/permission.yaml | 0 .../corteza-webapp-workflow/navigation.yaml | 0 .../corteza-webapp-workflow/permission.yaml | 0 .../corteza-locale/src/ro/config.yaml | 1 + .../auth/authorized-clients.yaml | 0 .../corteza-server/auth/change-password.yaml | 0 .../corteza-server/auth/create-password.yaml | 0 .../corteza-server/auth/error-internal.yaml | 0 .../ro/corteza-server/auth/inc_footer.yaml | 1 + .../ro/corteza-server/auth/inc_header.yaml | 0 .../src/ro/corteza-server/auth/inc_nav.yaml | 0 .../src/ro/corteza-server/auth/login.yaml | 2 +- .../src/ro/corteza-server/auth/logout.yaml | 0 .../corteza-server/auth/mfa-totp-disable.yaml | 0 .../src/ro}/corteza-server/auth/mfa-totp.yaml | 9 +- .../src/ro}/corteza-server/auth/mfa.yaml | 0 .../auth/oauth2-authorize-client.yaml | 0 .../auth/password-reset-requested.yaml | 0 .../auth/pending-email-confirmation.yaml | 0 .../src/ro}/corteza-server/auth/profile.yaml | 1 + .../auth/request-password-reset.yaml | 0 .../corteza-server/auth/reset-password.yaml | 0 .../src/ro}/corteza-server/auth/security.yaml | 0 .../src/ro}/corteza-server/auth/sessions.yaml | 6 +- .../src/ro}/corteza-server/auth/signup.yaml | 0 .../automation/access-control.yaml | 0 .../ro/corteza-server/automation/session.yaml | 0 .../ro/corteza-server/automation/trigger.yaml | 0 .../corteza-server/automation/workflow.yaml | 0 .../compose/access-control.yaml | 0 .../ro/corteza-server/compose/attachment.yaml | 0 .../src/ro/corteza-server/compose/chart.yaml | 0 .../src/ro/corteza-server/compose/field.yaml | 14 + .../src/ro/corteza-server/compose/module.yaml | 0 .../ro}/corteza-server/compose/namespace.yaml | 2 +- .../corteza-server/compose/notifications.yaml | 0 .../src/ro/corteza-server/compose/page.yaml | 0 .../src/ro/corteza-server/compose/record.yaml | 0 .../federation/access-control.yaml | 0 .../federation/exposed-module.yaml | 0 .../federation/module-mapping.yaml | 0 .../corteza-server/federation/node-sync.yaml | 0 .../ro/corteza-server/federation/node.yaml | 0 .../federation/shared-module.yaml | 0 .../src/ro/corteza-server/internal/auth.yaml | 0 .../corteza-server/system/access-control.yaml | 0 .../corteza-server/system/apigw-filter.yaml | 0 .../ro/corteza-server/system/apigw-route.yaml | 0 .../ro/corteza-server/system/application.yaml | 0 .../ro/corteza-server/system/attachment.yaml | 0 .../ro/corteza-server/system/auth-client.yaml | 0 .../src/ro/corteza-server/system/auth.yaml | 0 .../src/ro/corteza-server/system/queue.yaml | 0 .../ro/corteza-server/system/reminder.yaml | 0 .../src/ro/corteza-server/system/report.yaml | 0 .../src/ro/corteza-server/system/role.yaml | 0 .../src/ro/corteza-server/system/sink.yaml | 0 .../ro/corteza-server/system/statistics.yaml | 0 .../ro/corteza-server/system/template.yaml | 0 .../src/ro/corteza-server/system/user.yaml | 0 .../src/ro/corteza-webapp-admin/admin.yaml | 0 .../automation.permissions.yaml | 0 .../automation.scripts.yaml | 0 .../automation.sessions.yaml | 0 .../automation.workflows.yaml | 0 .../compose.automation.yaml | 0 .../compose.permissions.yaml | 0 .../compose.settings.yaml | 0 .../ro/corteza-webapp-admin/dashboard.yaml | 0 .../federation.nodes.yaml | 0 .../federation.permissions.yaml | 0 .../ro/corteza-webapp-admin/navigation.yaml | 0 .../ro/corteza-webapp-admin/notification.yaml | 229 ++ .../system.actionlog.yaml | 0 .../ro/corteza-webapp-admin/system.apigw.yaml | 0 .../system.applications.yaml | 0 .../system.authclients.yaml | 4 +- .../system.permissions.yaml | 0 .../corteza-webapp-admin/system.queues.yaml | 0 .../ro/corteza-webapp-admin/system.roles.yaml | 0 .../corteza-webapp-admin/system.settings.yaml | 13 +- .../system.templates.yaml | 0 .../corteza-webapp-admin/system.users.yaml | 11 + .../ro/corteza-webapp-admin/ui.settings.yaml | 0 .../src/ro/corteza-webapp-admin/ui.yaml | 0 .../src/ro}/corteza-webapp-compose/block.yaml | 7 +- .../src/ro/corteza-webapp-compose/chart.yaml | 0 .../src/ro}/corteza-webapp-compose/field.yaml | 6 + .../ro/corteza-webapp-compose/general.yaml | 0 .../src/ro/corteza-webapp-compose/module.yaml | 0 .../ro/corteza-webapp-compose/namespace.yaml | 0 .../ro/corteza-webapp-compose/navigation.yaml | 0 .../corteza-webapp-compose/notification.yaml | 0 .../ro/corteza-webapp-compose/onboarding.yaml | 0 .../src/ro/corteza-webapp-compose/page.yaml | 0 .../ro/corteza-webapp-compose/permission.yaml | 0 .../ro/corteza-webapp-compose/preview.yaml | 0 .../ro/corteza-webapp-compose/sidebar.yaml | 0 .../src/ro/corteza-webapp-one/app.yaml | 0 .../src/ro/corteza-webapp-one/layout.yaml | 0 .../src/ro/corteza-webapp-one/navigation.yaml | 0 .../ro/corteza-webapp-reporter/create.yaml | 0 .../src/ro/corteza-webapp-reporter/edit.yaml | 0 .../ro/corteza-webapp-reporter/general.yaml | 0 .../src/ro/corteza-webapp-reporter/list.yaml | 0 .../corteza-webapp-reporter/navigation.yaml | 0 .../corteza-webapp-reporter/notification.yaml | 0 .../corteza-webapp-reporter/permission.yaml | 0 .../corteza-webapp-workflow/navigation.yaml | 0 .../corteza-webapp-workflow/permission.yaml | 0 .../corteza-locale/src/schema/config.json | 0 .../corteza-locale/src/sl/config.yaml | 1 + .../auth/authorized-clients.yaml | 0 .../corteza-server/auth/change-password.yaml | 0 .../corteza-server/auth/create-password.yaml | 0 .../corteza-server/auth/error-internal.yaml | 0 .../sl/corteza-server/auth/inc_footer.yaml | 1 + .../sl/corteza-server/auth/inc_header.yaml | 0 .../src/sl/corteza-server/auth/inc_nav.yaml | 0 .../src/sl/corteza-server/auth/login.yaml | 2 +- .../src/sl/corteza-server/auth/logout.yaml | 0 .../corteza-server/auth/mfa-totp-disable.yaml | 0 .../src/sl}/corteza-server/auth/mfa-totp.yaml | 9 +- .../src/sl/corteza-server/auth/mfa.yaml | 0 .../auth/oauth2-authorize-client.yaml | 0 .../auth/password-reset-requested.yaml | 0 .../auth/pending-email-confirmation.yaml | 0 .../src/sl/corteza-server/auth/profile.yaml | 2 + .../auth/request-password-reset.yaml | 0 .../corteza-server/auth/reset-password.yaml | 0 .../src/sl/corteza-server/auth/security.yaml | 0 .../src/sl/corteza-server/auth/sessions.yaml | 4 +- .../src/sl/corteza-server/auth/signup.yaml | 0 .../automation/access-control.yaml | 0 .../sl/corteza-server/automation/session.yaml | 0 .../sl/corteza-server/automation/trigger.yaml | 0 .../corteza-server/automation/workflow.yaml | 0 .../compose/access-control.yaml | 0 .../sl/corteza-server/compose/attachment.yaml | 0 .../src/sl/corteza-server/compose/chart.yaml | 0 .../src/sl/corteza-server/compose/field.yaml | 14 + .../src/sl/corteza-server/compose/module.yaml | 0 .../sl/corteza-server/compose/namespace.yaml | 2 +- .../corteza-server/compose/notifications.yaml | 0 .../src/sl/corteza-server/compose/page.yaml | 0 .../src/sl/corteza-server/compose/record.yaml | 0 .../federation/access-control.yaml | 0 .../federation/exposed-module.yaml | 0 .../federation/module-mapping.yaml | 0 .../corteza-server/federation/node-sync.yaml | 0 .../sl/corteza-server/federation/node.yaml | 0 .../federation/shared-module.yaml | 0 .../src/sl/corteza-server/internal/auth.yaml | 0 .../corteza-server/system/access-control.yaml | 0 .../corteza-server/system/apigw-filter.yaml | 0 .../sl/corteza-server/system/apigw-route.yaml | 0 .../sl/corteza-server/system/application.yaml | 0 .../sl/corteza-server/system/attachment.yaml | 0 .../sl/corteza-server/system/auth-client.yaml | 0 .../src/sl/corteza-server/system/auth.yaml | 0 .../src/sl/corteza-server/system/queue.yaml | 0 .../sl/corteza-server/system/reminder.yaml | 0 .../src/sl/corteza-server/system/report.yaml | 0 .../src/sl/corteza-server/system/role.yaml | 0 .../src/sl/corteza-server/system/sink.yaml | 0 .../sl/corteza-server/system/statistics.yaml | 0 .../sl/corteza-server/system/template.yaml | 0 .../src/sl/corteza-server/system/user.yaml | 0 .../src/sl/corteza-webapp-admin/admin.yaml | 0 .../automation.permissions.yaml | 0 .../automation.scripts.yaml | 0 .../automation.sessions.yaml | 0 .../automation.workflows.yaml | 0 .../compose.automation.yaml | 0 .../compose.permissions.yaml | 0 .../compose.settings.yaml | 0 .../sl/corteza-webapp-admin/dashboard.yaml | 0 .../federation.nodes.yaml | 0 .../federation.permissions.yaml | 0 .../sl/corteza-webapp-admin/navigation.yaml | 0 .../sl/corteza-webapp-admin/notification.yaml | 229 ++ .../system.actionlog.yaml | 0 .../sl/corteza-webapp-admin/system.apigw.yaml | 0 .../system.applications.yaml | 0 .../system.authclients.yaml | 4 +- .../system.permissions.yaml | 0 .../corteza-webapp-admin/system.queues.yaml | 0 .../sl/corteza-webapp-admin/system.roles.yaml | 0 .../corteza-webapp-admin/system.settings.yaml | 13 +- .../system.templates.yaml | 0 .../corteza-webapp-admin/system.users.yaml | 11 + .../sl/corteza-webapp-admin/ui.settings.yaml | 0 .../src/sl/corteza-webapp-admin/ui.yaml | 0 .../src/sl}/corteza-webapp-compose/block.yaml | 7 +- .../src/sl/corteza-webapp-compose/chart.yaml | 0 .../src/sl}/corteza-webapp-compose/field.yaml | 6 + .../sl/corteza-webapp-compose/general.yaml | 0 .../src/sl/corteza-webapp-compose/module.yaml | 0 .../sl/corteza-webapp-compose/namespace.yaml | 0 .../sl/corteza-webapp-compose/navigation.yaml | 0 .../corteza-webapp-compose/notification.yaml | 0 .../sl/corteza-webapp-compose/onboarding.yaml | 0 .../src/sl/corteza-webapp-compose/page.yaml | 0 .../sl/corteza-webapp-compose/permission.yaml | 0 .../sl/corteza-webapp-compose/preview.yaml | 0 .../sl/corteza-webapp-compose/sidebar.yaml | 0 .../src/sl/corteza-webapp-one/app.yaml | 0 .../src/sl/corteza-webapp-one/layout.yaml | 0 .../src/sl/corteza-webapp-one/navigation.yaml | 0 .../sl/corteza-webapp-reporter/create.yaml | 0 .../src/sl/corteza-webapp-reporter/edit.yaml | 0 .../sl/corteza-webapp-reporter/general.yaml | 0 .../src/sl/corteza-webapp-reporter/list.yaml | 0 .../corteza-webapp-reporter/navigation.yaml | 0 .../corteza-webapp-reporter/notification.yaml | 0 .../corteza-webapp-reporter/permission.yaml | 0 .../corteza-webapp-workflow/navigation.yaml | 0 .../corteza-webapp-workflow/permission.yaml | 0 .../corteza-locale/src/uk/config.yaml | 1 + .../auth/authorized-clients.yaml | 0 .../corteza-server/auth/change-password.yaml | 0 .../corteza-server/auth/create-password.yaml | 0 .../corteza-server/auth/error-internal.yaml | 0 .../uk/corteza-server/auth/inc_footer.yaml | 1 + .../uk}/corteza-server/auth/inc_header.yaml | 0 .../src/uk}/corteza-server/auth/inc_nav.yaml | 0 .../src/uk/corteza-server/auth/login.yaml | 2 +- .../src/uk}/corteza-server/auth/logout.yaml | 0 .../corteza-server/auth/mfa-totp-disable.yaml | 0 .../src/uk/corteza-server/auth/mfa-totp.yaml | 8 +- .../src/uk}/corteza-server/auth/mfa.yaml | 0 .../auth/oauth2-authorize-client.yaml | 0 .../auth/password-reset-requested.yaml | 0 .../auth/pending-email-confirmation.yaml | 0 .../src/uk/corteza-server/auth/profile.yaml | 2 + .../auth/request-password-reset.yaml | 0 .../corteza-server/auth/reset-password.yaml | 0 .../src/uk}/corteza-server/auth/security.yaml | 0 .../src/uk}/corteza-server/auth/sessions.yaml | 6 +- .../src/uk}/corteza-server/auth/signup.yaml | 0 .../automation/access-control.yaml | 0 .../uk/corteza-server/automation/session.yaml | 0 .../uk/corteza-server/automation/trigger.yaml | 0 .../corteza-server/automation/workflow.yaml | 0 .../compose/access-control.yaml | 0 .../uk/corteza-server/compose/attachment.yaml | 0 .../src/uk/corteza-server/compose/chart.yaml | 0 .../src/uk/corteza-server/compose/field.yaml | 14 + .../src/uk/corteza-server/compose/module.yaml | 0 .../uk}/corteza-server/compose/namespace.yaml | 2 +- .../corteza-server/compose/notifications.yaml | 0 .../src/uk/corteza-server/compose/page.yaml | 0 .../src/uk/corteza-server/compose/record.yaml | 0 .../federation/access-control.yaml | 0 .../federation/exposed-module.yaml | 0 .../federation/module-mapping.yaml | 0 .../corteza-server/federation/node-sync.yaml | 0 .../uk/corteza-server/federation/node.yaml | 0 .../federation/shared-module.yaml | 0 .../src/uk/corteza-server/internal/auth.yaml | 0 .../corteza-server/system/access-control.yaml | 0 .../corteza-server/system/apigw-filter.yaml | 0 .../uk/corteza-server/system/apigw-route.yaml | 0 .../uk/corteza-server/system/application.yaml | 0 .../uk/corteza-server/system/attachment.yaml | 0 .../uk/corteza-server/system/auth-client.yaml | 0 .../src/uk/corteza-server/system/auth.yaml | 0 .../src/uk/corteza-server/system/queue.yaml | 0 .../uk/corteza-server/system/reminder.yaml | 0 .../src/uk/corteza-server/system/report.yaml | 0 .../src/uk/corteza-server/system/role.yaml | 0 .../src/uk/corteza-server/system/sink.yaml | 0 .../uk/corteza-server/system/statistics.yaml | 0 .../uk/corteza-server/system/template.yaml | 0 .../src/uk/corteza-server/system/user.yaml | 0 .../src/uk/corteza-webapp-admin/admin.yaml | 0 .../automation.permissions.yaml | 0 .../automation.scripts.yaml | 0 .../automation.sessions.yaml | 0 .../automation.workflows.yaml | 0 .../compose.automation.yaml | 0 .../compose.permissions.yaml | 0 .../compose.settings.yaml | 0 .../uk/corteza-webapp-admin/dashboard.yaml | 0 .../federation.nodes.yaml | 0 .../federation.permissions.yaml | 0 .../uk/corteza-webapp-admin/navigation.yaml | 0 .../uk/corteza-webapp-admin/notification.yaml | 229 ++ .../system.actionlog.yaml | 0 .../uk/corteza-webapp-admin/system.apigw.yaml | 0 .../system.applications.yaml | 0 .../system.authclients.yaml | 4 +- .../system.permissions.yaml | 0 .../corteza-webapp-admin/system.queues.yaml | 0 .../uk/corteza-webapp-admin/system.roles.yaml | 0 .../corteza-webapp-admin/system.settings.yaml | 112 + .../system.templates.yaml | 0 .../corteza-webapp-admin/system.users.yaml | 11 + .../uk/corteza-webapp-admin/ui.settings.yaml | 0 .../src/uk/corteza-webapp-admin/ui.yaml | 0 .../src/uk}/corteza-webapp-compose/block.yaml | 7 +- .../src/uk/corteza-webapp-compose/chart.yaml | 0 .../src/uk}/corteza-webapp-compose/field.yaml | 6 + .../uk/corteza-webapp-compose/general.yaml | 0 .../src/uk/corteza-webapp-compose/module.yaml | 0 .../uk/corteza-webapp-compose/namespace.yaml | 0 .../uk/corteza-webapp-compose/navigation.yaml | 0 .../corteza-webapp-compose/notification.yaml | 2 +- .../uk/corteza-webapp-compose/onboarding.yaml | 0 .../src/uk/corteza-webapp-compose/page.yaml | 0 .../uk/corteza-webapp-compose/permission.yaml | 0 .../uk/corteza-webapp-compose/preview.yaml | 0 .../uk/corteza-webapp-compose/sidebar.yaml | 0 .../src/uk/corteza-webapp-one/app.yaml | 0 .../src/uk/corteza-webapp-one/layout.yaml | 0 .../src/uk/corteza-webapp-one/navigation.yaml | 0 .../uk/corteza-webapp-reporter/create.yaml | 0 .../src/uk/corteza-webapp-reporter/edit.yaml | 0 .../uk/corteza-webapp-reporter/general.yaml | 0 .../src/uk/corteza-webapp-reporter/list.yaml | 0 .../corteza-webapp-reporter/navigation.yaml | 0 .../corteza-webapp-reporter/notification.yaml | 0 .../corteza-webapp-reporter/permission.yaml | 0 .../corteza-webapp-workflow/navigation.yaml | 0 .../corteza-webapp-workflow/permission.yaml | 0 .../corteza/server}/pkg/api/debug.go | 0 .../corteza/server}/pkg/api/ipaddr.go | 0 .../corteza/server}/pkg/api/response.go | 2 +- .../corteza/server}/pkg/cli/commands.go | 2 +- .../corteza/server}/pkg/cli/context.go | 0 .../corteza/server}/pkg/cli/env.go | 2 +- .../corteza/server}/pkg/cli/helpers.go | 0 .../corteza/server}/pkg/errors/error.go | 0 .../corteza/server}/pkg/errors/http.go | 20 +- .../corteza/server}/pkg/errors/json.go | 2 +- .../corteza/server}/pkg/errors/kind.go | 13 +- .../corteza/server}/pkg/errors/meta.go | 0 .../corteza/server}/pkg/errors/modifiers.go | 0 .../corteza/server}/pkg/errors/stack.go | 0 .../corteza/server/pkg/expr/expr.go | 158 ++ .../server/pkg/expr/expr_type_comparators.go | 56 + .../corteza/server/pkg/expr/expr_types.gen.go | 1230 +++++++++++ .../corteza/server/pkg/expr/expr_types.go | 865 ++++++++ .../corteza/server/pkg/expr/expr_types.yaml | 95 + .../corteza/server/pkg/expr/func_arr.go | 302 +++ .../corteza/server/pkg/expr/func_generic.go | 128 ++ .../corteza/server/pkg/expr/func_json.go | 21 + .../corteza/server/pkg/expr/func_num.go | 150 ++ .../corteza/server/pkg/expr/func_str.go | 255 +++ .../corteza/server/pkg/expr/func_time.go | 186 ++ .../corteza/server/pkg/expr/parser.go | 117 + .../corteza/server/pkg/expr/values.go | 75 + .../corteza/server/pkg/expr/vars.go | 610 ++++++ .../corteza/server/pkg/filter/filter.go | 148 ++ .../corteza/server/pkg/filter/pagination.go | 572 +++++ .../corteza/server/pkg/filter/sorting.go | 190 ++ .../corteza/server/pkg/filter/state.go | 27 + .../corteza/server/pkg/gvalfnc/generic.go | 20 + .../corteza/server/pkg/gvalfnc/string.go | 17 + .../corteza/server/pkg/gvalfnc/time.go | 101 + .../corteza/server/pkg/handle/handle.go | 40 + .../corteza/server/pkg/http/client.go | 164 ++ .../corteza/server/pkg/http/default.go | 34 + .../corteza/server/pkg/http/file_server.go | 152 ++ .../corteza/server/pkg/http/request.go | 120 ++ .../pkg/http/test_data/file_server/index.html | 1 + .../http/test_data/file_server/sub/index.html | 1 + .../http/test_data/file_server/sub/test.html | 1 + .../pkg/http/test_data/file_server/test.html | 1 + .../corteza/server}/pkg/locale/context.go | 0 .../corteza/server}/pkg/locale/http.go | 0 .../corteza/server/pkg/locale/input.go | 9 + .../corteza/server}/pkg/locale/load.go | 9 +- .../corteza/server}/pkg/locale/locale.go | 0 .../corteza/server}/pkg/locale/resource.go | 0 .../corteza/server}/pkg/locale/service.go | 47 +- .../corteza/server}/pkg/logger/context.go | 2 +- .../corteza/server}/pkg/logger/handlers.go | 0 .../corteza/server/pkg/logger/logger.go | 173 ++ .../corteza/server}/pkg/logger/masked.go | 0 .../corteza/server/pkg/logger/rrbuf.go | 154 ++ .../corteza/server}/pkg/options/DB.go | 2 +- .../corteza/server}/pkg/options/HTTPClient.go | 2 +- .../corteza/server}/pkg/options/HTTPServer.go | 12 +- .../corteza/server}/pkg/options/auth.go | 0 .../corteza/server}/pkg/options/corredor.go | 2 +- .../server}/pkg/options/environment.go | 0 .../corteza/server}/pkg/options/helpers.go | 35 +- .../corteza/server/pkg/options/options.gen.go | 1091 ++++++++++ .../corteza/server}/pkg/options/options.go | 14 +- .../corteza/server}/pkg/options/waitFor.go | 0 .../corteza/server}/pkg/payload/util.go | 41 + .../corteza/server/pkg/ql/ast_nodes.go | 377 ++++ .../corteza/server/pkg/ql/lexer.go | 112 + .../corteza/server/pkg/ql/parser.go | 309 +++ .../corteza/server/pkg/ql/parser_nodes.go | 213 ++ .../corteza/server/pkg/ql/token_codes.go | 29 + .../corteza/server/pkg/ql/token_consumers.go | 159 ++ .../corteza/server/pkg/ql/util.go | 56 + .../corteza/server}/pkg/rand/rand.go | 0 .../corteza/server/pkg/slice/ints.go | 42 + .../corteza/server/pkg/slice/keys.go | 26 + .../corteza/server/pkg/slice/strings.go | 89 + .../corteza/server/pkg/sql/json.go | 26 + .../corteza/server}/pkg/version/version.go | 2 +- .../corteza/server/pkg/xss/rich_text.go | 46 + .../vendor/github.com/davecgh/go-spew/LICENSE | 0 .../github.com/davecgh/go-spew/spew/bypass.go | 0 .../davecgh/go-spew/spew/bypasssafe.go | 0 .../github.com/davecgh/go-spew/spew/common.go | 0 .../github.com/davecgh/go-spew/spew/config.go | 0 .../github.com/davecgh/go-spew/spew/doc.go | 0 .../github.com/davecgh/go-spew/spew/dump.go | 0 .../github.com/davecgh/go-spew/spew/format.go | 0 .../github.com/davecgh/go-spew/spew/spew.go | 0 .../decred/dcrd/dcrec/secp256k1/v4/LICENSE | 0 .../decred/dcrd/dcrec/secp256k1/v4/README.md | 72 + .../secp256k1/v4/compressedbytepoints.go | 0 .../decred/dcrd/dcrec/secp256k1/v4/curve.go | 0 .../decred/dcrd/dcrec/secp256k1/v4/doc.go | 0 .../decred/dcrd/dcrec/secp256k1/v4/ecdh.go | 0 .../dcrec/secp256k1/v4/ellipticadaptor.go | 0 .../decred/dcrd/dcrec/secp256k1/v4/error.go | 0 .../decred/dcrd/dcrec/secp256k1/v4/field.go | 0 .../dcrd/dcrec/secp256k1/v4/genstatics.go | 0 .../dcrec/secp256k1/v4/loadprecomputed.go | 0 .../dcrd/dcrec/secp256k1/v4/modnscalar.go | 0 .../decred/dcrd/dcrec/secp256k1/v4/nonce.go | 0 .../decred/dcrd/dcrec/secp256k1/v4/privkey.go | 0 .../decred/dcrd/dcrec/secp256k1/v4/pubkey.go | 0 .../elastic/go-elasticsearch/v7/.codecov.yml | 0 .../elastic/go-elasticsearch/v7/.dockerignore | 0 .../elastic/go-elasticsearch/v7/.gitignore | 0 .../elastic/go-elasticsearch/v7/LICENSE | 0 .../elastic/go-elasticsearch/v7/Makefile | 0 .../elastic/go-elasticsearch/v7/README.md | 377 ++++ .../elastic/go-elasticsearch/v7/doc.go | 0 .../go-elasticsearch/v7/elasticsearch.go | 0 .../go-elasticsearch/v7/esapi/api._.go | 0 .../go-elasticsearch/v7/esapi/api.bulk.go | 0 .../v7/esapi/api.cat.aliases.go | 0 .../v7/esapi/api.cat.allocation.go | 0 .../v7/esapi/api.cat.count.go | 0 .../v7/esapi/api.cat.fielddata.go | 0 .../v7/esapi/api.cat.health.go | 0 .../go-elasticsearch/v7/esapi/api.cat.help.go | 0 .../v7/esapi/api.cat.indices.go | 0 .../v7/esapi/api.cat.master.go | 0 .../v7/esapi/api.cat.nodeattrs.go | 0 .../v7/esapi/api.cat.nodes.go | 0 .../v7/esapi/api.cat.pending_tasks.go | 0 .../v7/esapi/api.cat.plugins.go | 0 .../v7/esapi/api.cat.recovery.go | 0 .../v7/esapi/api.cat.repositories.go | 0 .../v7/esapi/api.cat.segments.go | 0 .../v7/esapi/api.cat.shards.go | 0 .../v7/esapi/api.cat.snapshots.go | 0 .../v7/esapi/api.cat.tasks.go | 0 .../v7/esapi/api.cat.templates.go | 0 .../v7/esapi/api.cat.thread_pool.go | 0 .../v7/esapi/api.clear_scroll.go | 0 .../esapi/api.cluster.allocation_explain.go | 0 .../api.cluster.delete_component_template.go | 0 ...cluster.delete_voting_config_exclusions.go | 0 .../api.cluster.exists_component_template.go | 0 .../api.cluster.get_component_template.go | 0 .../v7/esapi/api.cluster.get_settings.go | 0 .../v7/esapi/api.cluster.health.go | 0 .../v7/esapi/api.cluster.pending_tasks.go | 0 ...i.cluster.post_voting_config_exclusions.go | 0 .../api.cluster.put_component_template.go | 0 .../v7/esapi/api.cluster.put_settings.go | 0 .../v7/esapi/api.cluster.remote_info.go | 0 .../v7/esapi/api.cluster.reroute.go | 0 .../v7/esapi/api.cluster.state.go | 0 .../v7/esapi/api.cluster.stats.go | 0 .../go-elasticsearch/v7/esapi/api.count.go | 0 .../go-elasticsearch/v7/esapi/api.create.go | 0 ....dangling_indices.delete_dangling_index.go | 0 ....dangling_indices.import_dangling_index.go | 0 ....dangling_indices.list_dangling_indices.go | 0 .../go-elasticsearch/v7/esapi/api.delete.go | 0 .../v7/esapi/api.delete_by_query.go | 0 .../esapi/api.delete_by_query_rethrottle.go | 0 .../v7/esapi/api.delete_script.go | 0 .../go-elasticsearch/v7/esapi/api.exists.go | 0 .../v7/esapi/api.exists_source.go | 0 .../go-elasticsearch/v7/esapi/api.explain.go | 0 .../v7/esapi/api.features.get_features.go | 0 .../v7/esapi/api.field_caps.go | 0 .../go-elasticsearch/v7/esapi/api.get.go | 0 .../v7/esapi/api.get_script.go | 0 .../v7/esapi/api.get_script_context.go | 0 .../v7/esapi/api.get_script_languages.go | 0 .../v7/esapi/api.get_source.go | 0 .../go-elasticsearch/v7/esapi/api.index.go | 0 .../v7/esapi/api.indices.add_block.go | 0 .../v7/esapi/api.indices.analyze.go | 0 .../v7/esapi/api.indices.clear_cache.go | 0 .../v7/esapi/api.indices.clone.go | 0 .../v7/esapi/api.indices.close.go | 0 .../v7/esapi/api.indices.create.go | 0 .../v7/esapi/api.indices.delete.go | 0 .../v7/esapi/api.indices.delete_alias.go | 0 .../api.indices.delete_index_template.go | 0 .../v7/esapi/api.indices.delete_template.go | 0 .../v7/esapi/api.indices.exists.go | 0 .../v7/esapi/api.indices.exists_alias.go | 0 .../api.indices.exists_index_template.go | 0 .../v7/esapi/api.indices.exists_template.go | 0 .../v7/esapi/api.indices.exists_type.go | 0 .../v7/esapi/api.indices.flush.go | 0 .../v7/esapi/api.indices.flush_synced.go | 0 .../v7/esapi/api.indices.forcemerge.go | 0 .../v7/esapi/api.indices.get.go | 0 .../v7/esapi/api.indices.get_alias.go | 0 .../v7/esapi/api.indices.get_field_mapping.go | 0 .../esapi/api.indices.get_index_template.go | 0 .../v7/esapi/api.indices.get_mapping.go | 0 .../v7/esapi/api.indices.get_settings.go | 0 .../v7/esapi/api.indices.get_template.go | 0 .../v7/esapi/api.indices.get_upgrade.go | 0 .../v7/esapi/api.indices.open.go | 0 .../v7/esapi/api.indices.put_alias.go | 0 .../esapi/api.indices.put_index_template.go | 0 .../v7/esapi/api.indices.put_mapping.go | 0 .../v7/esapi/api.indices.put_settings.go | 0 .../v7/esapi/api.indices.put_template.go | 0 .../v7/esapi/api.indices.recovery.go | 0 .../v7/esapi/api.indices.refresh.go | 0 .../v7/esapi/api.indices.resolve_index.go | 0 .../v7/esapi/api.indices.rollover.go | 0 .../v7/esapi/api.indices.segments.go | 0 .../v7/esapi/api.indices.shard_stores.go | 0 .../v7/esapi/api.indices.shrink.go | 0 .../api.indices.simulate_index_template.go | 0 .../v7/esapi/api.indices.simulate_template.go | 0 .../v7/esapi/api.indices.split.go | 0 .../v7/esapi/api.indices.stats.go | 0 .../v7/esapi/api.indices.update_aliases.go | 0 .../v7/esapi/api.indices.upgrade.go | 0 .../v7/esapi/api.indices.validate_query.go | 0 .../go-elasticsearch/v7/esapi/api.info.go | 0 .../v7/esapi/api.ingest.delete_pipeline.go | 0 .../v7/esapi/api.ingest.get_pipeline.go | 0 .../v7/esapi/api.ingest.processor_grok.go | 0 .../v7/esapi/api.ingest.put_pipeline.go | 0 .../v7/esapi/api.ingest.simulate.go | 0 .../go-elasticsearch/v7/esapi/api.mget.go | 0 .../go-elasticsearch/v7/esapi/api.msearch.go | 0 .../v7/esapi/api.msearch_template.go | 0 .../v7/esapi/api.mtermvectors.go | 0 .../v7/esapi/api.nodes.hot_threads.go | 0 .../v7/esapi/api.nodes.info.go | 0 .../esapi/api.nodes.reload_secure_settings.go | 0 .../v7/esapi/api.nodes.stats.go | 0 .../v7/esapi/api.nodes.usage.go | 0 .../go-elasticsearch/v7/esapi/api.ping.go | 0 .../v7/esapi/api.put_script.go | 0 .../v7/esapi/api.rank_eval.go | 0 .../go-elasticsearch/v7/esapi/api.reindex.go | 0 .../v7/esapi/api.reindex_rethrottle.go | 0 .../v7/esapi/api.render_search_template.go | 0 .../v7/esapi/api.scripts_painless_execute.go | 0 .../go-elasticsearch/v7/esapi/api.scroll.go | 0 .../go-elasticsearch/v7/esapi/api.search.go | 0 .../v7/esapi/api.search_shards.go | 0 .../v7/esapi/api.search_template.go | 0 .../esapi/api.snapshot.cleanup_repository.go | 0 .../v7/esapi/api.snapshot.clone.go | 0 .../v7/esapi/api.snapshot.create.go | 0 .../esapi/api.snapshot.create_repository.go | 0 .../v7/esapi/api.snapshot.delete.go | 0 .../esapi/api.snapshot.delete_repository.go | 0 .../v7/esapi/api.snapshot.get.go | 0 .../v7/esapi/api.snapshot.get_features.go | 0 .../v7/esapi/api.snapshot.get_repository.go | 0 .../v7/esapi/api.snapshot.restore.go | 0 .../v7/esapi/api.snapshot.status.go | 0 .../esapi/api.snapshot.verify_repository.go | 0 .../v7/esapi/api.tasks.cancel.go | 0 .../v7/esapi/api.tasks.get.go | 0 .../v7/esapi/api.tasks.list.go | 0 .../v7/esapi/api.termvectors.go | 0 .../go-elasticsearch/v7/esapi/api.update.go | 0 .../v7/esapi/api.update_by_query.go | 0 .../esapi/api.update_by_query_rethrottle.go | 0 .../v7/esapi/api.xpack.async_search.delete.go | 0 .../v7/esapi/api.xpack.async_search.get.go | 0 .../v7/esapi/api.xpack.async_search.status.go | 0 .../v7/esapi/api.xpack.async_search.submit.go | 0 ...k.autoscaling.delete_autoscaling_policy.go | 0 ...ck.autoscaling.get_autoscaling_capacity.go | 0 ...ck.autoscaling.get_autoscaling_decision.go | 0 ...pack.autoscaling.get_autoscaling_policy.go | 0 ...pack.autoscaling.put_autoscaling_policy.go | 0 .../api.xpack.cat.ml_data_frame_analytics.go | 0 .../v7/esapi/api.xpack.cat.ml_datafeeds.go | 0 .../v7/esapi/api.xpack.cat.ml_jobs.go | 0 .../esapi/api.xpack.cat.ml_trained_models.go | 0 .../v7/esapi/api.xpack.cat.transforms.go | 0 ...pi.xpack.ccr.delete_auto_follow_pattern.go | 0 .../v7/esapi/api.xpack.ccr.follow.go | 0 .../v7/esapi/api.xpack.ccr.follow_info.go | 0 .../v7/esapi/api.xpack.ccr.follow_stats.go | 0 .../v7/esapi/api.xpack.ccr.forget_follower.go | 0 .../api.xpack.ccr.get_auto_follow_pattern.go | 0 ...api.xpack.ccr.pause_auto_follow_pattern.go | 0 .../v7/esapi/api.xpack.ccr.pause_follow.go | 0 .../api.xpack.ccr.put_auto_follow_pattern.go | 0 ...pi.xpack.ccr.resume_auto_follow_pattern.go | 0 .../v7/esapi/api.xpack.ccr.resume_follow.go | 0 .../v7/esapi/api.xpack.ccr.stats.go | 0 .../v7/esapi/api.xpack.ccr.unfollow.go | 0 .../v7/esapi/api.xpack.close_point_in_time.go | 0 ...e_transform_deprecated.delete_transform.go | 0 ...rame_transform_deprecated.get_transform.go | 0 ...ransform_deprecated.get_transform_stats.go | 0 ..._transform_deprecated.preview_transform.go | 0 ...rame_transform_deprecated.put_transform.go | 0 ...me_transform_deprecated.start_transform.go | 0 ...ame_transform_deprecated.stop_transform.go | 0 ...e_transform_deprecated.update_transform.go | 0 .../esapi/api.xpack.enrich.delete_policy.go | 0 .../esapi/api.xpack.enrich.execute_policy.go | 0 .../v7/esapi/api.xpack.enrich.get_policy.go | 0 .../v7/esapi/api.xpack.enrich.put_policy.go | 0 .../v7/esapi/api.xpack.enrich.stats.go | 0 .../v7/esapi/api.xpack.eql.delete.go | 0 .../v7/esapi/api.xpack.eql.get.go | 0 .../v7/esapi/api.xpack.eql.get_status.go | 0 .../v7/esapi/api.xpack.eql.search.go | 0 .../v7/esapi/api.xpack.graph.explore.go | 0 .../esapi/api.xpack.ilm.delete_lifecycle.go | 0 .../esapi/api.xpack.ilm.explain_lifecycle.go | 0 .../v7/esapi/api.xpack.ilm.get_lifecycle.go | 0 .../v7/esapi/api.xpack.ilm.get_status.go | 0 .../v7/esapi/api.xpack.ilm.move_to_step.go | 0 .../v7/esapi/api.xpack.ilm.put_lifecycle.go | 0 .../v7/esapi/api.xpack.ilm.remove_policy.go | 0 .../v7/esapi/api.xpack.ilm.retry.go | 0 .../v7/esapi/api.xpack.ilm.start.go | 0 .../v7/esapi/api.xpack.ilm.stop.go | 0 .../api.xpack.indices.create_data_stream.go | 0 .../api.xpack.indices.data_streams_stats.go | 0 .../api.xpack.indices.delete_data_stream.go | 0 .../v7/esapi/api.xpack.indices.freeze.go | 0 .../api.xpack.indices.get_data_stream.go | 0 ...pi.xpack.indices.migrate_to_data_stream.go | 0 .../api.xpack.indices.promote_data_stream.go | 0 ...i.xpack.indices.reload_search_analyzers.go | 0 .../v7/esapi/api.xpack.indices.unfreeze.go | 0 .../v7/esapi/api.xpack.license.delete.go | 0 .../v7/esapi/api.xpack.license.get.go | 0 .../api.xpack.license.get_basic_status.go | 0 .../api.xpack.license.get_trial_status.go | 0 .../v7/esapi/api.xpack.license.post.go | 0 .../api.xpack.license.post_start_basic.go | 0 .../api.xpack.license.post_start_trial.go | 0 .../api.xpack.logstash.delete_pipeline.go | 0 .../esapi/api.xpack.logstash.get_pipeline.go | 0 .../esapi/api.xpack.logstash.put_pipeline.go | 0 .../esapi/api.xpack.migration.deprecations.go | 0 .../v7/esapi/api.xpack.ml.close_job.go | 0 .../v7/esapi/api.xpack.ml.delete_calendar.go | 0 .../api.xpack.ml.delete_calendar_event.go | 0 .../esapi/api.xpack.ml.delete_calendar_job.go | 0 ...pi.xpack.ml.delete_data_frame_analytics.go | 0 .../v7/esapi/api.xpack.ml.delete_datafeed.go | 0 .../esapi/api.xpack.ml.delete_expired_data.go | 0 .../v7/esapi/api.xpack.ml.delete_filter.go | 0 .../v7/esapi/api.xpack.ml.delete_forecast.go | 0 .../v7/esapi/api.xpack.ml.delete_job.go | 0 .../api.xpack.ml.delete_model_snapshot.go | 0 .../api.xpack.ml.delete_trained_model.go | 0 .../api.xpack.ml.estimate_model_memory.go | 0 .../esapi/api.xpack.ml.evaluate_data_frame.go | 0 ...i.xpack.ml.explain_data_frame_analytics.go | 0 .../esapi/api.xpack.ml.find_file_structure.go | 0 .../v7/esapi/api.xpack.ml.flush_job.go | 0 .../v7/esapi/api.xpack.ml.forecast.go | 0 .../v7/esapi/api.xpack.ml.get_buckets.go | 0 .../esapi/api.xpack.ml.get_calendar_events.go | 0 .../v7/esapi/api.xpack.ml.get_calendars.go | 0 .../v7/esapi/api.xpack.ml.get_categories.go | 0 .../api.xpack.ml.get_data_frame_analytics.go | 0 ...xpack.ml.get_data_frame_analytics_stats.go | 0 .../esapi/api.xpack.ml.get_datafeed_stats.go | 0 .../v7/esapi/api.xpack.ml.get_datafeeds.go | 0 .../v7/esapi/api.xpack.ml.get_filters.go | 0 .../v7/esapi/api.xpack.ml.get_influencers.go | 0 .../v7/esapi/api.xpack.ml.get_job_stats.go | 0 .../v7/esapi/api.xpack.ml.get_jobs.go | 0 .../esapi/api.xpack.ml.get_model_snapshots.go | 0 .../esapi/api.xpack.ml.get_overall_buckets.go | 0 .../v7/esapi/api.xpack.ml.get_records.go | 0 .../esapi/api.xpack.ml.get_trained_models.go | 0 .../api.xpack.ml.get_trained_models_stats.go | 0 .../v7/esapi/api.xpack.ml.info.go | 0 .../v7/esapi/api.xpack.ml.open_job.go | 0 .../api.xpack.ml.post_calendar_events.go | 0 .../v7/esapi/api.xpack.ml.post_data.go | 0 .../v7/esapi/api.xpack.ml.preview_datafeed.go | 0 .../v7/esapi/api.xpack.ml.put_calendar.go | 0 .../v7/esapi/api.xpack.ml.put_calendar_job.go | 0 .../api.xpack.ml.put_data_frame_analytics.go | 0 .../v7/esapi/api.xpack.ml.put_datafeed.go | 0 .../v7/esapi/api.xpack.ml.put_filter.go | 0 .../v7/esapi/api.xpack.ml.put_job.go | 0 .../esapi/api.xpack.ml.put_trained_model.go | 0 .../api.xpack.ml.revert_model_snapshot.go | 0 .../v7/esapi/api.xpack.ml.set_upgrade_mode.go | 0 ...api.xpack.ml.start_data_frame_analytics.go | 0 .../v7/esapi/api.xpack.ml.start_datafeed.go | 0 .../api.xpack.ml.stop_data_frame_analytics.go | 0 .../v7/esapi/api.xpack.ml.stop_datafeed.go | 0 ...pi.xpack.ml.update_data_frame_analytics.go | 0 .../v7/esapi/api.xpack.ml.update_datafeed.go | 0 .../v7/esapi/api.xpack.ml.update_filter.go | 0 .../v7/esapi/api.xpack.ml.update_job.go | 0 .../api.xpack.ml.update_model_snapshot.go | 0 .../api.xpack.ml.upgrade_job_snapshot.go | 0 .../v7/esapi/api.xpack.ml.validate.go | 0 .../esapi/api.xpack.ml.validate_detector.go | 0 .../v7/esapi/api.xpack.monitoring.bulk.go | 0 .../v7/esapi/api.xpack.open_point_in_time.go | 0 .../v7/esapi/api.xpack.rollup.delete_job.go | 0 .../v7/esapi/api.xpack.rollup.get_jobs.go | 0 .../esapi/api.xpack.rollup.get_rollup_caps.go | 0 .../api.xpack.rollup.get_rollup_index_caps.go | 0 .../v7/esapi/api.xpack.rollup.put_job.go | 0 .../v7/esapi/api.xpack.rollup.rollup.go | 0 .../esapi/api.xpack.rollup.rollup_search.go | 0 .../v7/esapi/api.xpack.rollup.start_job.go | 0 .../v7/esapi/api.xpack.rollup.stop_job.go | 0 ....xpack.searchable_snapshots.clear_cache.go | 0 .../api.xpack.searchable_snapshots.mount.go | 0 ...k.searchable_snapshots.repository_stats.go | 0 .../api.xpack.searchable_snapshots.stats.go | 0 .../esapi/api.xpack.security.authenticate.go | 0 .../api.xpack.security.change_password.go | 0 .../api.xpack.security.clear_api_key_cache.go | 0 ....xpack.security.clear_cached_privileges.go | 0 .../api.xpack.security.clear_cached_realms.go | 0 .../api.xpack.security.clear_cached_roles.go | 0 .../api.xpack.security.create_api_key.go | 0 .../api.xpack.security.delete_privileges.go | 0 .../esapi/api.xpack.security.delete_role.go | 0 .../api.xpack.security.delete_role_mapping.go | 0 .../esapi/api.xpack.security.delete_user.go | 0 .../esapi/api.xpack.security.disable_user.go | 0 .../esapi/api.xpack.security.enable_user.go | 0 .../esapi/api.xpack.security.get_api_key.go | 0 ...i.xpack.security.get_builtin_privileges.go | 0 .../api.xpack.security.get_privileges.go | 0 .../v7/esapi/api.xpack.security.get_role.go | 0 .../api.xpack.security.get_role_mapping.go | 0 .../v7/esapi/api.xpack.security.get_token.go | 0 .../v7/esapi/api.xpack.security.get_user.go | 0 .../api.xpack.security.get_user_privileges.go | 0 .../esapi/api.xpack.security.grant_api_key.go | 0 .../api.xpack.security.has_privileges.go | 0 .../api.xpack.security.invalidate_api_key.go | 0 .../api.xpack.security.invalidate_token.go | 0 .../api.xpack.security.put_privileges.go | 0 .../v7/esapi/api.xpack.security.put_role.go | 0 .../api.xpack.security.put_role_mapping.go | 0 .../v7/esapi/api.xpack.security.put_user.go | 0 .../esapi/api.xpack.slm.delete_lifecycle.go | 0 .../esapi/api.xpack.slm.execute_lifecycle.go | 0 .../esapi/api.xpack.slm.execute_retention.go | 0 .../v7/esapi/api.xpack.slm.get_lifecycle.go | 0 .../v7/esapi/api.xpack.slm.get_stats.go | 0 .../v7/esapi/api.xpack.slm.get_status.go | 0 .../v7/esapi/api.xpack.slm.put_lifecycle.go | 0 .../v7/esapi/api.xpack.slm.start.go | 0 .../v7/esapi/api.xpack.slm.stop.go | 0 .../v7/esapi/api.xpack.sql.clear_cursor.go | 0 .../v7/esapi/api.xpack.sql.query.go | 0 .../v7/esapi/api.xpack.sql.translate.go | 0 .../v7/esapi/api.xpack.ssl.certificates.go | 0 ...api.xpack.text_structure.find_structure.go | 0 .../api.xpack.transform.delete_transform.go | 0 .../api.xpack.transform.get_transform.go | 0 ...api.xpack.transform.get_transform_stats.go | 0 .../api.xpack.transform.preview_transform.go | 0 .../api.xpack.transform.put_transform.go | 0 .../api.xpack.transform.start_transform.go | 0 .../api.xpack.transform.stop_transform.go | 0 .../api.xpack.transform.update_transform.go | 0 .../v7/esapi/api.xpack.watcher.ack_watch.go | 0 .../esapi/api.xpack.watcher.activate_watch.go | 0 .../api.xpack.watcher.deactivate_watch.go | 0 .../esapi/api.xpack.watcher.delete_watch.go | 0 .../esapi/api.xpack.watcher.execute_watch.go | 0 .../v7/esapi/api.xpack.watcher.get_watch.go | 0 .../v7/esapi/api.xpack.watcher.put_watch.go | 0 .../esapi/api.xpack.watcher.query_watches.go | 0 .../v7/esapi/api.xpack.watcher.start.go | 0 .../v7/esapi/api.xpack.watcher.stats.go | 0 .../v7/esapi/api.xpack.watcher.stop.go | 0 .../v7/esapi/api.xpack.xpack.info.go | 0 .../v7/esapi/api.xpack.xpack.usage.go | 0 .../elastic/go-elasticsearch/v7/esapi/doc.go | 0 .../go-elasticsearch/v7/esapi/esapi.go | 0 .../v7/esapi/esapi.request.go | 0 .../v7/esapi/esapi.response.go | 0 .../v7/estransport/connection.go | 0 .../v7/estransport/discovery.go | 0 .../go-elasticsearch/v7/estransport/doc.go | 0 .../v7/estransport/estransport.go | 0 .../go-elasticsearch/v7/estransport/logger.go | 0 .../v7/estransport/metaheader.go | 0 .../v7/estransport/metrics.go | 0 .../v7/esutil/bulk_indexer.go | 0 .../elastic/go-elasticsearch/v7/esutil/doc.go | 0 .../go-elasticsearch/v7/esutil/json_reader.go | 0 .../v7/internal/version/version.go | 0 .../github.com/go-chi/chi/v5}/.gitignore | 0 .../github.com/go-chi/chi/v5/CHANGELOG.md | 315 +++ .../github.com/go-chi/chi/v5/CONTRIBUTING.md | 31 + .../vendor/github.com/go-chi/chi/v5}/LICENSE | 0 .../vendor/github.com/go-chi/chi/v5/Makefile | 0 .../vendor/github.com/go-chi/chi/v5/README.md | 500 +++++ .../vendor/github.com/go-chi/chi/v5/chain.go | 0 .../vendor/github.com/go-chi/chi/v5/chi.go | 0 .../github.com/go-chi/chi/v5/context.go | 0 .../go-chi/chi/v5/middleware/basic_auth.go | 0 .../go-chi/chi/v5/middleware/clean_path.go | 0 .../go-chi/chi/v5/middleware/compress.go | 0 .../chi/v5}/middleware/content_charset.go | 0 .../chi/v5/middleware/content_encoding.go | 0 .../go-chi/chi/v5/middleware/content_type.go | 0 .../go-chi/chi/v5/middleware/get_head.go | 0 .../go-chi/chi/v5/middleware/heartbeat.go | 0 .../go-chi/chi/v5/middleware/logger.go | 0 .../go-chi/chi/v5/middleware/maybe.go | 0 .../go-chi/chi/v5/middleware/middleware.go | 0 .../go-chi/chi/v5}/middleware/nocache.go | 0 .../go-chi/chi/v5/middleware/page_route.go | 0 .../go-chi/chi/v5/middleware/path_rewrite.go | 0 .../go-chi/chi/v5/middleware/profiler.go | 0 .../go-chi/chi/v5/middleware/realip.go | 0 .../go-chi/chi/v5/middleware/recoverer.go | 0 .../go-chi/chi/v5/middleware/request_id.go | 0 .../go-chi/chi/v5/middleware/route_headers.go | 0 .../go-chi/chi/v5/middleware/strip.go | 0 .../go-chi/chi/v5/middleware/terminal.go | 0 .../go-chi/chi/v5/middleware/throttle.go | 0 .../go-chi/chi/v5}/middleware/timeout.go | 0 .../go-chi/chi/v5/middleware/url_format.go | 0 .../go-chi/chi/v5/middleware/value.go | 0 .../go-chi/chi/v5/middleware/wrap_writer.go | 0 .../vendor/github.com/go-chi/chi/v5/mux.go | 0 .../vendor/github.com/go-chi/chi/v5/tree.go | 0 .../vendor/github.com/go-chi/cors}/LICENSE | 3 +- .../vendor/github.com/go-chi/cors/README.md | 39 + .../vendor/github.com/go-chi/cors/cors.go | 107 +- .../vendor/github.com/go-chi/cors/utils.go | 2 +- .../github.com/go-chi/jwtauth/.gitignore | 0 .../vendor/github.com/go-chi/jwtauth/LICENSE | 0 .../github.com/go-chi/jwtauth/README.md | 111 + .../github.com/go-chi/jwtauth/jwtauth.go | 0 .../go-oauth2/oauth2/v4/.editorconfig | 2 + .../github.com/go-oauth2/oauth2/v4/.gitignore | 2 + .../go-oauth2/oauth2/v4/.travis.yml | 0 .../github.com/go-oauth2/oauth2/v4/LICENSE | 0 .../github.com/go-oauth2/oauth2/v4/README.md | 196 ++ .../github.com/go-oauth2/oauth2/v4/const.go | 0 .../github.com/go-oauth2/oauth2/v4/doc.go | 0 .../go-oauth2/oauth2/v4/errors/error.go | 0 .../go-oauth2/oauth2/v4/errors/response.go | 0 .../go-oauth2/oauth2/v4/generate.go | 0 .../go-oauth2/oauth2/v4/generates/access.go | 0 .../oauth2/v4/generates/authorize.go | 0 .../oauth2/v4/generates/jwt_access.go | 2 +- .../github.com/go-oauth2/oauth2/v4/go.test.sh | 0 .../github.com/go-oauth2/oauth2/v4/manage.go | 0 .../github.com/go-oauth2/oauth2/v4/model.go | 0 .../go-oauth2/oauth2/v4/models/client.go | 0 .../go-oauth2/oauth2/v4/models/token.go | 0 .../github.com/go-oauth2/oauth2/v4/store.go | 0 .../github.com/goccy/go-json/.codecov.yml | 0 .../github.com/goccy/go-json/.gitignore | 0 .../github.com/goccy/go-json/.golangci.yml | 0 .../github.com/goccy/go-json/CHANGELOG.md | 339 +++ .../vendor/github.com/goccy/go-json/LICENSE | 0 .../vendor/github.com/goccy/go-json/Makefile | 0 .../vendor/github.com/goccy/go-json/README.md | 529 +++++ .../vendor/github.com/goccy/go-json/color.go | 0 .../vendor/github.com/goccy/go-json/decode.go | 0 .../goccy/go-json/docker-compose.yml | 2 +- .../vendor/github.com/goccy/go-json/encode.go | 0 .../vendor/github.com/goccy/go-json/error.go | 0 .../internal/decoder/anonymous_field.go | 0 .../goccy/go-json/internal/decoder/array.go | 0 .../goccy/go-json/internal/decoder/bool.go | 0 .../goccy/go-json/internal/decoder/bytes.go | 0 .../goccy/go-json/internal/decoder/compile.go | 0 .../internal/decoder/compile_norace.go | 0 .../go-json/internal/decoder/compile_race.go | 0 .../goccy/go-json/internal/decoder/context.go | 0 .../goccy/go-json/internal/decoder/float.go | 0 .../goccy/go-json/internal/decoder/func.go | 0 .../goccy/go-json/internal/decoder/int.go | 12 +- .../go-json/internal/decoder/interface.go | 0 .../goccy/go-json/internal/decoder/invalid.go | 0 .../goccy/go-json/internal/decoder/map.go | 7 +- .../goccy/go-json/internal/decoder/number.go | 0 .../goccy/go-json/internal/decoder/option.go | 0 .../goccy/go-json/internal/decoder/ptr.go | 0 .../goccy/go-json/internal/decoder/slice.go | 0 .../goccy/go-json/internal/decoder/stream.go | 3 +- .../goccy/go-json/internal/decoder/string.go | 97 +- .../goccy/go-json/internal/decoder/struct.go | 0 .../goccy/go-json/internal/decoder/type.go | 0 .../goccy/go-json/internal/decoder/uint.go | 0 .../internal/decoder/unmarshal_json.go | 16 +- .../internal/decoder/unmarshal_text.go | 0 .../internal/decoder/wrapped_string.go | 0 .../goccy/go-json/internal/encoder/code.go | 0 .../goccy/go-json/internal/encoder/compact.go | 0 .../go-json/internal/encoder/compiler.go | 0 .../internal/encoder/compiler_norace.go | 2 +- .../go-json/internal/encoder/compiler_race.go | 2 +- .../goccy/go-json/internal/encoder/context.go | 0 .../go-json/internal/encoder/decode_rune.go | 0 .../goccy/go-json/internal/encoder/encoder.go | 0 .../goccy/go-json/internal/encoder/indent.go | 0 .../goccy/go-json/internal/encoder/int.go | 0 .../goccy/go-json/internal/encoder/map112.go | 0 .../goccy/go-json/internal/encoder/map113.go | 0 .../goccy/go-json/internal/encoder/opcode.go | 0 .../goccy/go-json/internal/encoder/option.go | 0 .../goccy/go-json/internal/encoder/optype.go | 0 .../goccy/go-json/internal/encoder/query.go | 0 .../goccy/go-json/internal/encoder/string.go | 0 .../go-json/internal/encoder/string_table.go | 0 .../go-json/internal/encoder/vm/debug_vm.go | 0 .../goccy/go-json/internal/encoder/vm/hack.go | 0 .../goccy/go-json/internal/encoder/vm/util.go | 0 .../goccy/go-json/internal/encoder/vm/vm.go | 0 .../internal/encoder/vm_color/debug_vm.go | 0 .../go-json/internal/encoder/vm_color/hack.go | 0 .../go-json/internal/encoder/vm_color/util.go | 0 .../go-json/internal/encoder/vm_color/vm.go | 0 .../encoder/vm_color_indent/debug_vm.go | 0 .../internal/encoder/vm_color_indent/util.go | 0 .../internal/encoder/vm_color_indent/vm.go | 0 .../internal/encoder/vm_indent/debug_vm.go | 0 .../internal/encoder/vm_indent/hack.go | 0 .../internal/encoder/vm_indent/util.go | 0 .../go-json/internal/encoder/vm_indent/vm.go | 0 .../goccy/go-json/internal/errors/error.go | 0 .../goccy/go-json/internal/runtime/rtype.go | 0 .../go-json/internal/runtime/struct_field.go | 0 .../goccy/go-json/internal/runtime/type.go | 0 .../vendor/github.com/goccy/go-json/json.go | 0 .../vendor/github.com/goccy/go-json/option.go | 0 .../vendor/github.com/goccy/go-json/query.go | 0 .../github.com/golang-jwt/jwt}/.gitignore | 2 +- .../vendor/github.com/golang-jwt/jwt}/LICENSE | 1 + .../golang-jwt/jwt/MIGRATION_GUIDE.md | 22 + .../github.com/golang-jwt/jwt/README.md | 113 + .../golang-jwt/jwt/VERSION_HISTORY.md | 131 ++ .../github.com/golang-jwt/jwt}/claims.go | 32 +- .../vendor/github.com/golang-jwt/jwt}/doc.go | 0 .../github.com/golang-jwt/jwt}/ecdsa.go | 24 +- .../github.com/golang-jwt/jwt}/ecdsa_utils.go | 4 +- .../github.com/golang-jwt/jwt/ed25519.go | 81 + .../golang-jwt/jwt/ed25519_utils.go | 64 + .../github.com/golang-jwt/jwt}/errors.go | 0 .../vendor/github.com/golang-jwt/jwt}/hmac.go | 0 .../github.com/golang-jwt/jwt}/map_claims.go | 60 +- .../vendor/github.com/golang-jwt/jwt}/none.go | 0 .../github.com/golang-jwt/jwt}/parser.go | 0 .../vendor/github.com/golang-jwt/jwt}/rsa.go | 0 .../github.com/golang-jwt/jwt}/rsa_pss.go | 38 +- .../github.com/golang-jwt/jwt}/rsa_utils.go | 2 +- .../golang-jwt/jwt}/signing_method.go | 0 .../github.com/golang-jwt/jwt}/token.go | 10 +- .../vendor/github.com/google/uuid/.travis.yml | 0 .../github.com/google/uuid/CONTRIBUTING.md | 10 + .../github.com/google/uuid/CONTRIBUTORS | 0 .../vendor/github.com/google/uuid/LICENSE | 0 .../vendor/github.com/google/uuid/README.md | 19 + .../vendor/github.com/google/uuid/dce.go | 0 .../vendor/github.com/google/uuid/doc.go | 0 .../vendor/github.com/google/uuid/hash.go | 0 .../vendor/github.com/google/uuid/marshal.go | 7 +- .../vendor/github.com/google/uuid/node.go | 0 .../vendor/github.com/google/uuid/node_js.go | 0 .../vendor/github.com/google/uuid/node_net.go | 0 .../vendor/github.com/google/uuid/sql.go | 0 .../vendor/github.com/google/uuid/time.go | 0 .../vendor/github.com/google/uuid/util.go | 0 .../vendor/github.com/google/uuid/uuid.go | 0 .../vendor/github.com/google/uuid/version1.go | 12 +- .../vendor/github.com/google/uuid/version4.go | 7 +- .../vendor/github.com/gorilla/css/LICENSE | 0 .../github.com/gorilla/css/scanner/doc.go | 0 .../github.com/gorilla/css/scanner/scanner.go | 0 .../inconshreveable/mousetrap/LICENSE | 0 .../inconshreveable/mousetrap/README.md | 23 + .../inconshreveable/mousetrap/trap_others.go | 0 .../inconshreveable/mousetrap/trap_windows.go | 0 .../mousetrap/trap_windows_1.4.go | 0 .../vendor/github.com/jmoiron/sqlx/LICENSE | 0 .../github.com/jmoiron/sqlx/types/README.md | 5 + .../github.com/jmoiron/sqlx/types/types.go | 8 +- .../github.com/joho/godotenv/.gitignore | 0 .../vendor/github.com/joho/godotenv/LICENCE | 0 .../vendor/github.com/joho/godotenv/README.md | 188 ++ .../github.com/joho/godotenv/godotenv.go | 0 .../github.com/joho/godotenv/renovate.json | 0 .../lestrrat-go/backoff/v2/.gitignore | 0 .../lestrrat-go/backoff/v2/.golangci.yml | 0 .../github.com/lestrrat-go/backoff/v2/Changes | 0 .../github.com/lestrrat-go/backoff/v2/LICENSE | 0 .../lestrrat-go/backoff/v2/README.md | 183 ++ .../lestrrat-go/backoff/v2/backoff.go | 0 .../lestrrat-go/backoff/v2/constant.go | 0 .../lestrrat-go/backoff/v2/controller.go | 0 .../github.com/lestrrat-go/backoff/v2/doc.go | 0 .../lestrrat-go/backoff/v2/exponential.go | 0 .../lestrrat-go/backoff/v2/interface.go | 0 .../lestrrat-go/backoff/v2/jitter.go | 0 .../github.com/lestrrat-go/backoff/v2/null.go | 0 .../lestrrat-go/backoff/v2/options.go | 0 .../lestrrat-go/blackmagic/.gitignore | 0 .../github.com/lestrrat-go/blackmagic/LICENSE | 0 .../lestrrat-go/blackmagic/README.md | 3 + .../lestrrat-go/blackmagic/blackmagic.go | 0 .../github.com/lestrrat-go/httpcc/.gitignore | 0 .../github.com/lestrrat-go/httpcc/LICENSE | 0 .../github.com/lestrrat-go/httpcc/README.md | 35 + .../lestrrat-go/httpcc/directives.go | 0 .../github.com/lestrrat-go/httpcc/httpcc.go | 29 +- .../github.com/lestrrat-go/iter/LICENSE | 0 .../lestrrat-go/iter/arrayiter/arrayiter.go | 0 .../lestrrat-go/iter/mapiter/mapiter.go | 0 .../github.com/lestrrat-go/jwx/.gitignore | 0 .../github.com/lestrrat-go/jwx/.golangci.yml | 12 +- .../vendor/github.com/lestrrat-go/jwx/Changes | 22 + .../vendor/github.com/lestrrat-go/jwx/LICENSE | 0 .../github.com/lestrrat-go/jwx/Makefile | 0 .../github.com/lestrrat-go/jwx/README.md | 134 ++ .../github.com/lestrrat-go/jwx/format.go | 0 .../lestrrat-go/jwx/formatkind_string_gen.go | 0 .../vendor/github.com/lestrrat-go/jwx/gen.sh | 0 .../lestrrat-go/jwx/internal/base64/base64.go | 0 .../lestrrat-go/jwx/internal/ecutil/ecutil.go | 1 + .../lestrrat-go/jwx/internal/iter/mapiter.go | 1 + .../lestrrat-go/jwx/internal/json/goccy.go | 0 .../lestrrat-go/jwx/internal/json/json.go | 0 .../lestrrat-go/jwx/internal/json/registry.go | 0 .../lestrrat-go/jwx/internal/json/stdlib.go | 1 + .../jwx/internal/keyconv/keyconv.go | 0 .../lestrrat-go/jwx/internal/pool/pool.go | 3 + .../github.com/lestrrat-go/jwx/jwa/README.md | 3 + .../lestrrat-go/jwx/jwa/compression_gen.go | 0 .../jwx/jwa/content_encryption_gen.go | 0 .../lestrrat-go/jwx/jwa/elliptic_gen.go | 0 .../github.com/lestrrat-go/jwx/jwa/gen.sh | 0 .../github.com/lestrrat-go/jwx/jwa/jwa.go | 0 .../lestrrat-go/jwx/jwa/key_encryption_gen.go | 0 .../lestrrat-go/jwx/jwa/key_type_gen.go | 0 .../lestrrat-go/jwx/jwa/secp2561k.go | 0 .../lestrrat-go/jwx/jwa/signature_gen.go | 0 .../github.com/lestrrat-go/jwx/jwe/README.md | 94 + .../lestrrat-go/jwx/jwe/compress.go | 0 .../github.com/lestrrat-go/jwx/jwe/decrypt.go | 0 .../github.com/lestrrat-go/jwx/jwe/encrypt.go | 1 + .../github.com/lestrrat-go/jwx/jwe/gen.sh | 0 .../github.com/lestrrat-go/jwx/jwe/headers.go | 6 +- .../lestrrat-go/jwx/jwe/headers_gen.go | 0 .../lestrrat-go/jwx/jwe/interface.go | 0 .../jwx/jwe/internal/aescbc/aescbc.go | 0 .../jwx/jwe/internal/cipher/cipher.go | 8 +- .../jwx/jwe/internal/cipher/interface.go | 0 .../jwx/jwe/internal/concatkdf/concatkdf.go | 0 .../internal/content_crypt/content_crypt.go | 0 .../jwe/internal/content_crypt/interface.go | 0 .../jwx/jwe/internal/keyenc/interface.go | 0 .../jwx/jwe/internal/keyenc/keyenc.go | 0 .../jwx/jwe/internal/keygen/interface.go | 0 .../jwx/jwe/internal/keygen/keygen.go | 0 .../github.com/lestrrat-go/jwx/jwe/io.go | 0 .../github.com/lestrrat-go/jwx/jwe/jwe.go | 0 .../github.com/lestrrat-go/jwx/jwe/message.go | 6 +- .../github.com/lestrrat-go/jwx/jwe/options.go | 0 .../lestrrat-go/jwx/jwe/serializer.go | 0 .../github.com/lestrrat-go/jwx/jwk/README.md | 274 +++ .../lestrrat-go/jwx/jwk/certchain.go | 0 .../github.com/lestrrat-go/jwx/jwk/ecdsa.go | 6 +- .../lestrrat-go/jwx/jwk/ecdsa_gen.go | 0 .../github.com/lestrrat-go/jwx/jwk/es256k.go | 0 .../github.com/lestrrat-go/jwx/jwk/gen.sh | 0 .../lestrrat-go/jwx/jwk/interface.go | 0 .../lestrrat-go/jwx/jwk/interface_gen.go | 0 .../github.com/lestrrat-go/jwx/jwk/io.go | 0 .../github.com/lestrrat-go/jwx/jwk/jwk.go | 6 +- .../github.com/lestrrat-go/jwx/jwk/key_ops.go | 0 .../github.com/lestrrat-go/jwx/jwk/okp.go | 8 +- .../github.com/lestrrat-go/jwx/jwk/okp_gen.go | 0 .../github.com/lestrrat-go/jwx/jwk/option.go | 0 .../github.com/lestrrat-go/jwx/jwk/refresh.go | 7 +- .../github.com/lestrrat-go/jwx/jwk/rsa.go | 33 +- .../github.com/lestrrat-go/jwx/jwk/rsa_gen.go | 6 - .../github.com/lestrrat-go/jwx/jwk/set.go | 0 .../lestrrat-go/jwx/jwk/symmetric.go | 6 +- .../lestrrat-go/jwx/jwk/symmetric_gen.go | 0 .../github.com/lestrrat-go/jwx/jwk/usage.go | 0 .../lestrrat-go/jwx/jwk/whitelist.go | 0 .../github.com/lestrrat-go/jwx/jws/README.md | 111 + .../github.com/lestrrat-go/jwx/jws/ecdsa.go | 0 .../github.com/lestrrat-go/jwx/jws/eddsa.go | 0 .../github.com/lestrrat-go/jwx/jws/es256k.go | 0 .../github.com/lestrrat-go/jwx/jws/gen.sh | 0 .../github.com/lestrrat-go/jwx/jws/headers.go | 6 +- .../lestrrat-go/jwx/jws/headers_gen.go | 0 .../github.com/lestrrat-go/jwx/jws/hmac.go | 0 .../lestrrat-go/jwx/jws/interface.go | 0 .../github.com/lestrrat-go/jwx/jws/io.go | 0 .../github.com/lestrrat-go/jwx/jws/jws.go | 25 +- .../github.com/lestrrat-go/jwx/jws/message.go | 4 + .../github.com/lestrrat-go/jwx/jws/option.go | 0 .../github.com/lestrrat-go/jwx/jws/rsa.go | 0 .../github.com/lestrrat-go/jwx/jws/signer.go | 0 .../lestrrat-go/jwx/jws/verifier.go | 0 .../github.com/lestrrat-go/jwx/jwt/README.md | 224 ++ .../lestrrat-go/jwx/jwt/builder_gen.go | 0 .../github.com/lestrrat-go/jwx/jwt/gen.sh | 0 .../github.com/lestrrat-go/jwx/jwt/http.go | 1 + .../lestrrat-go/jwx/jwt/interface.go | 0 .../jwx/jwt/internal/types/date.go | 0 .../jwx/jwt/internal/types/string.go | 0 .../github.com/lestrrat-go/jwx/jwt/io.go | 0 .../github.com/lestrrat-go/jwx/jwt/jwt.go | 6 +- .../github.com/lestrrat-go/jwx/jwt/options.go | 0 .../lestrrat-go/jwx/jwt/serialize.go | 0 .../lestrrat-go/jwx/jwt/token_gen.go | 0 .../lestrrat-go/jwx/jwt/validate.go | 2 + .../vendor/github.com/lestrrat-go/jwx/jwx.go | 5 +- .../github.com/lestrrat-go/jwx/options.go | 0 .../lestrrat-go/jwx/x25519/x25519.go | 0 .../github.com/lestrrat-go/option/.gitignore | 0 .../github.com/lestrrat-go/option/LICENSE | 0 .../github.com/lestrrat-go/option/README.md | 136 ++ .../github.com/lestrrat-go/option/option.go | 0 .../lestrrat-go/strftime}/.gitignore | 0 .../lestrrat-go/strftime/.golangci.yml | 5 + .../github.com/lestrrat-go/strftime/Changes | 28 + .../github.com/lestrrat-go/strftime/LICENSE | 21 + .../github.com/lestrrat-go/strftime/Makefile | 29 + .../github.com/lestrrat-go/strftime/README.md | 227 ++ .../lestrrat-go/strftime/appenders.go | 348 +++ .../lestrrat-go/strftime/extension.go | 67 + .../strftime/internal/errors/errors_fmt.go | 18 + .../strftime/internal/errors/errors_pkg.go | 18 + .../lestrrat-go/strftime/options.go | 67 + .../lestrrat-go/strftime/specifications.go | 152 ++ .../lestrrat-go/strftime/strftime.go | 228 ++ .../microcosm-cc/bluemonday/.coveralls.yml | 0 .../microcosm-cc/bluemonday/.editorconfig | 0 .../microcosm-cc/bluemonday/.gitattributes | 0 .../microcosm-cc/bluemonday/.gitignore | 0 .../microcosm-cc/bluemonday/.travis.yml | 0 .../microcosm-cc/bluemonday/CONTRIBUTING.md | 52 + .../microcosm-cc/bluemonday/CREDITS.md | 8 + .../microcosm-cc/bluemonday/LICENSE.md | 28 + .../microcosm-cc/bluemonday/Makefile | 0 .../microcosm-cc/bluemonday/README.md | 418 ++++ .../microcosm-cc/bluemonday/SECURITY.md | 15 + .../microcosm-cc/bluemonday/css/handlers.go | 0 .../github.com/microcosm-cc/bluemonday/doc.go | 0 .../microcosm-cc/bluemonday/helpers.go | 6 + .../microcosm-cc/bluemonday/policies.go | 0 .../microcosm-cc/bluemonday/policy.go | 74 + .../microcosm-cc/bluemonday/sanitize.go | 29 +- .../bluemonday/stringwriterwriter_go1.12.go | 0 .../bluemonday/stringwriterwriter_ltgo1.12.go | 0 .../github.com/modern-go/reflect2/.gitignore | 2 + .../github.com/modern-go/reflect2/.travis.yml | 15 + .../github.com/modern-go/reflect2/Gopkg.lock | 9 + .../github.com/modern-go/reflect2/Gopkg.toml | 31 + .../github.com/modern-go/reflect2}/LICENSE | 1 - .../github.com/modern-go/reflect2/README.md | 71 + .../modern-go/reflect2/go_above_118.go | 23 + .../modern-go/reflect2/go_above_19.go | 17 + .../modern-go/reflect2/go_below_118.go | 21 + .../github.com/modern-go/reflect2/reflect2.go | 300 +++ .../modern-go/reflect2/reflect2_amd64.s | 0 .../modern-go/reflect2/reflect2_kind.go | 30 + .../modern-go/reflect2/relfect2_386.s | 0 .../modern-go/reflect2/relfect2_amd64p32.s | 0 .../modern-go/reflect2/relfect2_arm.s | 0 .../modern-go/reflect2/relfect2_arm64.s | 0 .../modern-go/reflect2/relfect2_mips64x.s | 0 .../modern-go/reflect2/relfect2_mipsx.s | 0 .../modern-go/reflect2/relfect2_ppc64x.s | 0 .../modern-go/reflect2/relfect2_s390x.s | 0 .../modern-go/reflect2/safe_field.go | 58 + .../github.com/modern-go/reflect2/safe_map.go | 101 + .../modern-go/reflect2/safe_slice.go | 92 + .../modern-go/reflect2/safe_struct.go | 29 + .../modern-go/reflect2/safe_type.go | 78 + .../github.com/modern-go/reflect2/type_map.go | 70 + .../modern-go/reflect2/unsafe_array.go | 65 + .../modern-go/reflect2/unsafe_eface.go | 59 + .../modern-go/reflect2/unsafe_field.go | 74 + .../modern-go/reflect2/unsafe_iface.go | 64 + .../modern-go/reflect2/unsafe_link.go | 76 + .../modern-go/reflect2/unsafe_map.go | 130 ++ .../modern-go/reflect2/unsafe_ptr.go | 46 + .../modern-go/reflect2/unsafe_slice.go | 177 ++ .../modern-go/reflect2/unsafe_struct.go | 59 + .../modern-go/reflect2/unsafe_type.go | 85 + .../vendor/github.com/pkg/errors/.gitignore | 24 + .../vendor/github.com/pkg/errors/.travis.yml | 0 .../vendor/github.com/pkg/errors/LICENSE | 0 .../vendor/github.com/pkg/errors/Makefile | 0 .../vendor/github.com/pkg/errors/README.md | 59 + .../vendor/github.com/pkg/errors/appveyor.yml | 0 .../vendor/github.com/pkg/errors/errors.go | 0 .../vendor/github.com/pkg/errors/go113.go | 0 .../vendor/github.com/pkg/errors/stack.go | 0 .../github.com/pmezard/go-difflib/LICENSE | 0 .../pmezard/go-difflib/difflib/difflib.go | 0 .../github.com/shopspring/decimal/.gitignore | 9 + .../github.com/shopspring/decimal/.travis.yml | 19 + .../shopspring/decimal/CHANGELOG.md | 49 + .../github.com/shopspring/decimal/LICENSE | 45 + .../github.com/shopspring/decimal/README.md | 130 ++ .../shopspring/decimal/decimal-go.go | 415 ++++ .../github.com/shopspring/decimal/decimal.go | 1904 +++++++++++++++++ .../github.com/shopspring/decimal/rounding.go | 160 ++ .../vendor/github.com/spf13/cast/.gitignore | 0 .../vendor/github.com/spf13/cast/LICENSE | 0 .../vendor/github.com/spf13/cast/Makefile | 4 +- .../vendor/github.com/spf13/cast/README.md | 75 + .../vendor/github.com/spf13/cast/cast.go | 5 + .../vendor/github.com/spf13/cast/caste.go | 158 +- .../spf13/cast/timeformattype_string.go | 27 + .../vendor/github.com/spf13/cobra/.gitignore | 5 +- .../github.com/spf13/cobra/.golangci.yml | 48 + .../vendor/github.com/spf13/cobra/.mailmap | 0 .../github.com/spf13/cobra/CHANGELOG.md | 51 + .../vendor/github.com/spf13/cobra/CONDUCT.md | 37 + .../github.com/spf13/cobra/CONTRIBUTING.md | 50 + .../vendor/github.com/spf13/cobra/LICENSE.txt | 0 .../vendor/github.com/spf13/cobra/MAINTAINERS | 13 + .../vendor/github.com/spf13/cobra/Makefile | 35 + .../vendor/github.com/spf13/cobra/README.md | 111 + .../vendor/github.com/spf13/cobra/args.go | 34 +- .../spf13/cobra/bash_completions.go | 371 ++-- .../spf13/cobra/bash_completions.md | 93 + .../spf13/cobra/bash_completionsV2.go | 331 +++ .../vendor/github.com/spf13/cobra/cobra.go | 24 +- .../vendor/github.com/spf13/cobra/command.go | 345 ++- .../github.com/spf13/cobra/command_notwin.go | 1 + .../github.com/spf13/cobra/command_win.go | 9 +- .../github.com/spf13/cobra/completions.go | 811 +++++++ .../spf13/cobra/fish_completions.go | 219 ++ .../spf13/cobra/fish_completions.md | 4 + .../spf13/cobra/powershell_completions.go | 285 +++ .../spf13/cobra/powershell_completions.md | 3 + .../spf13/cobra/projects_using_cobra.md | 51 + .../spf13/cobra/shell_completions.go | 84 + .../spf13/cobra/shell_completions.md | 548 +++++ .../github.com/spf13/cobra/user_guide.md | 638 ++++++ .../github.com/spf13/cobra/zsh_completions.go | 258 +++ .../github.com/spf13/cobra/zsh_completions.md | 48 + .../vendor/github.com/spf13/pflag/.gitignore | 0 .../vendor/github.com/spf13/pflag/.travis.yml | 7 +- .../vendor/github.com/spf13/pflag/LICENSE | 0 .../vendor/github.com/spf13/pflag/README.md | 296 +++ .../vendor/github.com/spf13/pflag/bool.go | 0 .../github.com/spf13/pflag/bool_slice.go | 38 + .../vendor/github.com/spf13/pflag/bytes.go | 0 .../vendor/github.com/spf13/pflag/count.go | 4 +- .../vendor/github.com/spf13/pflag/duration.go | 0 .../github.com/spf13/pflag/duration_slice.go | 38 + .../vendor/github.com/spf13/pflag/flag.go | 16 +- .../vendor/github.com/spf13/pflag/float32.go | 0 .../github.com/spf13/pflag/float32_slice.go | 174 ++ .../vendor/github.com/spf13/pflag/float64.go | 0 .../github.com/spf13/pflag/float64_slice.go | 166 ++ .../github.com/spf13/pflag/golangflag.go | 0 .../vendor/github.com/spf13/pflag/int.go | 0 .../vendor/github.com/spf13/pflag/int16.go | 0 .../vendor/github.com/spf13/pflag/int32.go | 0 .../github.com/spf13/pflag/int32_slice.go | 174 ++ .../vendor/github.com/spf13/pflag/int64.go | 0 .../github.com/spf13/pflag/int64_slice.go | 166 ++ .../vendor/github.com/spf13/pflag/int8.go | 0 .../github.com/spf13/pflag/int_slice.go | 30 + .../vendor/github.com/spf13/pflag/ip.go | 0 .../vendor/github.com/spf13/pflag/ip_slice.go | 40 +- .../vendor/github.com/spf13/pflag/ipmask.go | 0 .../vendor/github.com/spf13/pflag/ipnet.go | 0 .../vendor/github.com/spf13/pflag/string.go | 0 .../github.com/spf13/pflag/string_array.go | 26 + .../github.com/spf13/pflag/string_slice.go | 22 +- .../github.com/spf13/pflag/string_to_int.go | 0 .../github.com/spf13/pflag/string_to_int64.go | 149 ++ .../spf13/pflag/string_to_string.go | 0 .../vendor/github.com/spf13/pflag/uint.go | 0 .../vendor/github.com/spf13/pflag/uint16.go | 0 .../vendor/github.com/spf13/pflag/uint32.go | 0 .../vendor/github.com/spf13/pflag/uint64.go | 0 .../vendor/github.com/spf13/pflag/uint8.go | 0 .../github.com/spf13/pflag/uint_slice.go | 42 + .../github.com/stretchr/testify/LICENSE | 0 .../testify/assert/assertion_compare.go | 54 +- .../assert/assertion_compare_can_convert.go | 16 + .../assert/assertion_compare_legacy.go | 16 + .../testify/assert/assertion_format.go | 12 + .../testify/assert/assertion_format.go.tmpl | 0 .../testify/assert/assertion_forward.go | 24 + .../testify/assert/assertion_forward.go.tmpl | 0 .../testify/assert/assertion_order.go | 8 +- .../stretchr/testify/assert/assertions.go | 112 +- .../github.com/stretchr/testify/assert/doc.go | 0 .../stretchr/testify/assert/errors.go | 0 .../testify/assert/forward_assertions.go | 0 .../testify/assert/http_assertions.go | 0 .../vendor/go.uber.org/atomic/.codecov.yml | 0 .../vendor/go.uber.org/atomic/.gitignore | 3 + .../vendor/go.uber.org/atomic/CHANGELOG.md | 100 + .../vendor/go.uber.org/atomic/LICENSE.txt | 0 .../vendor/go.uber.org/atomic/Makefile | 1 + .../vendor/go.uber.org/atomic/README.md | 63 + .../vendor/go.uber.org/atomic/bool.go | 20 +- .../vendor/go.uber.org/atomic/bool_ext.go | 2 +- .../vendor/go.uber.org/atomic/doc.go | 0 .../vendor/go.uber.org/atomic/duration.go | 20 +- .../vendor/go.uber.org/atomic/duration_ext.go | 8 +- .../vendor/go.uber.org/atomic/error.go | 12 +- .../vendor/go.uber.org/atomic/error_ext.go | 0 .../vendor/go.uber.org/atomic/float64.go | 19 +- .../vendor/go.uber.org/atomic/float64_ext.go | 34 +- .../vendor/go.uber.org/atomic/gen.go | 1 + .../vendor/go.uber.org/atomic/int32.go | 24 +- .../vendor/go.uber.org/atomic/int64.go | 24 +- .../vendor/go.uber.org/atomic/nocmp.go | 0 .../vendor/go.uber.org/atomic/string.go | 12 +- .../vendor/go.uber.org/atomic/string_ext.go | 2 + .../vendor/go.uber.org/atomic/time.go | 55 +- .../vendor/go.uber.org/atomic/time_ext.go | 36 + .../vendor/go.uber.org/atomic/uint32.go | 24 +- .../vendor/go.uber.org/atomic/uint64.go | 24 +- .../vendor/go.uber.org/atomic/uintptr.go | 102 + .../go.uber.org/atomic/unsafe_pointer.go | 58 + .../vendor/go.uber.org/atomic/value.go | 0 .../vendor/go.uber.org/multierr/.codecov.yml | 0 .../vendor/go.uber.org/multierr/.gitignore | 0 .../vendor/go.uber.org/multierr/CHANGELOG.md | 66 + .../vendor/go.uber.org/multierr/LICENSE.txt | 2 +- .../vendor/go.uber.org/multierr/Makefile | 6 +- .../vendor/go.uber.org/multierr/README.md | 23 + .../vendor/go.uber.org/multierr/error.go | 208 +- .../vendor/go.uber.org/multierr/glide.yaml | 0 .../vendor/go.uber.org/zap/.codecov.yml | 0 .../vendor/go.uber.org/zap/.gitignore | 0 .../vendor/go.uber.org/zap/.readme.tmpl | 0 .../vendor/go.uber.org/zap/CHANGELOG.md | 564 +++++ .../vendor/go.uber.org/zap/CODE_OF_CONDUCT.md | 75 + .../vendor/go.uber.org/zap/CONTRIBUTING.md | 75 + .../vendor/go.uber.org/zap/FAQ.md | 164 ++ .../vendor/go.uber.org/zap/LICENSE.txt | 0 .../vendor/go.uber.org/zap/Makefile | 0 .../vendor/go.uber.org/zap/README.md | 134 ++ .../vendor/go.uber.org/zap/array.go | 0 .../vendor/go.uber.org/zap/buffer/buffer.go | 0 .../vendor/go.uber.org/zap/buffer/pool.go | 0 .../vendor/go.uber.org/zap/checklicense.sh | 0 .../vendor/go.uber.org/zap/config.go | 0 .../vendor/go.uber.org/zap/doc.go | 0 .../vendor/go.uber.org/zap/encoder.go | 0 .../vendor/go.uber.org/zap/error.go | 0 .../vendor/go.uber.org/zap/field.go | 0 .../vendor/go.uber.org/zap/flag.go | 0 .../vendor/go.uber.org/zap/glide.yaml | 0 .../vendor/go.uber.org/zap/global.go | 0 .../vendor/go.uber.org/zap/http_handler.go | 0 .../zap/internal/bufferpool/bufferpool.go | 0 .../go.uber.org/zap/internal/color/color.go | 0 .../go.uber.org/zap/internal/exit/exit.go | 0 .../vendor/go.uber.org/zap/level.go | 17 + .../vendor/go.uber.org/zap/logger.go | 71 +- .../vendor/go.uber.org/zap/options.go | 0 .../vendor/go.uber.org/zap/sink.go | 0 .../vendor/go.uber.org/zap/stacktrace.go | 176 ++ .../vendor/go.uber.org/zap/sugar.go | 0 .../vendor/go.uber.org/zap/time.go | 0 .../vendor/go.uber.org/zap/writer.go | 0 .../zap/zapcore/buffered_write_syncer.go | 0 .../vendor/go.uber.org/zap/zapcore/clock.go | 0 .../zap/zapcore/console_encoder.go | 0 .../vendor/go.uber.org/zap/zapcore/core.go | 0 .../vendor/go.uber.org/zap/zapcore/doc.go | 0 .../vendor/go.uber.org/zap/zapcore/encoder.go | 0 .../vendor/go.uber.org/zap/zapcore/entry.go | 0 .../vendor/go.uber.org/zap/zapcore/error.go | 0 .../vendor/go.uber.org/zap/zapcore/field.go | 0 .../vendor/go.uber.org/zap/zapcore/hook.go | 0 .../go.uber.org/zap/zapcore/increase_level.go | 0 .../go.uber.org/zap/zapcore/json_encoder.go | 2 +- .../vendor/go.uber.org/zap/zapcore/level.go | 12 + .../go.uber.org/zap/zapcore/level_strings.go | 0 .../go.uber.org/zap/zapcore/marshaler.go | 0 .../go.uber.org/zap/zapcore/memory_encoder.go | 0 .../zap/zapcore/reflected_encoder.go | 0 .../vendor/go.uber.org/zap/zapcore/sampler.go | 0 .../vendor/go.uber.org/zap/zapcore/tee.go | 0 .../go.uber.org/zap/zapcore/write_syncer.go | 0 .../vendor/golang.org/x/crypto/AUTHORS | 0 .../vendor/golang.org/x/crypto/CONTRIBUTORS | 0 .../vendor/golang.org/x/crypto/LICENSE | 0 .../vendor/golang.org/x/crypto/PATENTS | 0 .../x/crypto/curve25519/curve25519.go | 0 .../x/crypto/curve25519/internal/field/README | 0 .../x/crypto/curve25519/internal/field/fe.go | 0 .../curve25519/internal/field/fe_amd64.go | 3 + .../curve25519/internal/field/fe_amd64.s | 0 .../internal/field/fe_amd64_noasm.go | 0 .../curve25519/internal/field/fe_arm64.go | 0 .../curve25519/internal/field/fe_arm64.s | 0 .../internal/field/fe_arm64_noasm.go | 0 .../curve25519/internal/field/fe_generic.go | 0 .../curve25519/internal/field/sync.checkpoint | 0 .../crypto/curve25519/internal/field/sync.sh | 0 .../golang.org/x/crypto/ed25519/ed25519.go | 0 .../golang.org/x/crypto/pbkdf2/pbkdf2.go | 2 +- .../vendor/golang.org/x/net/LICENSE | 0 .../vendor/golang.org/x/net/PATENTS | 0 .../vendor/golang.org/x/net/html/atom/atom.go | 0 .../golang.org/x/net/html/atom/table.go | 0 .../vendor/golang.org/x/net/html/const.go | 0 .../vendor/golang.org/x/net/html/doc.go | 0 .../vendor/golang.org/x/net/html/doctype.go | 0 .../vendor/golang.org/x/net/html/entity.go | 0 .../vendor/golang.org/x/net/html/escape.go | 0 .../vendor/golang.org/x/net/html/foreign.go | 0 .../vendor/golang.org/x/net/html/node.go | 0 .../vendor/golang.org/x/net/html/parse.go | 2 +- .../vendor/golang.org/x/net/html/render.go | 4 +- .../vendor/golang.org/x/net/html/token.go | 12 +- .../vendor/golang.org/x/text/LICENSE | 0 .../vendor/golang.org/x/text/PATENTS | 0 .../x/text/internal/format/format.go | 0 .../x/text/internal/format/parser.go | 0 .../x/text/internal/language/common.go | 0 .../x/text/internal/language/compact.go | 0 .../text/internal/language/compact/compact.go | 0 .../internal/language/compact/language.go | 0 .../text/internal/language/compact/parents.go | 0 .../text/internal/language/compact/tables.go | 6 +- .../x/text/internal/language/compact/tags.go | 0 .../x/text/internal/language/compose.go | 0 .../x/text/internal/language/coverage.go | 0 .../x/text/internal/language/language.go | 0 .../x/text/internal/language/lookup.go | 4 +- .../x/text/internal/language/match.go | 0 .../x/text/internal/language/parse.go | 24 +- .../x/text/internal/language/tables.go | 868 ++++---- .../x/text/internal/language/tags.go | 0 .../golang.org/x/text/internal/tag/tag.go | 0 .../golang.org/x/text/language/coverage.go | 0 .../x/text/language/display/dict.go | 0 .../x/text/language/display/display.go | 2 +- .../x/text/language/display/lookup.go | 16 +- .../x/text/language/display/tables.go | 0 .../vendor/golang.org/x/text/language/doc.go | 44 +- .../golang.org/x/text/language/language.go | 0 .../golang.org/x/text/language/match.go | 2 +- .../golang.org/x/text/language/parse.go | 8 +- .../golang.org/x/text/language/tables.go | 18 +- .../vendor/golang.org/x/text/language/tags.go | 0 .../vendor/gopkg.in/yaml.v3/LICENSE | 0 .../vendor/gopkg.in/yaml.v3/NOTICE | 0 .../vendor/gopkg.in/yaml.v3/README.md | 150 ++ .../vendor/gopkg.in/yaml.v3/apic.go | 0 .../vendor/gopkg.in/yaml.v3/decode.go | 0 .../vendor/gopkg.in/yaml.v3/emitterc.go | 0 .../vendor/gopkg.in/yaml.v3/encode.go | 0 .../vendor/gopkg.in/yaml.v3/parserc.go | 0 .../vendor/gopkg.in/yaml.v3/readerc.go | 0 .../vendor/gopkg.in/yaml.v3/resolve.go | 0 .../vendor/gopkg.in/yaml.v3/scannerc.go | 0 .../vendor/gopkg.in/yaml.v3/sorter.go | 0 .../vendor/gopkg.in/yaml.v3/writerc.go | 0 .../vendor/gopkg.in/yaml.v3/yaml.go | 0 .../vendor/gopkg.in/yaml.v3/yamlh.go | 0 .../vendor/gopkg.in/yaml.v3/yamlprivateh.go | 0 .../server-discovery/vendor/modules.txt | 108 +- .../moul.io/zapfilter/.all-contributorsrc | 0 .../vendor/moul.io/zapfilter/.dockerignore | 0 .../vendor/moul.io/zapfilter/.editorconfig | 0 .../vendor/moul.io/zapfilter/.gitattributes | 0 .../vendor/moul.io/zapfilter/.gitignore | 0 .../vendor/moul.io/zapfilter/.golangci.yml | 0 .../vendor/moul.io/zapfilter/.releaserc.js | 0 .../vendor/moul.io/zapfilter/AUTHORS | 3 + .../vendor/moul.io/zapfilter/COPYRIGHT | 0 .../vendor/moul.io/zapfilter/LICENSE-APACHE | 0 .../vendor/moul.io/zapfilter/LICENSE-MIT | 0 .../vendor/moul.io/zapfilter/Makefile | 0 .../vendor/moul.io/zapfilter/README.md | 227 ++ .../vendor/moul.io/zapfilter/depaware.txt | 97 + .../vendor/moul.io/zapfilter/doc.go | 0 .../vendor/moul.io/zapfilter/package.json | 0 .../vendor/moul.io/zapfilter/rules.mk | 100 +- .../vendor/moul.io/zapfilter/zapfilter.go | 5 + 2112 files changed, 39735 insertions(+), 9857 deletions(-) delete mode 100644 aux/server-discovery/.env.example delete mode 100644 aux/server-discovery/go.mod delete mode 100644 aux/server-discovery/go.sum delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/inc_footer.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/expressions-help.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/login.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/logout.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/oauth2-authorize-client.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/pending-email-confirmation.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/request-password-reset.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/compose.settings.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/ui.settings.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/expressions-help.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/module.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/general.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/general.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/inc_footer.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/mfa-totp.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/expressions-help.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/profile.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/expressions-help.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/expressions-help.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/authorized-clients.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/change-password.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/create-password.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/error-internal.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/inc_header.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/inc_nav.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/logout.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/mfa-totp-disable.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/mfa.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/password-reset-requested.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/pending-email-confirmation.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/reset-password.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/security.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/sessions.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/signup.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.settings.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/expressions-help.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/locale/input.go delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/logger/logger.go delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/DB.gen.go delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/DB.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/HTTPClient.gen.go delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/HTTPClient.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/HTTPServer.gen.go delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/HTTPServer.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/RBAC.gen.go delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/RBAC.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/SCIM.gen.go delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/SCIM.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/SMTP.gen.go delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/SMTP.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/actionLog.gen.go delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/actionLog.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/apigw.gen.go delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/apigw.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/auth.gen.go delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/auth.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/corredor.gen.go delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/corredor.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/environment.gen.go delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/environment.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/eventbus.gen.go delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/eventbus.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/federation.gen.go delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/federation.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/limit.gen.go delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/limit.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/locale.gen.go delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/locale.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/log.gen.go delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/log.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/messagebus.gen.go delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/messagebus.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/monitor.gen.go delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/monitor.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/objectStore.gen.go delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/objectStore.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/plugins.gen.go delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/plugins.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/provision.gen.go delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/provision.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/seeder.gen.go delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/seeder.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/sentry.gen.go delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/sentry.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/template.gen.go delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/template.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/upgrade.gen.go delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/upgrade.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/waitFor.gen.go delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/waitFor.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/websocket.gen.go delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/websocket.yaml delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/workflow.gen.go delete mode 100644 aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/workflow.yaml delete mode 100644 aux/server-discovery/vendor/github.com/dgrijalva/jwt-go/.travis.yml delete mode 100644 aux/server-discovery/vendor/github.com/go-chi/chi/.travis.yml delete mode 100644 aux/server-discovery/vendor/github.com/go-chi/chi/chain.go delete mode 100644 aux/server-discovery/vendor/github.com/go-chi/chi/chi.go delete mode 100644 aux/server-discovery/vendor/github.com/go-chi/chi/context.go delete mode 100644 aux/server-discovery/vendor/github.com/go-chi/chi/middleware/closenotify17.go delete mode 100644 aux/server-discovery/vendor/github.com/go-chi/chi/middleware/closenotify18.go delete mode 100644 aux/server-discovery/vendor/github.com/go-chi/chi/middleware/compress.go delete mode 100644 aux/server-discovery/vendor/github.com/go-chi/chi/middleware/compress18.go delete mode 100644 aux/server-discovery/vendor/github.com/go-chi/chi/middleware/content_type.go delete mode 100644 aux/server-discovery/vendor/github.com/go-chi/chi/middleware/get_head.go delete mode 100644 aux/server-discovery/vendor/github.com/go-chi/chi/middleware/heartbeat.go delete mode 100644 aux/server-discovery/vendor/github.com/go-chi/chi/middleware/logger.go delete mode 100644 aux/server-discovery/vendor/github.com/go-chi/chi/middleware/middleware.go delete mode 100644 aux/server-discovery/vendor/github.com/go-chi/chi/middleware/profiler.go delete mode 100644 aux/server-discovery/vendor/github.com/go-chi/chi/middleware/realip.go delete mode 100644 aux/server-discovery/vendor/github.com/go-chi/chi/middleware/recoverer.go delete mode 100644 aux/server-discovery/vendor/github.com/go-chi/chi/middleware/request_id.go delete mode 100644 aux/server-discovery/vendor/github.com/go-chi/chi/middleware/strip.go delete mode 100644 aux/server-discovery/vendor/github.com/go-chi/chi/middleware/terminal.go delete mode 100644 aux/server-discovery/vendor/github.com/go-chi/chi/middleware/throttle.go delete mode 100644 aux/server-discovery/vendor/github.com/go-chi/chi/middleware/url_format.go delete mode 100644 aux/server-discovery/vendor/github.com/go-chi/chi/middleware/value.go delete mode 100644 aux/server-discovery/vendor/github.com/go-chi/chi/middleware/wrap_writer.go delete mode 100644 aux/server-discovery/vendor/github.com/go-chi/chi/middleware/wrap_writer17.go delete mode 100644 aux/server-discovery/vendor/github.com/go-chi/chi/middleware/wrap_writer18.go delete mode 100644 aux/server-discovery/vendor/github.com/go-chi/chi/mux.go delete mode 100644 aux/server-discovery/vendor/github.com/go-chi/chi/tree.go delete mode 100644 aux/server-discovery/vendor/github.com/go-chi/chi/v5/.gitignore delete mode 100644 aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/content_charset.go delete mode 100644 aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/nocache.go delete mode 100644 aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/timeout.go delete mode 100644 aux/server-discovery/vendor/github.com/spf13/cast/.travis.yml delete mode 100644 aux/server-discovery/vendor/github.com/spf13/cobra/.travis.yml delete mode 100644 aux/server-discovery/vendor/github.com/spf13/cobra/zsh_completions.go delete mode 100644 aux/server-discovery/vendor/go.uber.org/atomic/.travis.yml delete mode 100644 aux/server-discovery/vendor/go.uber.org/multierr/.travis.yml delete mode 100644 aux/server-discovery/vendor/go.uber.org/zap/stacktrace.go delete mode 100644 aux/server-discovery/vendor/golang.org/x/net/AUTHORS delete mode 100644 aux/server-discovery/vendor/golang.org/x/net/CONTRIBUTORS delete mode 100644 aux/server-discovery/vendor/golang.org/x/text/AUTHORS delete mode 100644 aux/server-discovery/vendor/golang.org/x/text/CONTRIBUTORS delete mode 100644 aux/server-discovery/vendor/golang.org/x/text/language/go1_1.go delete mode 100644 aux/server-discovery/vendor/golang.org/x/text/language/go1_2.go rename {aux => extra}/server-discovery/.editorconfig (100%) rename {aux => extra}/server-discovery/.gitignore (100%) rename {aux => extra}/server-discovery/Dockerfile (100%) rename {aux => extra}/server-discovery/Dockerfile.snapshot (100%) rename {aux => extra}/server-discovery/Makefile (97%) rename {aux => extra}/server-discovery/Makefile.inc (100%) rename {aux => extra}/server-discovery/app/app.go (94%) rename {aux => extra}/server-discovery/app/boot_levels.go (89%) rename {aux => extra}/server-discovery/app/servers.go (88%) rename {aux => extra}/server-discovery/docker-compose.yaml (100%) create mode 100644 extra/server-discovery/go.mod create mode 100644 extra/server-discovery/go.sum rename {aux => extra}/server-discovery/indexer/internal.go (100%) rename {aux => extra}/server-discovery/indexer/service.go (87%) rename {aux => extra}/server-discovery/main.go (83%) rename {aux => extra}/server-discovery/pkg/api/client.go (98%) rename {aux => extra}/server-discovery/pkg/api/server/cors.go (100%) rename {aux => extra}/server-discovery/pkg/api/server/demux.go (100%) rename {aux => extra}/server-discovery/pkg/api/server/handlers.go (92%) rename {aux => extra}/server-discovery/pkg/api/server/logger.go (100%) rename {aux => extra}/server-discovery/pkg/api/server/middleware.go (100%) rename {aux => extra}/server-discovery/pkg/api/server/server.go (97%) rename {aux => extra}/server-discovery/pkg/api/server/waitfor.go (100%) rename {aux => extra}/server-discovery/pkg/auth/identity.go (100%) rename {aux => extra}/server-discovery/pkg/auth/identity_context.go (100%) rename {aux => extra}/server-discovery/pkg/auth/interfaces.go (100%) rename {aux => extra}/server-discovery/pkg/auth/token_issuer.go (100%) rename {aux => extra}/server-discovery/pkg/auth/token_middleware.go (100%) rename {aux => extra}/server-discovery/pkg/es/es.go (96%) rename {aux => extra}/server-discovery/pkg/es/mapping/mapping.go (98%) rename {aux => extra}/server-discovery/pkg/es/mapping/mapping_test.go (100%) rename {aux => extra}/server-discovery/pkg/es/reindex/reindex.go (99%) rename {aux => extra}/server-discovery/pkg/healthcheck/check.go (100%) rename {aux => extra}/server-discovery/pkg/healthcheck/check_test.go (100%) rename {aux => extra}/server-discovery/pkg/healthcheck/http_handler.go (100%) rename {aux => extra}/server-discovery/pkg/options/HttpServer.go (100%) rename {aux => extra}/server-discovery/pkg/options/corteza.go (100%) rename {aux => extra}/server-discovery/pkg/options/environment.go (100%) rename {aux => extra}/server-discovery/pkg/options/es.go (100%) rename {aux => extra}/server-discovery/pkg/options/helpers.go (100%) rename {aux => extra}/server-discovery/pkg/options/indexer.go (100%) rename {aux => extra}/server-discovery/pkg/options/options.go (100%) rename {aux => extra}/server-discovery/pkg/options/searcher.go (100%) rename {aux => extra}/server-discovery/pkg/options/waitFor.go (100%) rename {aux => extra}/server-discovery/searcher/healthcheck.go (100%) rename {aux => extra}/server-discovery/searcher/rest/conv.go (100%) rename {aux => extra}/server-discovery/searcher/rest/es.go (100%) rename {aux => extra}/server-discovery/searcher/rest/handlers/search.go (92%) rename {aux => extra}/server-discovery/searcher/rest/request/request.go (100%) rename {aux => extra}/server-discovery/searcher/rest/router.go (62%) rename {aux => extra}/server-discovery/searcher/rest/search.go (98%) rename {aux => extra}/server-discovery/searcher/service.go (89%) create mode 100644 extra/server-discovery/vendor/github.com/PaesslerAG/gval/.gitignore create mode 100644 extra/server-discovery/vendor/github.com/PaesslerAG/gval/.travis.yml create mode 100644 extra/server-discovery/vendor/github.com/PaesslerAG/gval/LICENSE create mode 100644 extra/server-discovery/vendor/github.com/PaesslerAG/gval/README.md create mode 100644 extra/server-discovery/vendor/github.com/PaesslerAG/gval/evaluable.go create mode 100644 extra/server-discovery/vendor/github.com/PaesslerAG/gval/functions.go create mode 100644 extra/server-discovery/vendor/github.com/PaesslerAG/gval/gval.go create mode 100644 extra/server-discovery/vendor/github.com/PaesslerAG/gval/language.go create mode 100644 extra/server-discovery/vendor/github.com/PaesslerAG/gval/operator.go create mode 100644 extra/server-discovery/vendor/github.com/PaesslerAG/gval/parse.go create mode 100644 extra/server-discovery/vendor/github.com/PaesslerAG/gval/parser.go create mode 100644 extra/server-discovery/vendor/github.com/PaesslerAG/gval/prtg-batmin-gopher.png rename {aux => extra}/server-discovery/vendor/github.com/SentimensRG/ctx/.gitignore (100%) rename {aux => extra}/server-discovery/vendor/github.com/SentimensRG/ctx/LICENSE (100%) create mode 100644 extra/server-discovery/vendor/github.com/SentimensRG/ctx/README.md rename {aux => extra}/server-discovery/vendor/github.com/SentimensRG/ctx/ctx.go (100%) create mode 100644 extra/server-discovery/vendor/github.com/SentimensRG/ctx/sigctx/README.md rename {aux => extra}/server-discovery/vendor/github.com/SentimensRG/ctx/sigctx/sigctx.go (100%) create mode 100644 extra/server-discovery/vendor/github.com/asaskevich/govalidator/.gitignore create mode 100644 extra/server-discovery/vendor/github.com/asaskevich/govalidator/.travis.yml create mode 100644 extra/server-discovery/vendor/github.com/asaskevich/govalidator/CODE_OF_CONDUCT.md create mode 100644 extra/server-discovery/vendor/github.com/asaskevich/govalidator/CONTRIBUTING.md create mode 100644 extra/server-discovery/vendor/github.com/asaskevich/govalidator/LICENSE create mode 100644 extra/server-discovery/vendor/github.com/asaskevich/govalidator/README.md create mode 100644 extra/server-discovery/vendor/github.com/asaskevich/govalidator/arrays.go create mode 100644 extra/server-discovery/vendor/github.com/asaskevich/govalidator/converter.go create mode 100644 extra/server-discovery/vendor/github.com/asaskevich/govalidator/doc.go create mode 100644 extra/server-discovery/vendor/github.com/asaskevich/govalidator/error.go create mode 100644 extra/server-discovery/vendor/github.com/asaskevich/govalidator/numerics.go create mode 100644 extra/server-discovery/vendor/github.com/asaskevich/govalidator/patterns.go create mode 100644 extra/server-discovery/vendor/github.com/asaskevich/govalidator/types.go create mode 100644 extra/server-discovery/vendor/github.com/asaskevich/govalidator/utils.go create mode 100644 extra/server-discovery/vendor/github.com/asaskevich/govalidator/validator.go create mode 100644 extra/server-discovery/vendor/github.com/asaskevich/govalidator/wercker.yml rename {aux => extra}/server-discovery/vendor/github.com/aymerick/douceur/LICENSE (100%) rename {aux => extra}/server-discovery/vendor/github.com/aymerick/douceur/css/declaration.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/aymerick/douceur/css/rule.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/aymerick/douceur/css/stylesheet.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/aymerick/douceur/parser/parser.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/.gitignore (100%) create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/CONTRIBUTING.md rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/DCO (100%) create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/DEV.md rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/LICENSE (100%) create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/README.md rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/crowdin.yml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/docker-compose.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/locale.go (100%) create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/security.md create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/config.yaml rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/authorized-clients.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/change-password.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/create-password.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/error-internal.yaml (100%) create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/inc_footer.yaml rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/inc_header.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/inc_nav.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/login.yaml (92%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/logout.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/mfa-totp-disable.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/mfa-totp.yaml (72%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/mfa.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/oauth2-authorize-client.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/password-reset-requested.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/pending-email-confirmation.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/profile.yaml (81%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/request-password-reset.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/reset-password.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/security.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/sessions.yaml (75%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/signup.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/automation/access_control.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/automation/access-control.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/automation/session.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/automation/trigger.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/automation/workflow.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/access_control.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/access-control.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/attachment.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/chart.yaml (100%) create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/field.yaml rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/module.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/namespace.yaml (99%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/notifications.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/page.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/record.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/federation/access_control.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/federation/access-control.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/federation/exposed_module.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/federation/exposed-module.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/federation/module_mapping.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/federation/module-mapping.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/federation/node_sync.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/federation/node-sync.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/federation/node.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/federation/shared_module.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/federation/shared-module.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/internal/auth.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/access_control.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/access-control.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/apigw_filter.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/apigw-filter.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/apigw_route.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/apigw-route.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/application.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/attachment.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/auth_client.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/auth-client.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/auth.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/queue.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/reminder.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/report.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/role.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/sink.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/statistics.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/template.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/user.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/admin.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/automation.permissions.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/automation.scripts.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/automation.sessions.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/automation.workflows.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/compose.automation.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/compose.permissions.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/compose.settings.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/dashboard.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/federation.nodes.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/federation.permissions.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/navigation.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de}/corteza-webapp-admin/notification.yaml (99%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.actionlog.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.apigw.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.applications.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.authclients.yaml (97%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.permissions.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.queues.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.roles.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.settings.yaml (98%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.templates.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.users.yaml (86%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/ui.settings.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/ui.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/block.yaml (98%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/chart.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/field.yaml (97%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/general.yaml (98%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/module.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/namespace.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/navigation.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de}/corteza-webapp-compose/notification.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/onboarding.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/page.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/permission.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/preview.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/sidebar.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-one/app.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-one/layout.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-one/navigation.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-reporter/create.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-reporter/edit.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-reporter/general.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-reporter/list.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-reporter/navigation.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-reporter/notification.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-reporter/permission.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-workflow/navigation.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-workflow/permission.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/config.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/authorized-clients.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/change-password.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/create-password.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/error-internal.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/inc_footer.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/inc_header.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/inc_nav.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en}/corteza-server/auth/login.yaml (87%) create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/logout.yaml rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/mfa-totp-disable.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/mfa-totp.yaml (82%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/mfa.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en}/corteza-server/auth/oauth2-authorize-client.yaml (63%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/password-reset-requested.yaml (80%) create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/pending-email-confirmation.yaml rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en}/corteza-server/auth/profile.yaml (67%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en}/corteza-server/auth/request-password-reset.yaml (65%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/reset-password.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/security.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/sessions.yaml (73%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/signup.yaml (87%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/automation/access_control.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/automation/access-control.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/automation/session.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/automation/trigger.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/automation/workflow.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/access_control.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/access-control.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/attachment.yaml (89%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/chart.yaml (100%) create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/field.yaml rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/module.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/namespace.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/notifications.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/page.yaml (100%) create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/record-field.yaml rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/record.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/access_control.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/access-control.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/exposed_module.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/exposed-module.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/module_mapping.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/module-mapping.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/node_sync.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/node-sync.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/node.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/shared_module.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/shared-module.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/internal/auth.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/access_control.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/access-control.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/apigw_filter.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/apigw-filter.yaml (69%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/apigw_route.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/apigw-route.yaml (90%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/application.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/attachment.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/auth_client.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/auth-client.yaml (90%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/auth.yaml (100%) create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/credentials.yaml create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/dal-connection.yaml create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/dal-sensitivity-level.yaml create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/data-privacy.yaml rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/queue.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/reminder.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/report.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/role.yaml (100%) create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/settings.yaml rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/sink.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/statistics.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/template.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/user.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/admin.yaml (94%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/automation.scripts.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/automation.sessions.yaml (93%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/automation.workflows.yaml (80%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/compose.automation.yaml (100%) create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/compose.settings.yaml rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/dashboard.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/expressions-help.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/federation.nodes.yaml (96%) create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/general.yaml rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/navigation.yaml (91%) create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/notification.yaml rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/permissions.yaml (81%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.actionlog.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.apigw.yaml (50%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.applications.yaml (92%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.authclients.yaml (89%) create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.connections.yaml rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.email.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.queues.yaml (80%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.roles.yaml (85%) create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.sensitivityLevel.yaml rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.settings.yaml (89%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.templates.yaml (90%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.users.yaml (75%) create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/ui.settings.yaml rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/ui.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/block.yaml (83%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/chart.yaml (87%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/field.yaml (75%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/general.yaml (88%) create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/module.yaml rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/namespace.yaml (72%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/navigation.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/notification.yaml (83%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/onboarding.yaml (88%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/page.yaml (72%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/permissions.yaml (76%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/preview.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/resource-translator.yaml (62%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/sidebar.yaml (56%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-discovery/filters.yaml (92%) create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-discovery/general.yaml create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-discovery/navigation.yaml create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-discovery/notification.yaml rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-discovery/search.yaml (69%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-one/app.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-one/layout.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-one/navigation.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-one/onboarding-tour.yaml (100%) create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-privacy/dashboard.yaml create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-privacy/data-overview.yaml create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-privacy/general.yaml create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-privacy/map.yaml create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-privacy/module-records.yaml rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-discovery => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-privacy}/navigation.yaml (100%) create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-privacy/notification.yaml create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-privacy/request.yaml create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-privacy/sensitive-data.yaml rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/builder.yaml (57%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/create.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/datasources.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/display-element.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/edit.yaml (75%) create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/general.yaml rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/list.yaml (82%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/navigation.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/notification.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/permissions.yaml (51%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/scenarios.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/sidebar.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/view.yaml (67%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/configurator.yaml (54%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/editor.yaml (98%) create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/general.yaml rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/help.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/navigation.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/notification.yaml (87%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/permissions.yaml (64%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/steps.yaml (61%) create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/config.yaml create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/authorized-clients.yaml create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/change-password.yaml create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/create-password.yaml create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/error-internal.yaml create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/inc_footer.yaml create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/inc_header.yaml create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/inc_nav.yaml create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/login.yaml create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/logout.yaml create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/mfa-totp-disable.yaml create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/mfa-totp.yaml create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/mfa.yaml create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/oauth2-authorize-client.yaml create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/password-reset-requested.yaml create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/pending-email-confirmation.yaml create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/profile.yaml create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/request-password-reset.yaml create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/reset-password.yaml create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/security.yaml create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/sessions.yaml create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/signup.yaml rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/automation/access_control.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/automation/access-control.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/automation/session.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/automation/trigger.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/automation/workflow.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/access_control.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/access-control.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/attachment.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/chart.yaml (100%) create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/field.yaml rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/module.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr}/corteza-server/compose/namespace.yaml (99%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/notifications.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/page.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/record.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/federation/access_control.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/federation/access-control.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/federation/exposed_module.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/federation/exposed-module.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/federation/module_mapping.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/federation/module-mapping.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/federation/node_sync.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/federation/node-sync.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/federation/node.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/federation/shared_module.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/federation/shared-module.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/internal/auth.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/access_control.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/access-control.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/apigw_filter.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/apigw-filter.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/apigw_route.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/apigw-route.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/application.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/attachment.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/auth_client.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/auth-client.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/auth.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/queue.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/reminder.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/report.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/role.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/sink.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/statistics.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/template.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/user.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/admin.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/automation.permissions.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/automation.scripts.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/automation.sessions.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/automation.workflows.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/compose.automation.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/compose.permissions.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/compose.settings.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/dashboard.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/federation.nodes.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/federation.permissions.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/navigation.yaml (100%) create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/notification.yaml rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.actionlog.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.apigw.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.applications.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr}/corteza-webapp-admin/system.authclients.yaml (97%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.permissions.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.queues.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.roles.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.settings.yaml (98%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.templates.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr}/corteza-webapp-admin/system.users.yaml (86%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/ui.settings.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/ui.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/block.yaml (98%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/chart.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr}/corteza-webapp-compose/field.yaml (97%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/general.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/module.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/namespace.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/navigation.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr}/corteza-webapp-compose/notification.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/onboarding.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/page.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/permission.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/preview.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/sidebar.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-one/app.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-one/layout.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-one/navigation.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-reporter/create.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-reporter/edit.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-reporter/general.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-reporter/list.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-reporter/navigation.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-reporter/notification.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-reporter/permission.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-workflow/navigation.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-workflow/permission.yaml (100%) create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/config.yaml rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/authorized-clients.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/change-password.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro}/corteza-server/auth/create-password.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/error-internal.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/inc_footer.yaml (50%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/inc_header.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/inc_nav.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/login.yaml (93%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/logout.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro}/corteza-server/auth/mfa-totp-disable.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro}/corteza-server/auth/mfa-totp.yaml (82%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro}/corteza-server/auth/mfa.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro}/corteza-server/auth/oauth2-authorize-client.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro}/corteza-server/auth/password-reset-requested.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro}/corteza-server/auth/pending-email-confirmation.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro}/corteza-server/auth/profile.yaml (99%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro}/corteza-server/auth/request-password-reset.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro}/corteza-server/auth/reset-password.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro}/corteza-server/auth/security.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro}/corteza-server/auth/sessions.yaml (68%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro}/corteza-server/auth/signup.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/automation/access_control.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/automation/access-control.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/automation/session.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/automation/trigger.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/automation/workflow.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/access_control.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/access-control.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/attachment.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/chart.yaml (100%) create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/field.yaml rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/module.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro}/corteza-server/compose/namespace.yaml (99%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/notifications.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/page.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/record.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/federation/access_control.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/federation/access-control.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/federation/exposed_module.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/federation/exposed-module.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/federation/module_mapping.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/federation/module-mapping.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/federation/node_sync.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/federation/node-sync.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/federation/node.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/federation/shared_module.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/federation/shared-module.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/internal/auth.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/access_control.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/access-control.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/apigw_filter.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/apigw-filter.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/apigw_route.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/apigw-route.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/application.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/attachment.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/auth_client.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/auth-client.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/auth.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/queue.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/reminder.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/report.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/role.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/sink.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/statistics.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/template.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/user.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/admin.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/automation.permissions.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/automation.scripts.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/automation.sessions.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/automation.workflows.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/compose.automation.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/compose.permissions.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/compose.settings.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/dashboard.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/federation.nodes.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/federation.permissions.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/navigation.yaml (100%) create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/notification.yaml rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.actionlog.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.apigw.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.applications.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.authclients.yaml (97%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.permissions.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.queues.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.roles.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro}/corteza-webapp-admin/system.settings.yaml (98%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.templates.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro}/corteza-webapp-admin/system.users.yaml (86%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/ui.settings.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/ui.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro}/corteza-webapp-compose/block.yaml (98%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/chart.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro}/corteza-webapp-compose/field.yaml (97%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/general.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/module.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/namespace.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/navigation.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro}/corteza-webapp-compose/notification.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/onboarding.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/page.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/permission.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/preview.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/sidebar.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-one/app.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-one/layout.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-one/navigation.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-reporter/create.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-reporter/edit.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-reporter/general.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-reporter/list.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-reporter/navigation.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-reporter/notification.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-reporter/permission.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-workflow/navigation.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-workflow/permission.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/schema/config.json (100%) create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/config.yaml rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/authorized-clients.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/change-password.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl}/corteza-server/auth/create-password.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/error-internal.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/inc_footer.yaml (50%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/inc_header.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/inc_nav.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/login.yaml (92%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/logout.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/mfa-totp-disable.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl}/corteza-server/auth/mfa-totp.yaml (82%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/mfa.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl}/corteza-server/auth/oauth2-authorize-client.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl}/corteza-server/auth/password-reset-requested.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl}/corteza-server/auth/pending-email-confirmation.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/profile.yaml (90%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/request-password-reset.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/reset-password.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/security.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/sessions.yaml (75%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/signup.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/automation/access_control.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/automation/access-control.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/automation/session.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/automation/trigger.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/automation/workflow.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/access_control.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/access-control.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/attachment.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/chart.yaml (100%) create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/field.yaml rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/module.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/namespace.yaml (99%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/notifications.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/page.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/record.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/federation/access_control.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/federation/access-control.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/federation/exposed_module.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/federation/exposed-module.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/federation/module_mapping.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/federation/module-mapping.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/federation/node_sync.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/federation/node-sync.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/federation/node.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/federation/shared_module.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/federation/shared-module.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/internal/auth.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/access_control.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/access-control.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/apigw_filter.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/apigw-filter.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/apigw_route.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/apigw-route.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/application.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/attachment.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/auth_client.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/auth-client.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/auth.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/queue.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/reminder.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/report.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/role.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/sink.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/statistics.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/template.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/user.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/admin.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/automation.permissions.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/automation.scripts.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/automation.sessions.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/automation.workflows.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/compose.automation.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/compose.permissions.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/compose.settings.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/dashboard.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/federation.nodes.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/federation.permissions.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/navigation.yaml (100%) create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/notification.yaml rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.actionlog.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.apigw.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.applications.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl}/corteza-webapp-admin/system.authclients.yaml (97%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.permissions.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.queues.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.roles.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl}/corteza-webapp-admin/system.settings.yaml (98%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.templates.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl}/corteza-webapp-admin/system.users.yaml (86%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/ui.settings.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/ui.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl}/corteza-webapp-compose/block.yaml (98%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/chart.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl}/corteza-webapp-compose/field.yaml (97%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/general.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/module.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/namespace.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/navigation.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl}/corteza-webapp-compose/notification.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/onboarding.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/page.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/permission.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/preview.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/sidebar.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-one/app.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-one/layout.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-one/navigation.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-reporter/create.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-reporter/edit.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-reporter/general.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-reporter/list.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-reporter/navigation.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-reporter/notification.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-reporter/permission.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-workflow/navigation.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-workflow/permission.yaml (100%) create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/config.yaml rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk}/corteza-server/auth/authorized-clients.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk}/corteza-server/auth/change-password.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk}/corteza-server/auth/create-password.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk}/corteza-server/auth/error-internal.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/inc_footer.yaml (50%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk}/corteza-server/auth/inc_header.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk}/corteza-server/auth/inc_nav.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/login.yaml (92%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk}/corteza-server/auth/logout.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk}/corteza-server/auth/mfa-totp-disable.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/mfa-totp.yaml (82%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk}/corteza-server/auth/mfa.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk}/corteza-server/auth/oauth2-authorize-client.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk}/corteza-server/auth/password-reset-requested.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk}/corteza-server/auth/pending-email-confirmation.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/profile.yaml (90%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk}/corteza-server/auth/request-password-reset.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk}/corteza-server/auth/reset-password.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk}/corteza-server/auth/security.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk}/corteza-server/auth/sessions.yaml (68%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk}/corteza-server/auth/signup.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/automation/access_control.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/automation/access-control.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/automation/session.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/automation/trigger.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/automation/workflow.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/access_control.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/access-control.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/attachment.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/chart.yaml (100%) create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/field.yaml rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/module.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk}/corteza-server/compose/namespace.yaml (99%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/notifications.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/page.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/record.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/federation/access_control.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/federation/access-control.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/federation/exposed_module.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/federation/exposed-module.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/federation/module_mapping.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/federation/module-mapping.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/federation/node_sync.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/federation/node-sync.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/federation/node.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/federation/shared_module.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/federation/shared-module.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/internal/auth.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/access_control.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/access-control.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/apigw_filter.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/apigw-filter.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/apigw_route.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/apigw-route.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/application.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/attachment.yaml (100%) rename aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/auth_client.yaml => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/auth-client.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/auth.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/queue.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/reminder.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/report.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/role.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/sink.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/statistics.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/template.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/user.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/admin.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/automation.permissions.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/automation.scripts.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/automation.sessions.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/automation.workflows.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/compose.automation.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/compose.permissions.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/compose.settings.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/dashboard.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/federation.nodes.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/federation.permissions.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/navigation.yaml (100%) create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/notification.yaml rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.actionlog.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.apigw.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.applications.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk}/corteza-webapp-admin/system.authclients.yaml (97%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.permissions.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.queues.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.roles.yaml (100%) create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.settings.yaml rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.templates.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk}/corteza-webapp-admin/system.users.yaml (86%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/ui.settings.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/ui.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk}/corteza-webapp-compose/block.yaml (98%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/chart.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk}/corteza-webapp-compose/field.yaml (97%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/general.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/module.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/namespace.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/navigation.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de => extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk}/corteza-webapp-compose/notification.yaml (98%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/onboarding.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/page.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/permission.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/preview.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/sidebar.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-one/app.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-one/layout.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-one/navigation.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-reporter/create.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-reporter/edit.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-reporter/general.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-reporter/list.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-reporter/navigation.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-reporter/notification.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-reporter/permission.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-workflow/navigation.yaml (100%) rename {aux => extra}/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-workflow/permission.yaml (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-server => extra/server-discovery/vendor/github.com/cortezaproject/corteza/server}/pkg/api/debug.go (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-server => extra/server-discovery/vendor/github.com/cortezaproject/corteza/server}/pkg/api/ipaddr.go (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-server => extra/server-discovery/vendor/github.com/cortezaproject/corteza/server}/pkg/api/response.go (98%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-server => extra/server-discovery/vendor/github.com/cortezaproject/corteza/server}/pkg/cli/commands.go (97%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-server => extra/server-discovery/vendor/github.com/cortezaproject/corteza/server}/pkg/cli/context.go (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-server => extra/server-discovery/vendor/github.com/cortezaproject/corteza/server}/pkg/cli/env.go (95%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-server => extra/server-discovery/vendor/github.com/cortezaproject/corteza/server}/pkg/cli/helpers.go (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-server => extra/server-discovery/vendor/github.com/cortezaproject/corteza/server}/pkg/errors/error.go (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-server => extra/server-discovery/vendor/github.com/cortezaproject/corteza/server}/pkg/errors/http.go (87%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-server => extra/server-discovery/vendor/github.com/cortezaproject/corteza/server}/pkg/errors/json.go (91%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-server => extra/server-discovery/vendor/github.com/cortezaproject/corteza/server}/pkg/errors/kind.go (92%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-server => extra/server-discovery/vendor/github.com/cortezaproject/corteza/server}/pkg/errors/meta.go (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-server => extra/server-discovery/vendor/github.com/cortezaproject/corteza/server}/pkg/errors/modifiers.go (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-server => extra/server-discovery/vendor/github.com/cortezaproject/corteza/server}/pkg/errors/stack.go (100%) create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/expr.go create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/expr_type_comparators.go create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/expr_types.gen.go create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/expr_types.go create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/expr_types.yaml create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/func_arr.go create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/func_generic.go create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/func_json.go create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/func_num.go create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/func_str.go create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/func_time.go create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/parser.go create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/values.go create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/vars.go create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/filter/filter.go create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/filter/pagination.go create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/filter/sorting.go create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/filter/state.go create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/gvalfnc/generic.go create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/gvalfnc/string.go create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/gvalfnc/time.go create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/handle/handle.go create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/http/client.go create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/http/default.go create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/http/file_server.go create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/http/request.go create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/http/test_data/file_server/index.html create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/http/test_data/file_server/sub/index.html create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/http/test_data/file_server/sub/test.html create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/http/test_data/file_server/test.html rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-server => extra/server-discovery/vendor/github.com/cortezaproject/corteza/server}/pkg/locale/context.go (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-server => extra/server-discovery/vendor/github.com/cortezaproject/corteza/server}/pkg/locale/http.go (100%) create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/locale/input.go rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-server => extra/server-discovery/vendor/github.com/cortezaproject/corteza/server}/pkg/locale/load.go (96%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-server => extra/server-discovery/vendor/github.com/cortezaproject/corteza/server}/pkg/locale/locale.go (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-server => extra/server-discovery/vendor/github.com/cortezaproject/corteza/server}/pkg/locale/resource.go (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-server => extra/server-discovery/vendor/github.com/cortezaproject/corteza/server}/pkg/locale/service.go (93%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-server => extra/server-discovery/vendor/github.com/cortezaproject/corteza/server}/pkg/logger/context.go (96%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-server => extra/server-discovery/vendor/github.com/cortezaproject/corteza/server}/pkg/logger/handlers.go (100%) create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/logger/logger.go rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-server => extra/server-discovery/vendor/github.com/cortezaproject/corteza/server}/pkg/logger/masked.go (100%) create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/logger/rrbuf.go rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-server => extra/server-discovery/vendor/github.com/cortezaproject/corteza/server}/pkg/options/DB.go (90%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-server => extra/server-discovery/vendor/github.com/cortezaproject/corteza/server}/pkg/options/HTTPClient.go (61%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-server => extra/server-discovery/vendor/github.com/cortezaproject/corteza/server}/pkg/options/HTTPServer.go (57%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-server => extra/server-discovery/vendor/github.com/cortezaproject/corteza/server}/pkg/options/auth.go (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-server => extra/server-discovery/vendor/github.com/cortezaproject/corteza/server}/pkg/options/corredor.go (86%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-server => extra/server-discovery/vendor/github.com/cortezaproject/corteza/server}/pkg/options/environment.go (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-server => extra/server-discovery/vendor/github.com/cortezaproject/corteza/server}/pkg/options/helpers.go (82%) create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/options/options.gen.go rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-server => extra/server-discovery/vendor/github.com/cortezaproject/corteza/server}/pkg/options/options.go (85%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-server => extra/server-discovery/vendor/github.com/cortezaproject/corteza/server}/pkg/options/waitFor.go (100%) rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-server => extra/server-discovery/vendor/github.com/cortezaproject/corteza/server}/pkg/payload/util.go (68%) create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/ql/ast_nodes.go create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/ql/lexer.go create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/ql/parser.go create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/ql/parser_nodes.go create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/ql/token_codes.go create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/ql/token_consumers.go create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/ql/util.go rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-server => extra/server-discovery/vendor/github.com/cortezaproject/corteza/server}/pkg/rand/rand.go (100%) create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/slice/ints.go create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/slice/keys.go create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/slice/strings.go create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/sql/json.go rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-server => extra/server-discovery/vendor/github.com/cortezaproject/corteza/server}/pkg/version/version.go (80%) create mode 100644 extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/xss/rich_text.go rename {aux => extra}/server-discovery/vendor/github.com/davecgh/go-spew/LICENSE (100%) rename {aux => extra}/server-discovery/vendor/github.com/davecgh/go-spew/spew/bypass.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/davecgh/go-spew/spew/bypasssafe.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/davecgh/go-spew/spew/common.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/davecgh/go-spew/spew/config.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/davecgh/go-spew/spew/doc.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/davecgh/go-spew/spew/dump.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/davecgh/go-spew/spew/format.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/davecgh/go-spew/spew/spew.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/LICENSE (100%) create mode 100644 extra/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/README.md rename {aux => extra}/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/compressedbytepoints.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/curve.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/doc.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/ecdh.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/ellipticadaptor.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/error.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/field.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/genstatics.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/loadprecomputed.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/modnscalar.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/nonce.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/privkey.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/pubkey.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/.codecov.yml (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/.dockerignore (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/.gitignore (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/LICENSE (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/Makefile (100%) create mode 100644 extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/README.md rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/doc.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/elasticsearch.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api._.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.bulk.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.aliases.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.allocation.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.count.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.fielddata.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.health.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.help.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.indices.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.master.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.nodeattrs.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.nodes.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.pending_tasks.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.plugins.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.recovery.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.repositories.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.segments.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.shards.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.snapshots.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.tasks.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.templates.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.thread_pool.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.clear_scroll.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.allocation_explain.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.delete_component_template.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.delete_voting_config_exclusions.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.exists_component_template.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.get_component_template.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.get_settings.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.health.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.pending_tasks.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.post_voting_config_exclusions.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.put_component_template.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.put_settings.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.remote_info.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.reroute.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.state.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.stats.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.count.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.create.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.dangling_indices.delete_dangling_index.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.dangling_indices.import_dangling_index.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.dangling_indices.list_dangling_indices.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.delete.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.delete_by_query.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.delete_by_query_rethrottle.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.delete_script.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.exists.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.exists_source.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.explain.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.features.get_features.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.field_caps.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.get.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.get_script.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.get_script_context.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.get_script_languages.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.get_source.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.index.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.add_block.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.analyze.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.clear_cache.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.clone.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.close.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.create.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.delete.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.delete_alias.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.delete_index_template.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.delete_template.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.exists.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.exists_alias.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.exists_index_template.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.exists_template.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.exists_type.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.flush.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.flush_synced.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.forcemerge.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.get.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.get_alias.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.get_field_mapping.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.get_index_template.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.get_mapping.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.get_settings.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.get_template.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.get_upgrade.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.open.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.put_alias.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.put_index_template.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.put_mapping.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.put_settings.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.put_template.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.recovery.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.refresh.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.resolve_index.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.rollover.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.segments.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.shard_stores.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.shrink.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.simulate_index_template.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.simulate_template.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.split.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.stats.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.update_aliases.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.upgrade.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.validate_query.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.info.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.ingest.delete_pipeline.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.ingest.get_pipeline.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.ingest.processor_grok.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.ingest.put_pipeline.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.ingest.simulate.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.mget.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.msearch.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.msearch_template.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.mtermvectors.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.nodes.hot_threads.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.nodes.info.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.nodes.reload_secure_settings.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.nodes.stats.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.nodes.usage.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.ping.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.put_script.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.rank_eval.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.reindex.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.reindex_rethrottle.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.render_search_template.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.scripts_painless_execute.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.scroll.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.search.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.search_shards.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.search_template.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.cleanup_repository.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.clone.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.create.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.create_repository.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.delete.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.delete_repository.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.get.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.get_features.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.get_repository.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.restore.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.status.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.verify_repository.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.tasks.cancel.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.tasks.get.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.tasks.list.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.termvectors.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.update.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.update_by_query.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.update_by_query_rethrottle.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.async_search.delete.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.async_search.get.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.async_search.status.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.async_search.submit.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.autoscaling.delete_autoscaling_policy.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.autoscaling.get_autoscaling_capacity.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.autoscaling.get_autoscaling_decision.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.autoscaling.get_autoscaling_policy.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.autoscaling.put_autoscaling_policy.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.cat.ml_data_frame_analytics.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.cat.ml_datafeeds.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.cat.ml_jobs.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.cat.ml_trained_models.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.cat.transforms.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.delete_auto_follow_pattern.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.follow.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.follow_info.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.follow_stats.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.forget_follower.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.get_auto_follow_pattern.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.pause_auto_follow_pattern.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.pause_follow.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.put_auto_follow_pattern.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.resume_auto_follow_pattern.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.resume_follow.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.stats.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.unfollow.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.close_point_in_time.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.data_frame_transform_deprecated.delete_transform.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.data_frame_transform_deprecated.get_transform.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.data_frame_transform_deprecated.get_transform_stats.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.data_frame_transform_deprecated.preview_transform.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.data_frame_transform_deprecated.put_transform.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.data_frame_transform_deprecated.start_transform.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.data_frame_transform_deprecated.stop_transform.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.data_frame_transform_deprecated.update_transform.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.enrich.delete_policy.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.enrich.execute_policy.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.enrich.get_policy.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.enrich.put_policy.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.enrich.stats.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.eql.delete.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.eql.get.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.eql.get_status.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.eql.search.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.graph.explore.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.delete_lifecycle.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.explain_lifecycle.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.get_lifecycle.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.get_status.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.move_to_step.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.put_lifecycle.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.remove_policy.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.retry.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.start.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.stop.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.indices.create_data_stream.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.indices.data_streams_stats.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.indices.delete_data_stream.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.indices.freeze.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.indices.get_data_stream.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.indices.migrate_to_data_stream.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.indices.promote_data_stream.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.indices.reload_search_analyzers.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.indices.unfreeze.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.license.delete.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.license.get.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.license.get_basic_status.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.license.get_trial_status.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.license.post.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.license.post_start_basic.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.license.post_start_trial.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.logstash.delete_pipeline.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.logstash.get_pipeline.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.logstash.put_pipeline.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.migration.deprecations.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.close_job.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_calendar.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_calendar_event.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_calendar_job.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_data_frame_analytics.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_datafeed.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_expired_data.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_filter.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_forecast.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_job.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_model_snapshot.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_trained_model.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.estimate_model_memory.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.evaluate_data_frame.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.explain_data_frame_analytics.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.find_file_structure.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.flush_job.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.forecast.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_buckets.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_calendar_events.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_calendars.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_categories.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_data_frame_analytics.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_data_frame_analytics_stats.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_datafeed_stats.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_datafeeds.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_filters.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_influencers.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_job_stats.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_jobs.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_model_snapshots.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_overall_buckets.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_records.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_trained_models.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_trained_models_stats.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.info.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.open_job.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.post_calendar_events.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.post_data.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.preview_datafeed.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.put_calendar.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.put_calendar_job.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.put_data_frame_analytics.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.put_datafeed.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.put_filter.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.put_job.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.put_trained_model.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.revert_model_snapshot.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.set_upgrade_mode.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.start_data_frame_analytics.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.start_datafeed.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.stop_data_frame_analytics.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.stop_datafeed.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.update_data_frame_analytics.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.update_datafeed.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.update_filter.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.update_job.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.update_model_snapshot.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.upgrade_job_snapshot.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.validate.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.validate_detector.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.monitoring.bulk.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.open_point_in_time.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.rollup.delete_job.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.rollup.get_jobs.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.rollup.get_rollup_caps.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.rollup.get_rollup_index_caps.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.rollup.put_job.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.rollup.rollup.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.rollup.rollup_search.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.rollup.start_job.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.rollup.stop_job.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.searchable_snapshots.clear_cache.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.searchable_snapshots.mount.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.searchable_snapshots.repository_stats.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.searchable_snapshots.stats.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.authenticate.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.change_password.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.clear_api_key_cache.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.clear_cached_privileges.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.clear_cached_realms.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.clear_cached_roles.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.create_api_key.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.delete_privileges.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.delete_role.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.delete_role_mapping.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.delete_user.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.disable_user.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.enable_user.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.get_api_key.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.get_builtin_privileges.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.get_privileges.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.get_role.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.get_role_mapping.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.get_token.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.get_user.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.get_user_privileges.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.grant_api_key.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.has_privileges.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.invalidate_api_key.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.invalidate_token.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.put_privileges.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.put_role.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.put_role_mapping.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.put_user.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.slm.delete_lifecycle.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.slm.execute_lifecycle.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.slm.execute_retention.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.slm.get_lifecycle.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.slm.get_stats.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.slm.get_status.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.slm.put_lifecycle.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.slm.start.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.slm.stop.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.sql.clear_cursor.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.sql.query.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.sql.translate.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ssl.certificates.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.text_structure.find_structure.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.transform.delete_transform.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.transform.get_transform.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.transform.get_transform_stats.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.transform.preview_transform.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.transform.put_transform.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.transform.start_transform.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.transform.stop_transform.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.transform.update_transform.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.ack_watch.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.activate_watch.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.deactivate_watch.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.delete_watch.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.execute_watch.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.get_watch.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.put_watch.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.query_watches.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.start.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.stats.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.stop.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.xpack.info.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.xpack.usage.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/doc.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/esapi.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/esapi.request.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/esapi.response.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/estransport/connection.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/estransport/discovery.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/estransport/doc.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/estransport/estransport.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/estransport/logger.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/estransport/metaheader.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/estransport/metrics.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esutil/bulk_indexer.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esutil/doc.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esutil/json_reader.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/internal/version/version.go (100%) rename {aux/server-discovery/vendor/github.com/go-chi/chi => extra/server-discovery/vendor/github.com/go-chi/chi/v5}/.gitignore (100%) create mode 100644 extra/server-discovery/vendor/github.com/go-chi/chi/v5/CHANGELOG.md create mode 100644 extra/server-discovery/vendor/github.com/go-chi/chi/v5/CONTRIBUTING.md rename {aux/server-discovery/vendor/github.com/go-chi/chi => extra/server-discovery/vendor/github.com/go-chi/chi/v5}/LICENSE (100%) rename {aux => extra}/server-discovery/vendor/github.com/go-chi/chi/v5/Makefile (100%) create mode 100644 extra/server-discovery/vendor/github.com/go-chi/chi/v5/README.md rename {aux => extra}/server-discovery/vendor/github.com/go-chi/chi/v5/chain.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/go-chi/chi/v5/chi.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/go-chi/chi/v5/context.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/basic_auth.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/clean_path.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/compress.go (100%) rename {aux/server-discovery/vendor/github.com/go-chi/chi => extra/server-discovery/vendor/github.com/go-chi/chi/v5}/middleware/content_charset.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/content_encoding.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/content_type.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/get_head.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/heartbeat.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/logger.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/maybe.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/middleware.go (100%) rename {aux/server-discovery/vendor/github.com/go-chi/chi => extra/server-discovery/vendor/github.com/go-chi/chi/v5}/middleware/nocache.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/page_route.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/path_rewrite.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/profiler.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/realip.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/recoverer.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/request_id.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/route_headers.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/strip.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/terminal.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/throttle.go (100%) rename {aux/server-discovery/vendor/github.com/go-chi/chi => extra/server-discovery/vendor/github.com/go-chi/chi/v5}/middleware/timeout.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/url_format.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/value.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/wrap_writer.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/go-chi/chi/v5/mux.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/go-chi/chi/v5/tree.go (100%) rename {aux/server-discovery/vendor/github.com/go-chi/chi/v5 => extra/server-discovery/vendor/github.com/go-chi/cors}/LICENSE (89%) create mode 100644 extra/server-discovery/vendor/github.com/go-chi/cors/README.md rename {aux => extra}/server-discovery/vendor/github.com/go-chi/cors/cors.go (84%) rename {aux => extra}/server-discovery/vendor/github.com/go-chi/cors/utils.go (95%) rename {aux => extra}/server-discovery/vendor/github.com/go-chi/jwtauth/.gitignore (100%) rename {aux => extra}/server-discovery/vendor/github.com/go-chi/jwtauth/LICENSE (100%) create mode 100644 extra/server-discovery/vendor/github.com/go-chi/jwtauth/README.md rename {aux => extra}/server-discovery/vendor/github.com/go-chi/jwtauth/jwtauth.go (100%) create mode 100644 extra/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/.editorconfig rename {aux => extra}/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/.gitignore (96%) rename {aux => extra}/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/.travis.yml (100%) rename {aux => extra}/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/LICENSE (100%) create mode 100644 extra/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/README.md rename {aux => extra}/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/const.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/doc.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/errors/error.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/errors/response.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/generate.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/generates/access.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/generates/authorize.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/generates/jwt_access.go (98%) rename {aux => extra}/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/go.test.sh (100%) rename {aux => extra}/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/manage.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/model.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/models/client.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/models/token.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/store.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/.codecov.yml (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/.gitignore (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/.golangci.yml (100%) create mode 100644 extra/server-discovery/vendor/github.com/goccy/go-json/CHANGELOG.md rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/LICENSE (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/Makefile (100%) create mode 100644 extra/server-discovery/vendor/github.com/goccy/go-json/README.md rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/color.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/decode.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/docker-compose.yml (91%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/encode.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/error.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/anonymous_field.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/array.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/bool.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/bytes.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/compile.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/compile_norace.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/compile_race.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/context.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/float.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/func.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/int.go (94%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/interface.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/invalid.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/map.go (99%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/number.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/option.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/ptr.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/slice.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/stream.go (99%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/string.go (85%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/struct.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/type.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/uint.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/unmarshal_json.go (85%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/unmarshal_text.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/wrapped_string.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/code.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/compact.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/compiler.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/compiler_norace.go (90%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/compiler_race.go (91%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/context.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/decode_rune.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/encoder.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/indent.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/int.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/map112.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/map113.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/opcode.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/option.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/optype.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/query.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/string.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/string_table.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm/debug_vm.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm/hack.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm/util.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm/vm.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_color/debug_vm.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_color/hack.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_color/util.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_color/vm.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_color_indent/debug_vm.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_color_indent/util.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_color_indent/vm.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_indent/debug_vm.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_indent/hack.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_indent/util.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_indent/vm.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/errors/error.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/runtime/rtype.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/runtime/struct_field.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/internal/runtime/type.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/json.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/option.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/goccy/go-json/query.go (100%) rename {aux/server-discovery/vendor/github.com/dgrijalva/jwt-go => extra/server-discovery/vendor/github.com/golang-jwt/jwt}/.gitignore (68%) rename {aux/server-discovery/vendor/github.com/dgrijalva/jwt-go => extra/server-discovery/vendor/github.com/golang-jwt/jwt}/LICENSE (96%) create mode 100644 extra/server-discovery/vendor/github.com/golang-jwt/jwt/MIGRATION_GUIDE.md create mode 100644 extra/server-discovery/vendor/github.com/golang-jwt/jwt/README.md create mode 100644 extra/server-discovery/vendor/github.com/golang-jwt/jwt/VERSION_HISTORY.md rename {aux/server-discovery/vendor/github.com/dgrijalva/jwt-go => extra/server-discovery/vendor/github.com/golang-jwt/jwt}/claims.go (83%) rename {aux/server-discovery/vendor/github.com/dgrijalva/jwt-go => extra/server-discovery/vendor/github.com/golang-jwt/jwt}/doc.go (100%) rename {aux/server-discovery/vendor/github.com/dgrijalva/jwt-go => extra/server-discovery/vendor/github.com/golang-jwt/jwt}/ecdsa.go (84%) rename {aux/server-discovery/vendor/github.com/dgrijalva/jwt-go => extra/server-discovery/vendor/github.com/golang-jwt/jwt}/ecdsa_utils.go (93%) create mode 100644 extra/server-discovery/vendor/github.com/golang-jwt/jwt/ed25519.go create mode 100644 extra/server-discovery/vendor/github.com/golang-jwt/jwt/ed25519_utils.go rename {aux/server-discovery/vendor/github.com/dgrijalva/jwt-go => extra/server-discovery/vendor/github.com/golang-jwt/jwt}/errors.go (100%) rename {aux/server-discovery/vendor/github.com/dgrijalva/jwt-go => extra/server-discovery/vendor/github.com/golang-jwt/jwt}/hmac.go (100%) rename {aux/server-discovery/vendor/github.com/dgrijalva/jwt-go => extra/server-discovery/vendor/github.com/golang-jwt/jwt}/map_claims.go (69%) rename {aux/server-discovery/vendor/github.com/dgrijalva/jwt-go => extra/server-discovery/vendor/github.com/golang-jwt/jwt}/none.go (100%) rename {aux/server-discovery/vendor/github.com/dgrijalva/jwt-go => extra/server-discovery/vendor/github.com/golang-jwt/jwt}/parser.go (100%) rename {aux/server-discovery/vendor/github.com/dgrijalva/jwt-go => extra/server-discovery/vendor/github.com/golang-jwt/jwt}/rsa.go (100%) rename {aux/server-discovery/vendor/github.com/dgrijalva/jwt-go => extra/server-discovery/vendor/github.com/golang-jwt/jwt}/rsa_pss.go (71%) rename {aux/server-discovery/vendor/github.com/dgrijalva/jwt-go => extra/server-discovery/vendor/github.com/golang-jwt/jwt}/rsa_utils.go (95%) rename {aux/server-discovery/vendor/github.com/dgrijalva/jwt-go => extra/server-discovery/vendor/github.com/golang-jwt/jwt}/signing_method.go (100%) rename {aux/server-discovery/vendor/github.com/dgrijalva/jwt-go => extra/server-discovery/vendor/github.com/golang-jwt/jwt}/token.go (93%) rename {aux => extra}/server-discovery/vendor/github.com/google/uuid/.travis.yml (100%) create mode 100644 extra/server-discovery/vendor/github.com/google/uuid/CONTRIBUTING.md rename {aux => extra}/server-discovery/vendor/github.com/google/uuid/CONTRIBUTORS (100%) rename {aux => extra}/server-discovery/vendor/github.com/google/uuid/LICENSE (100%) create mode 100644 extra/server-discovery/vendor/github.com/google/uuid/README.md rename {aux => extra}/server-discovery/vendor/github.com/google/uuid/dce.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/google/uuid/doc.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/google/uuid/hash.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/google/uuid/marshal.go (94%) rename {aux => extra}/server-discovery/vendor/github.com/google/uuid/node.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/google/uuid/node_js.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/google/uuid/node_net.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/google/uuid/sql.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/google/uuid/time.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/google/uuid/util.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/google/uuid/uuid.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/google/uuid/version1.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/google/uuid/version4.go (83%) rename {aux => extra}/server-discovery/vendor/github.com/gorilla/css/LICENSE (100%) rename {aux => extra}/server-discovery/vendor/github.com/gorilla/css/scanner/doc.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/gorilla/css/scanner/scanner.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/inconshreveable/mousetrap/LICENSE (100%) create mode 100644 extra/server-discovery/vendor/github.com/inconshreveable/mousetrap/README.md rename {aux => extra}/server-discovery/vendor/github.com/inconshreveable/mousetrap/trap_others.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/inconshreveable/mousetrap/trap_windows.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/inconshreveable/mousetrap/trap_windows_1.4.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/jmoiron/sqlx/LICENSE (100%) create mode 100644 extra/server-discovery/vendor/github.com/jmoiron/sqlx/types/README.md rename {aux => extra}/server-discovery/vendor/github.com/jmoiron/sqlx/types/types.go (97%) rename {aux => extra}/server-discovery/vendor/github.com/joho/godotenv/.gitignore (100%) rename {aux => extra}/server-discovery/vendor/github.com/joho/godotenv/LICENCE (100%) create mode 100644 extra/server-discovery/vendor/github.com/joho/godotenv/README.md rename {aux => extra}/server-discovery/vendor/github.com/joho/godotenv/godotenv.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/joho/godotenv/renovate.json (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/.gitignore (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/.golangci.yml (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/Changes (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/LICENSE (100%) create mode 100644 extra/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/README.md rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/backoff.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/constant.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/controller.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/doc.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/exponential.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/interface.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/jitter.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/null.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/options.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/blackmagic/.gitignore (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/blackmagic/LICENSE (100%) create mode 100644 extra/server-discovery/vendor/github.com/lestrrat-go/blackmagic/README.md rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/blackmagic/blackmagic.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/httpcc/.gitignore (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/httpcc/LICENSE (100%) create mode 100644 extra/server-discovery/vendor/github.com/lestrrat-go/httpcc/README.md rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/httpcc/directives.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/httpcc/httpcc.go (88%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/iter/LICENSE (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/iter/arrayiter/arrayiter.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/iter/mapiter/mapiter.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/.gitignore (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/.golangci.yml (81%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/Changes (97%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/LICENSE (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/Makefile (100%) create mode 100644 extra/server-discovery/vendor/github.com/lestrrat-go/jwx/README.md rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/format.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/formatkind_string_gen.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/gen.sh (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/base64/base64.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/ecutil/ecutil.go (99%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/iter/mapiter.go (97%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/json/goccy.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/json/json.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/json/registry.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/json/stdlib.go (97%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/keyconv/keyconv.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/pool/pool.go (92%) create mode 100644 extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/README.md rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/compression_gen.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/content_encryption_gen.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/elliptic_gen.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/gen.sh (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/jwa.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/key_encryption_gen.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/key_type_gen.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/secp2561k.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/signature_gen.go (100%) create mode 100644 extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/README.md rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/compress.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/decrypt.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/encrypt.go (99%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/gen.sh (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/headers.go (94%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/headers_gen.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/interface.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/aescbc/aescbc.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/cipher/cipher.go (96%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/cipher/interface.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/concatkdf/concatkdf.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/content_crypt/content_crypt.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/content_crypt/interface.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/keyenc/interface.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/keyenc/keyenc.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/keygen/interface.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/keygen/keygen.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/io.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/jwe.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/message.go (99%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/options.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/serializer.go (100%) create mode 100644 extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/README.md rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/certchain.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/ecdsa.go (96%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/ecdsa_gen.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/es256k.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/gen.sh (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/interface.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/interface_gen.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/io.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/jwk.go (99%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/key_ops.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/okp.go (94%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/okp_gen.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/option.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/refresh.go (99%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/rsa.go (87%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/rsa_gen.go (99%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/set.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/symmetric.go (87%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/symmetric_gen.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/usage.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/whitelist.go (100%) create mode 100644 extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/README.md rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/ecdsa.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/eddsa.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/es256k.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/gen.sh (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/headers.go (91%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/headers_gen.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/hmac.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/interface.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/io.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/jws.go (99%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/message.go (99%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/option.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/rsa.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/signer.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/verifier.go (100%) create mode 100644 extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/README.md rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/builder_gen.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/gen.sh (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/http.go (99%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/interface.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/internal/types/date.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/internal/types/string.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/io.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/jwt.go (99%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/options.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/serialize.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/token_gen.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/validate.go (99%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/jwx.go (92%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/options.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/jwx/x25519/x25519.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/option/.gitignore (100%) rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/option/LICENSE (100%) create mode 100644 extra/server-discovery/vendor/github.com/lestrrat-go/option/README.md rename {aux => extra}/server-discovery/vendor/github.com/lestrrat-go/option/option.go (100%) rename {aux/server-discovery/vendor/github.com/pkg/errors => extra/server-discovery/vendor/github.com/lestrrat-go/strftime}/.gitignore (100%) create mode 100644 extra/server-discovery/vendor/github.com/lestrrat-go/strftime/.golangci.yml create mode 100644 extra/server-discovery/vendor/github.com/lestrrat-go/strftime/Changes create mode 100644 extra/server-discovery/vendor/github.com/lestrrat-go/strftime/LICENSE create mode 100644 extra/server-discovery/vendor/github.com/lestrrat-go/strftime/Makefile create mode 100644 extra/server-discovery/vendor/github.com/lestrrat-go/strftime/README.md create mode 100644 extra/server-discovery/vendor/github.com/lestrrat-go/strftime/appenders.go create mode 100644 extra/server-discovery/vendor/github.com/lestrrat-go/strftime/extension.go create mode 100644 extra/server-discovery/vendor/github.com/lestrrat-go/strftime/internal/errors/errors_fmt.go create mode 100644 extra/server-discovery/vendor/github.com/lestrrat-go/strftime/internal/errors/errors_pkg.go create mode 100644 extra/server-discovery/vendor/github.com/lestrrat-go/strftime/options.go create mode 100644 extra/server-discovery/vendor/github.com/lestrrat-go/strftime/specifications.go create mode 100644 extra/server-discovery/vendor/github.com/lestrrat-go/strftime/strftime.go rename {aux => extra}/server-discovery/vendor/github.com/microcosm-cc/bluemonday/.coveralls.yml (100%) rename {aux => extra}/server-discovery/vendor/github.com/microcosm-cc/bluemonday/.editorconfig (100%) rename {aux => extra}/server-discovery/vendor/github.com/microcosm-cc/bluemonday/.gitattributes (100%) rename {aux => extra}/server-discovery/vendor/github.com/microcosm-cc/bluemonday/.gitignore (100%) rename {aux => extra}/server-discovery/vendor/github.com/microcosm-cc/bluemonday/.travis.yml (100%) create mode 100644 extra/server-discovery/vendor/github.com/microcosm-cc/bluemonday/CONTRIBUTING.md create mode 100644 extra/server-discovery/vendor/github.com/microcosm-cc/bluemonday/CREDITS.md create mode 100644 extra/server-discovery/vendor/github.com/microcosm-cc/bluemonday/LICENSE.md rename {aux => extra}/server-discovery/vendor/github.com/microcosm-cc/bluemonday/Makefile (100%) create mode 100644 extra/server-discovery/vendor/github.com/microcosm-cc/bluemonday/README.md create mode 100644 extra/server-discovery/vendor/github.com/microcosm-cc/bluemonday/SECURITY.md rename {aux => extra}/server-discovery/vendor/github.com/microcosm-cc/bluemonday/css/handlers.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/microcosm-cc/bluemonday/doc.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/microcosm-cc/bluemonday/helpers.go (98%) rename {aux => extra}/server-discovery/vendor/github.com/microcosm-cc/bluemonday/policies.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/microcosm-cc/bluemonday/policy.go (92%) rename {aux => extra}/server-discovery/vendor/github.com/microcosm-cc/bluemonday/sanitize.go (97%) rename {aux => extra}/server-discovery/vendor/github.com/microcosm-cc/bluemonday/stringwriterwriter_go1.12.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/microcosm-cc/bluemonday/stringwriterwriter_ltgo1.12.go (100%) create mode 100644 extra/server-discovery/vendor/github.com/modern-go/reflect2/.gitignore create mode 100644 extra/server-discovery/vendor/github.com/modern-go/reflect2/.travis.yml create mode 100644 extra/server-discovery/vendor/github.com/modern-go/reflect2/Gopkg.lock create mode 100644 extra/server-discovery/vendor/github.com/modern-go/reflect2/Gopkg.toml rename {aux/server-discovery/vendor/github.com/cortezaproject/corteza-server => extra/server-discovery/vendor/github.com/modern-go/reflect2}/LICENSE (99%) create mode 100644 extra/server-discovery/vendor/github.com/modern-go/reflect2/README.md create mode 100644 extra/server-discovery/vendor/github.com/modern-go/reflect2/go_above_118.go create mode 100644 extra/server-discovery/vendor/github.com/modern-go/reflect2/go_above_19.go create mode 100644 extra/server-discovery/vendor/github.com/modern-go/reflect2/go_below_118.go create mode 100644 extra/server-discovery/vendor/github.com/modern-go/reflect2/reflect2.go create mode 100644 extra/server-discovery/vendor/github.com/modern-go/reflect2/reflect2_amd64.s create mode 100644 extra/server-discovery/vendor/github.com/modern-go/reflect2/reflect2_kind.go create mode 100644 extra/server-discovery/vendor/github.com/modern-go/reflect2/relfect2_386.s create mode 100644 extra/server-discovery/vendor/github.com/modern-go/reflect2/relfect2_amd64p32.s create mode 100644 extra/server-discovery/vendor/github.com/modern-go/reflect2/relfect2_arm.s create mode 100644 extra/server-discovery/vendor/github.com/modern-go/reflect2/relfect2_arm64.s create mode 100644 extra/server-discovery/vendor/github.com/modern-go/reflect2/relfect2_mips64x.s create mode 100644 extra/server-discovery/vendor/github.com/modern-go/reflect2/relfect2_mipsx.s create mode 100644 extra/server-discovery/vendor/github.com/modern-go/reflect2/relfect2_ppc64x.s create mode 100644 extra/server-discovery/vendor/github.com/modern-go/reflect2/relfect2_s390x.s create mode 100644 extra/server-discovery/vendor/github.com/modern-go/reflect2/safe_field.go create mode 100644 extra/server-discovery/vendor/github.com/modern-go/reflect2/safe_map.go create mode 100644 extra/server-discovery/vendor/github.com/modern-go/reflect2/safe_slice.go create mode 100644 extra/server-discovery/vendor/github.com/modern-go/reflect2/safe_struct.go create mode 100644 extra/server-discovery/vendor/github.com/modern-go/reflect2/safe_type.go create mode 100644 extra/server-discovery/vendor/github.com/modern-go/reflect2/type_map.go create mode 100644 extra/server-discovery/vendor/github.com/modern-go/reflect2/unsafe_array.go create mode 100644 extra/server-discovery/vendor/github.com/modern-go/reflect2/unsafe_eface.go create mode 100644 extra/server-discovery/vendor/github.com/modern-go/reflect2/unsafe_field.go create mode 100644 extra/server-discovery/vendor/github.com/modern-go/reflect2/unsafe_iface.go create mode 100644 extra/server-discovery/vendor/github.com/modern-go/reflect2/unsafe_link.go create mode 100644 extra/server-discovery/vendor/github.com/modern-go/reflect2/unsafe_map.go create mode 100644 extra/server-discovery/vendor/github.com/modern-go/reflect2/unsafe_ptr.go create mode 100644 extra/server-discovery/vendor/github.com/modern-go/reflect2/unsafe_slice.go create mode 100644 extra/server-discovery/vendor/github.com/modern-go/reflect2/unsafe_struct.go create mode 100644 extra/server-discovery/vendor/github.com/modern-go/reflect2/unsafe_type.go create mode 100644 extra/server-discovery/vendor/github.com/pkg/errors/.gitignore rename {aux => extra}/server-discovery/vendor/github.com/pkg/errors/.travis.yml (100%) rename {aux => extra}/server-discovery/vendor/github.com/pkg/errors/LICENSE (100%) rename {aux => extra}/server-discovery/vendor/github.com/pkg/errors/Makefile (100%) create mode 100644 extra/server-discovery/vendor/github.com/pkg/errors/README.md rename {aux => extra}/server-discovery/vendor/github.com/pkg/errors/appveyor.yml (100%) rename {aux => extra}/server-discovery/vendor/github.com/pkg/errors/errors.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/pkg/errors/go113.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/pkg/errors/stack.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/pmezard/go-difflib/LICENSE (100%) rename {aux => extra}/server-discovery/vendor/github.com/pmezard/go-difflib/difflib/difflib.go (100%) create mode 100644 extra/server-discovery/vendor/github.com/shopspring/decimal/.gitignore create mode 100644 extra/server-discovery/vendor/github.com/shopspring/decimal/.travis.yml create mode 100644 extra/server-discovery/vendor/github.com/shopspring/decimal/CHANGELOG.md create mode 100644 extra/server-discovery/vendor/github.com/shopspring/decimal/LICENSE create mode 100644 extra/server-discovery/vendor/github.com/shopspring/decimal/README.md create mode 100644 extra/server-discovery/vendor/github.com/shopspring/decimal/decimal-go.go create mode 100644 extra/server-discovery/vendor/github.com/shopspring/decimal/decimal.go create mode 100644 extra/server-discovery/vendor/github.com/shopspring/decimal/rounding.go rename {aux => extra}/server-discovery/vendor/github.com/spf13/cast/.gitignore (100%) rename {aux => extra}/server-discovery/vendor/github.com/spf13/cast/LICENSE (100%) rename {aux => extra}/server-discovery/vendor/github.com/spf13/cast/Makefile (91%) create mode 100644 extra/server-discovery/vendor/github.com/spf13/cast/README.md rename {aux => extra}/server-discovery/vendor/github.com/spf13/cast/cast.go (96%) rename {aux => extra}/server-discovery/vendor/github.com/spf13/cast/caste.go (85%) create mode 100644 extra/server-discovery/vendor/github.com/spf13/cast/timeformattype_string.go rename {aux => extra}/server-discovery/vendor/github.com/spf13/cobra/.gitignore (96%) create mode 100644 extra/server-discovery/vendor/github.com/spf13/cobra/.golangci.yml rename {aux => extra}/server-discovery/vendor/github.com/spf13/cobra/.mailmap (100%) create mode 100644 extra/server-discovery/vendor/github.com/spf13/cobra/CHANGELOG.md create mode 100644 extra/server-discovery/vendor/github.com/spf13/cobra/CONDUCT.md create mode 100644 extra/server-discovery/vendor/github.com/spf13/cobra/CONTRIBUTING.md rename {aux => extra}/server-discovery/vendor/github.com/spf13/cobra/LICENSE.txt (100%) create mode 100644 extra/server-discovery/vendor/github.com/spf13/cobra/MAINTAINERS create mode 100644 extra/server-discovery/vendor/github.com/spf13/cobra/Makefile create mode 100644 extra/server-discovery/vendor/github.com/spf13/cobra/README.md rename {aux => extra}/server-discovery/vendor/github.com/spf13/cobra/args.go (72%) rename {aux => extra}/server-discovery/vendor/github.com/spf13/cobra/bash_completions.go (50%) create mode 100644 extra/server-discovery/vendor/github.com/spf13/cobra/bash_completions.md create mode 100644 extra/server-discovery/vendor/github.com/spf13/cobra/bash_completionsV2.go rename {aux => extra}/server-discovery/vendor/github.com/spf13/cobra/cobra.go (87%) rename {aux => extra}/server-discovery/vendor/github.com/spf13/cobra/command.go (86%) rename {aux => extra}/server-discovery/vendor/github.com/spf13/cobra/command_notwin.go (77%) rename {aux => extra}/server-discovery/vendor/github.com/spf13/cobra/command_win.go (60%) create mode 100644 extra/server-discovery/vendor/github.com/spf13/cobra/completions.go create mode 100644 extra/server-discovery/vendor/github.com/spf13/cobra/fish_completions.go create mode 100644 extra/server-discovery/vendor/github.com/spf13/cobra/fish_completions.md create mode 100644 extra/server-discovery/vendor/github.com/spf13/cobra/powershell_completions.go create mode 100644 extra/server-discovery/vendor/github.com/spf13/cobra/powershell_completions.md create mode 100644 extra/server-discovery/vendor/github.com/spf13/cobra/projects_using_cobra.md create mode 100644 extra/server-discovery/vendor/github.com/spf13/cobra/shell_completions.go create mode 100644 extra/server-discovery/vendor/github.com/spf13/cobra/shell_completions.md create mode 100644 extra/server-discovery/vendor/github.com/spf13/cobra/user_guide.md create mode 100644 extra/server-discovery/vendor/github.com/spf13/cobra/zsh_completions.go create mode 100644 extra/server-discovery/vendor/github.com/spf13/cobra/zsh_completions.md rename {aux => extra}/server-discovery/vendor/github.com/spf13/pflag/.gitignore (100%) rename {aux => extra}/server-discovery/vendor/github.com/spf13/pflag/.travis.yml (73%) rename {aux => extra}/server-discovery/vendor/github.com/spf13/pflag/LICENSE (100%) create mode 100644 extra/server-discovery/vendor/github.com/spf13/pflag/README.md rename {aux => extra}/server-discovery/vendor/github.com/spf13/pflag/bool.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/spf13/pflag/bool_slice.go (86%) rename {aux => extra}/server-discovery/vendor/github.com/spf13/pflag/bytes.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/spf13/pflag/count.go (94%) rename {aux => extra}/server-discovery/vendor/github.com/spf13/pflag/duration.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/spf13/pflag/duration_slice.go (84%) rename {aux => extra}/server-discovery/vendor/github.com/spf13/pflag/flag.go (98%) rename {aux => extra}/server-discovery/vendor/github.com/spf13/pflag/float32.go (100%) create mode 100644 extra/server-discovery/vendor/github.com/spf13/pflag/float32_slice.go rename {aux => extra}/server-discovery/vendor/github.com/spf13/pflag/float64.go (100%) create mode 100644 extra/server-discovery/vendor/github.com/spf13/pflag/float64_slice.go rename {aux => extra}/server-discovery/vendor/github.com/spf13/pflag/golangflag.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/spf13/pflag/int.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/spf13/pflag/int16.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/spf13/pflag/int32.go (100%) create mode 100644 extra/server-discovery/vendor/github.com/spf13/pflag/int32_slice.go rename {aux => extra}/server-discovery/vendor/github.com/spf13/pflag/int64.go (100%) create mode 100644 extra/server-discovery/vendor/github.com/spf13/pflag/int64_slice.go rename {aux => extra}/server-discovery/vendor/github.com/spf13/pflag/int8.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/spf13/pflag/int_slice.go (87%) rename {aux => extra}/server-discovery/vendor/github.com/spf13/pflag/ip.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/spf13/pflag/ip_slice.go (85%) rename {aux => extra}/server-discovery/vendor/github.com/spf13/pflag/ipmask.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/spf13/pflag/ipnet.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/spf13/pflag/string.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/spf13/pflag/string_array.go (89%) rename {aux => extra}/server-discovery/vendor/github.com/spf13/pflag/string_slice.go (92%) rename {aux => extra}/server-discovery/vendor/github.com/spf13/pflag/string_to_int.go (100%) create mode 100644 extra/server-discovery/vendor/github.com/spf13/pflag/string_to_int64.go rename {aux => extra}/server-discovery/vendor/github.com/spf13/pflag/string_to_string.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/spf13/pflag/uint.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/spf13/pflag/uint16.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/spf13/pflag/uint32.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/spf13/pflag/uint64.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/spf13/pflag/uint8.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/spf13/pflag/uint_slice.go (82%) rename {aux => extra}/server-discovery/vendor/github.com/stretchr/testify/LICENSE (100%) rename {aux => extra}/server-discovery/vendor/github.com/stretchr/testify/assert/assertion_compare.go (89%) create mode 100644 extra/server-discovery/vendor/github.com/stretchr/testify/assert/assertion_compare_can_convert.go create mode 100644 extra/server-discovery/vendor/github.com/stretchr/testify/assert/assertion_compare_legacy.go rename {aux => extra}/server-discovery/vendor/github.com/stretchr/testify/assert/assertion_format.go (98%) rename {aux => extra}/server-discovery/vendor/github.com/stretchr/testify/assert/assertion_format.go.tmpl (100%) rename {aux => extra}/server-discovery/vendor/github.com/stretchr/testify/assert/assertion_forward.go (98%) rename {aux => extra}/server-discovery/vendor/github.com/stretchr/testify/assert/assertion_forward.go.tmpl (100%) rename {aux => extra}/server-discovery/vendor/github.com/stretchr/testify/assert/assertion_order.go (94%) rename {aux => extra}/server-discovery/vendor/github.com/stretchr/testify/assert/assertions.go (95%) rename {aux => extra}/server-discovery/vendor/github.com/stretchr/testify/assert/doc.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/stretchr/testify/assert/errors.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/stretchr/testify/assert/forward_assertions.go (100%) rename {aux => extra}/server-discovery/vendor/github.com/stretchr/testify/assert/http_assertions.go (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/atomic/.codecov.yml (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/atomic/.gitignore (73%) create mode 100644 extra/server-discovery/vendor/go.uber.org/atomic/CHANGELOG.md rename {aux => extra}/server-discovery/vendor/go.uber.org/atomic/LICENSE.txt (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/atomic/Makefile (99%) create mode 100644 extra/server-discovery/vendor/go.uber.org/atomic/README.md rename {aux => extra}/server-discovery/vendor/go.uber.org/atomic/bool.go (84%) rename {aux => extra}/server-discovery/vendor/go.uber.org/atomic/bool_ext.go (97%) rename {aux => extra}/server-discovery/vendor/go.uber.org/atomic/doc.go (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/atomic/duration.go (83%) rename {aux => extra}/server-discovery/vendor/go.uber.org/atomic/duration_ext.go (88%) rename {aux => extra}/server-discovery/vendor/go.uber.org/atomic/error.go (89%) rename {aux => extra}/server-discovery/vendor/go.uber.org/atomic/error_ext.go (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/atomic/float64.go (83%) rename {aux => extra}/server-discovery/vendor/go.uber.org/atomic/float64_ext.go (67%) rename {aux => extra}/server-discovery/vendor/go.uber.org/atomic/gen.go (94%) rename {aux => extra}/server-discovery/vendor/go.uber.org/atomic/int32.go (84%) rename {aux => extra}/server-discovery/vendor/go.uber.org/atomic/int64.go (84%) rename {aux => extra}/server-discovery/vendor/go.uber.org/atomic/nocmp.go (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/atomic/string.go (89%) rename {aux => extra}/server-discovery/vendor/go.uber.org/atomic/string_ext.go (91%) rename aux/server-discovery/vendor/go.uber.org/multierr/go113.go => extra/server-discovery/vendor/go.uber.org/atomic/time.go (58%) create mode 100644 extra/server-discovery/vendor/go.uber.org/atomic/time_ext.go rename {aux => extra}/server-discovery/vendor/go.uber.org/atomic/uint32.go (83%) rename {aux => extra}/server-discovery/vendor/go.uber.org/atomic/uint64.go (83%) create mode 100644 extra/server-discovery/vendor/go.uber.org/atomic/uintptr.go create mode 100644 extra/server-discovery/vendor/go.uber.org/atomic/unsafe_pointer.go rename {aux => extra}/server-discovery/vendor/go.uber.org/atomic/value.go (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/multierr/.codecov.yml (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/multierr/.gitignore (100%) create mode 100644 extra/server-discovery/vendor/go.uber.org/multierr/CHANGELOG.md rename {aux => extra}/server-discovery/vendor/go.uber.org/multierr/LICENSE.txt (95%) rename {aux => extra}/server-discovery/vendor/go.uber.org/multierr/Makefile (82%) create mode 100644 extra/server-discovery/vendor/go.uber.org/multierr/README.md rename {aux => extra}/server-discovery/vendor/go.uber.org/multierr/error.go (65%) rename {aux => extra}/server-discovery/vendor/go.uber.org/multierr/glide.yaml (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/.codecov.yml (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/.gitignore (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/.readme.tmpl (100%) create mode 100644 extra/server-discovery/vendor/go.uber.org/zap/CHANGELOG.md create mode 100644 extra/server-discovery/vendor/go.uber.org/zap/CODE_OF_CONDUCT.md create mode 100644 extra/server-discovery/vendor/go.uber.org/zap/CONTRIBUTING.md create mode 100644 extra/server-discovery/vendor/go.uber.org/zap/FAQ.md rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/LICENSE.txt (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/Makefile (100%) create mode 100644 extra/server-discovery/vendor/go.uber.org/zap/README.md rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/array.go (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/buffer/buffer.go (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/buffer/pool.go (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/checklicense.sh (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/config.go (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/doc.go (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/encoder.go (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/error.go (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/field.go (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/flag.go (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/glide.yaml (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/global.go (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/http_handler.go (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/internal/bufferpool/bufferpool.go (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/internal/color/color.go (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/internal/exit/exit.go (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/level.go (90%) rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/logger.go (90%) rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/options.go (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/sink.go (100%) create mode 100644 extra/server-discovery/vendor/go.uber.org/zap/stacktrace.go rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/sugar.go (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/time.go (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/writer.go (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/zapcore/buffered_write_syncer.go (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/zapcore/clock.go (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/zapcore/console_encoder.go (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/zapcore/core.go (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/zapcore/doc.go (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/zapcore/encoder.go (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/zapcore/entry.go (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/zapcore/error.go (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/zapcore/field.go (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/zapcore/hook.go (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/zapcore/increase_level.go (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/zapcore/json_encoder.go (99%) rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/zapcore/level.go (92%) rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/zapcore/level_strings.go (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/zapcore/marshaler.go (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/zapcore/memory_encoder.go (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/zapcore/reflected_encoder.go (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/zapcore/sampler.go (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/zapcore/tee.go (100%) rename {aux => extra}/server-discovery/vendor/go.uber.org/zap/zapcore/write_syncer.go (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/crypto/AUTHORS (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/crypto/CONTRIBUTORS (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/crypto/LICENSE (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/crypto/PATENTS (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/crypto/curve25519/curve25519.go (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/crypto/curve25519/internal/field/README (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/crypto/curve25519/internal/field/fe.go (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/crypto/curve25519/internal/field/fe_amd64.go (90%) rename {aux => extra}/server-discovery/vendor/golang.org/x/crypto/curve25519/internal/field/fe_amd64.s (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/crypto/curve25519/internal/field/fe_amd64_noasm.go (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/crypto/curve25519/internal/field/fe_arm64.go (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/crypto/curve25519/internal/field/fe_arm64.s (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/crypto/curve25519/internal/field/fe_arm64_noasm.go (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/crypto/curve25519/internal/field/fe_generic.go (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/crypto/curve25519/internal/field/sync.checkpoint (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/crypto/curve25519/internal/field/sync.sh (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/crypto/ed25519/ed25519.go (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/crypto/pbkdf2/pbkdf2.go (97%) rename {aux => extra}/server-discovery/vendor/golang.org/x/net/LICENSE (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/net/PATENTS (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/net/html/atom/atom.go (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/net/html/atom/table.go (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/net/html/const.go (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/net/html/doc.go (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/net/html/doctype.go (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/net/html/entity.go (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/net/html/escape.go (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/net/html/foreign.go (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/net/html/node.go (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/net/html/parse.go (99%) rename {aux => extra}/server-discovery/vendor/golang.org/x/net/html/render.go (98%) rename {aux => extra}/server-discovery/vendor/golang.org/x/net/html/token.go (99%) rename {aux => extra}/server-discovery/vendor/golang.org/x/text/LICENSE (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/text/PATENTS (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/text/internal/format/format.go (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/text/internal/format/parser.go (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/text/internal/language/common.go (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/text/internal/language/compact.go (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/text/internal/language/compact/compact.go (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/text/internal/language/compact/language.go (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/text/internal/language/compact/parents.go (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/text/internal/language/compact/tables.go (99%) rename {aux => extra}/server-discovery/vendor/golang.org/x/text/internal/language/compact/tags.go (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/text/internal/language/compose.go (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/text/internal/language/coverage.go (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/text/internal/language/language.go (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/text/internal/language/lookup.go (99%) rename {aux => extra}/server-discovery/vendor/golang.org/x/text/internal/language/match.go (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/text/internal/language/parse.go (96%) rename {aux => extra}/server-discovery/vendor/golang.org/x/text/internal/language/tables.go (90%) rename {aux => extra}/server-discovery/vendor/golang.org/x/text/internal/language/tags.go (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/text/internal/tag/tag.go (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/text/language/coverage.go (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/text/language/display/dict.go (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/text/language/display/display.go (99%) rename {aux => extra}/server-discovery/vendor/golang.org/x/text/language/display/lookup.go (97%) rename {aux => extra}/server-discovery/vendor/golang.org/x/text/language/display/tables.go (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/text/language/doc.go (79%) rename {aux => extra}/server-discovery/vendor/golang.org/x/text/language/language.go (100%) rename {aux => extra}/server-discovery/vendor/golang.org/x/text/language/match.go (99%) rename {aux => extra}/server-discovery/vendor/golang.org/x/text/language/parse.go (97%) rename {aux => extra}/server-discovery/vendor/golang.org/x/text/language/tables.go (98%) rename {aux => extra}/server-discovery/vendor/golang.org/x/text/language/tags.go (100%) rename {aux => extra}/server-discovery/vendor/gopkg.in/yaml.v3/LICENSE (100%) rename {aux => extra}/server-discovery/vendor/gopkg.in/yaml.v3/NOTICE (100%) create mode 100644 extra/server-discovery/vendor/gopkg.in/yaml.v3/README.md rename {aux => extra}/server-discovery/vendor/gopkg.in/yaml.v3/apic.go (100%) rename {aux => extra}/server-discovery/vendor/gopkg.in/yaml.v3/decode.go (100%) rename {aux => extra}/server-discovery/vendor/gopkg.in/yaml.v3/emitterc.go (100%) rename {aux => extra}/server-discovery/vendor/gopkg.in/yaml.v3/encode.go (100%) rename {aux => extra}/server-discovery/vendor/gopkg.in/yaml.v3/parserc.go (100%) rename {aux => extra}/server-discovery/vendor/gopkg.in/yaml.v3/readerc.go (100%) rename {aux => extra}/server-discovery/vendor/gopkg.in/yaml.v3/resolve.go (100%) rename {aux => extra}/server-discovery/vendor/gopkg.in/yaml.v3/scannerc.go (100%) rename {aux => extra}/server-discovery/vendor/gopkg.in/yaml.v3/sorter.go (100%) rename {aux => extra}/server-discovery/vendor/gopkg.in/yaml.v3/writerc.go (100%) rename {aux => extra}/server-discovery/vendor/gopkg.in/yaml.v3/yaml.go (100%) rename {aux => extra}/server-discovery/vendor/gopkg.in/yaml.v3/yamlh.go (100%) rename {aux => extra}/server-discovery/vendor/gopkg.in/yaml.v3/yamlprivateh.go (100%) rename {aux => extra}/server-discovery/vendor/modules.txt (64%) rename {aux => extra}/server-discovery/vendor/moul.io/zapfilter/.all-contributorsrc (100%) rename {aux => extra}/server-discovery/vendor/moul.io/zapfilter/.dockerignore (100%) rename {aux => extra}/server-discovery/vendor/moul.io/zapfilter/.editorconfig (100%) rename {aux => extra}/server-discovery/vendor/moul.io/zapfilter/.gitattributes (100%) rename {aux => extra}/server-discovery/vendor/moul.io/zapfilter/.gitignore (100%) rename {aux => extra}/server-discovery/vendor/moul.io/zapfilter/.golangci.yml (100%) rename {aux => extra}/server-discovery/vendor/moul.io/zapfilter/.releaserc.js (100%) rename {aux => extra}/server-discovery/vendor/moul.io/zapfilter/AUTHORS (61%) rename {aux => extra}/server-discovery/vendor/moul.io/zapfilter/COPYRIGHT (100%) rename {aux => extra}/server-discovery/vendor/moul.io/zapfilter/LICENSE-APACHE (100%) rename {aux => extra}/server-discovery/vendor/moul.io/zapfilter/LICENSE-MIT (100%) rename {aux => extra}/server-discovery/vendor/moul.io/zapfilter/Makefile (100%) create mode 100644 extra/server-discovery/vendor/moul.io/zapfilter/README.md create mode 100644 extra/server-discovery/vendor/moul.io/zapfilter/depaware.txt rename {aux => extra}/server-discovery/vendor/moul.io/zapfilter/doc.go (100%) rename {aux => extra}/server-discovery/vendor/moul.io/zapfilter/package.json (100%) rename {aux => extra}/server-discovery/vendor/moul.io/zapfilter/rules.mk (73%) rename {aux => extra}/server-discovery/vendor/moul.io/zapfilter/zapfilter.go (98%) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 527134b9d..ab8b2661a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -351,14 +351,14 @@ jobs: ######################################################################################################################## # Discovery - aux-server-discovery-test: + extra-server-discovery-test: name: "Discovery Server test" runs-on: ubuntu-latest steps: - name: "Placeholder" run: echo "@todo add tests" - aux-server-discovery-release: + extra-server-discovery-release: name: "Discovery Server release ${{ matrix.os }}" strategy: fail-fast: true @@ -367,7 +367,7 @@ jobs: - { runsOn: "ubuntu-latest", os: "linux" } - { runsOn: "macos-latest", os: "darwin" } runs-on: ${{ matrix.runsOn }} - needs: [ aux-server-discovery-test ] + needs: [ extra-server-discovery-test ] env: BUILD_OS: ${{ matrix.os }} BUILD_VERSION: ${{ format(github.ref, 'refs/tags/', '') }} @@ -379,12 +379,12 @@ jobs: - uses: actions/setup-go@v3 with: { go-version: "${{ env.GO_VERSION }}" } - name: "Copy essentials" - run: cp *.md DCO LICENSE aux/server-discovery/ + run: cp *.md DCO LICENSE extra/server-discovery/ - name: "Build & release" - working-directory: aux/server-discovery/ + working-directory: extra/server-discovery/ run: make release-clean release - name: "Upload" - working-directory: aux/server-discovery/ + working-directory: extra/server-discovery/ run: make upload if: ${{ !env.ACT }} @@ -399,12 +399,12 @@ jobs: needs: - server-release - client-web-aio-release - - aux-server-discovery-release + - extra-server-discovery-release strategy: fail-fast: true matrix: include: - - { context: "aux/server-discovery", image: "cortezaproject/corteza-server-discovery" } + - { context: "extra/server-discovery", image: "cortezaproject/corteza-server-discovery" } - { context: "client/web", image: "cortezaproject/corteza-webapp" } - { context: "server", image: "cortezaproject/corteza-server" } - { context: ".", image: "cortezaproject/corteza" } diff --git a/aux/server-discovery/.env.example b/aux/server-discovery/.env.example deleted file mode 100644 index 48a8fbd6e..000000000 --- a/aux/server-discovery/.env.example +++ /dev/null @@ -1,139 +0,0 @@ -############################################################################### -############################################################################### -# Environment -# - -############################################################################### -# Type: string -# ENVIRONMENT=production - -############################################################################### -############################################################################### -# HTTP Server -# - -######################################################################################################################## -# IP and port for the HTTP server. -# Type: string -# Default: :80 -# HTTP_ADDR=:80 - -############################################################################### -# Base URL (prefix) for all routes (/api, ...) -# Type: string -# Default: / -# HTTP_BASE_URL=/ - -############################################################################### -# When webapps are enabled (HTTP_WEBAPP_ENABLED) this is moved to '/api' if not explicitly set otherwise. -# API base URL is internally prefixed with baseUrl -# Type: string -# Default: / -# HTTP_API_BASE_URL=/ - -############################################################################### -# Delays API startup for the amount of time specified (10s, 2m...). -# This delay happens before service (`WAIT_FOR_SERVICES`) probing. -# Type: time.Duration -# Default: -# WAIT_FOR= - -############################################################################### -# Show temporary status web page. -# Type: bool -# Default: -# WAIT_FOR_STATUS_PAGE= - -############################################################################### -############################################################################### -# Open search configuration -# - -############################################################################### -# IP and port for the open search. -# Use space delimited string to set multiple addresses. -# Type: []string -# ES_ADDRESS= - -############################################################################### -# Username for the open search connection. -# Type: string -# ES_USERNAME= - -############################################################################### -# Password for the open search connection. -# Type: string -# ES_PASSWORD= - -############################################################################### -# How often are indexes incremented. set value in seconds. -# Type: int -# Default: 600 -# ES_INDEX_INTERVAL=600 - -############################################################################### -# ES_ENABLE_RETRY_ON_TIMEOUT= - -############################################################################### -# ES_MAX_RETRIES= - -############################################################################### -############################################################################### -# Corteza server configuration -# - -############################################################################### -# IP and port for the corteza server. -# Type: string -# CORTEZA_SERVER_BASE_URL= - -############################################################################### -# corteza server auth url. It is set to '/api' if not explicitly set otherwise. -# API base URL is internally prefixed with baseUrl -# Type: string -# CORTEZA_SERVER_AUTH_URL=/ - -############################################################################### -# corteza server auth url for discovery api, it is set to '/api/discovery' if not explicitly set otherwise. -# API base URL is internally prefixed with baseUrl -# Type: string -# CORTEZA_SERVER_DISCOVERY_URL=/ - -############################################################################### -############################################################################### -# Corteza discovery indexer configuration -# - -############################################################################### -# Enables indexing for corteza resources. -# Type: bool -# DISCOVERY_INDEXER_ENABLED= - -############################################################################### -# Enables indexing for corteza resources based on client permissions. -# prefix is one of 'public', 'protected' or 'private'". -# Type: string -# DISCOVERY_INDEXER__INDEX_CLIENT_KEY= -# DISCOVERY_INDEXER__INDEX_CLIENT_SECRET= - - -############################################################################### -############################################################################### -# Corteza discovery searcher configuration -# - -############################################################################### -# Enables searching for corteza resources and also enables search endpoints. -# Type: bool -# DISCOVERY_SEARCHER_ENABLED= - -############################################################################### -# Used to restrict corteza resources based on client permissions. -# Type: string -# DISCOVERY_SEARCHER_CLIENT_KEY= -# DISCOVERY_SEARCHER_CLIENT_SECRET= - -############################################################################### -# It enables access to private indexing. -# Type: string -# DISCOVERY_SEARCHER_JWT_SECRET= diff --git a/aux/server-discovery/go.mod b/aux/server-discovery/go.mod deleted file mode 100644 index 30f1961fe..000000000 --- a/aux/server-discovery/go.mod +++ /dev/null @@ -1,49 +0,0 @@ -module github.com/cortezaproject/corteza-server-discovery - -go 1.17 - -require ( - github.com/cortezaproject/corteza-server v0.0.0-20220216123825-95065f8e731f - github.com/davecgh/go-spew v1.1.1 - github.com/elastic/go-elasticsearch/v7 v7.12.0 - github.com/go-chi/chi/v5 v5.0.7 - github.com/go-chi/cors v1.0.0 - github.com/go-chi/jwtauth v1.2.0 - github.com/go-oauth2/oauth2/v4 v4.3.0 - github.com/jmoiron/sqlx v1.2.0 - github.com/lestrrat-go/jwx v1.2.20 - github.com/microcosm-cc/bluemonday v1.0.16 - github.com/spf13/cast v1.3.0 - github.com/stretchr/testify v1.7.0 - go.uber.org/atomic v1.7.0 - go.uber.org/zap v1.20.0 -) - -require ( - github.com/SentimensRG/ctx v0.0.0-20180729130232-0bfd988c655d // indirect - github.com/aymerick/douceur v0.2.0 // indirect - github.com/cortezaproject/corteza-locale v0.0.0-20220126101537-7502490d290b // indirect - github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.0-20210816181553-5444fa50b93d // indirect - github.com/dgrijalva/jwt-go v3.2.0+incompatible // indirect - github.com/go-chi/chi v3.3.4+incompatible // indirect - github.com/goccy/go-json v0.9.4 // indirect - github.com/google/uuid v1.1.1 // indirect - github.com/gorilla/css v1.0.0 // indirect - github.com/inconshreveable/mousetrap v1.0.0 // indirect - github.com/joho/godotenv v1.4.0 // indirect - github.com/lestrrat-go/backoff/v2 v2.0.8 // indirect - github.com/lestrrat-go/blackmagic v1.0.0 // indirect - github.com/lestrrat-go/httpcc v1.0.0 // indirect - github.com/lestrrat-go/iter v1.0.1 // indirect - github.com/lestrrat-go/option v1.0.0 // indirect - github.com/pkg/errors v0.9.1 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/spf13/cobra v0.0.3 // indirect - github.com/spf13/pflag v1.0.3 // indirect - go.uber.org/multierr v1.6.0 // indirect - golang.org/x/crypto v0.0.0-20220214200702-86341886e292 // indirect - golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 // indirect - golang.org/x/text v0.3.7 // indirect - gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect - moul.io/zapfilter v1.6.1 // indirect -) diff --git a/aux/server-discovery/go.sum b/aux/server-discovery/go.sum deleted file mode 100644 index d9b7edc19..000000000 --- a/aux/server-discovery/go.sum +++ /dev/null @@ -1,754 +0,0 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= -cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= -cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= -cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.67.0/go.mod h1:YNan/mUhNZFrYUor0vqrsQ0Ffl7Xtm/ACOy/vsTS858= -cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= -cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= -cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/766b/chi-prometheus v0.0.0-20180509160047-46ac2b31aa30/go.mod h1:X/LhbmoBoRu8TxoGIOIraVNhfz3hhikJoaelrOuhdPY= -github.com/99designs/basicauth-go v0.0.0-20160802081356-2a93ba0f464d/go.mod h1:3cARGAK9CfW3HoxCy1a0G4TKrdiKke8ftOMEOHyySYs= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= -github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= -github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= -github.com/Masterminds/squirrel v1.1.1-0.20191017225151-12f2162c8d8d/go.mod h1:yaPeOnPG5ZRwL9oKdTsO/prlkPbXWZlRVMQ/gGlzIuA= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/PaesslerAG/gval v0.1.1/go.mod h1:y/nm5yEyTeX6av0OfKJNp9rBNj2XrGhAf5+v24IBN1I= -github.com/PaesslerAG/gval v1.0.0/go.mod h1:y/nm5yEyTeX6av0OfKJNp9rBNj2XrGhAf5+v24IBN1I= -github.com/PaesslerAG/gval v1.1.1-0.20201104175134-7847ed0c7671/go.mod h1:Fa8gfkCmUsELXgayr8sfL/sw+VzCVoa03dcOcR/if2w= -github.com/PaesslerAG/jsonpath v0.1.0/go.mod h1:4BzmtoM/PI8fPO4aQGIusjGxGir2BzcV0grWtFzq1Y8= -github.com/PaesslerAG/jsonpath v0.1.1/go.mod h1:lVboNxFGal/VwW6d9JzIy56bUsYAP6tH/x80vjnCseY= -github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc= -github.com/SentimensRG/ctx v0.0.0-20180729130232-0bfd988c655d h1:CbB/Ef3TyBvSSJx2HDSUiw49ONTpaX6BGiI0jJEX6b8= -github.com/SentimensRG/ctx v0.0.0-20180729130232-0bfd988c655d/go.mod h1:cfn0Ycx1ASzCkl8+04zI4hrclf9YQ1QfncxzFiNtQLo= -github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/andybalholm/brotli v1.0.0/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y= -github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y= -github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= -github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk= -github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4= -github.com/beevik/etree v1.1.0/go.mod h1:r8Aw8JqVegEf0w2fDnATrX9VpkMcyFeM0FhwO62wh+A= -github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= -github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= -github.com/brianvoe/gofakeit/v6 v6.5.0/go.mod h1:palrJUk4Fyw38zIFB/uBZqsgzW5VsNllhHKKwAebzew= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cortezaproject/corteza-locale v0.0.0-20220126101537-7502490d290b h1:Sd8wmIZzZxkvsC42RvyioFTHr7++2VXaLQvZ1k0B1lc= -github.com/cortezaproject/corteza-locale v0.0.0-20220126101537-7502490d290b/go.mod h1:wsI1UftEdBqTuEDKBZmx2LfNu/kZun5pRbCAi420JCg= -github.com/cortezaproject/corteza-server v0.0.0-20220216123825-95065f8e731f h1:9ns1GCCLa7RfPoUiZGnJNtPmXoM2pjWxCMnohnT6KF4= -github.com/cortezaproject/corteza-server v0.0.0-20220216123825-95065f8e731f/go.mod h1:oESqOX1yA2Dm8oYsfszUIoLYqS4BQFyBf8Bk4JPOn94= -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/crewjam/httperr v0.0.0-20190612203328-a946449404da/go.mod h1:+rmNIXRvYMqLQeR4DHyTvs6y0MEMymTz4vyFpFkKTPs= -github.com/crewjam/saml v0.4.5/go.mod h1:qCJQpUtZte9R1ZjUBcW8qtCNlinbO363ooNl02S68bk= -github.com/crusttech/go-oidc v0.0.0-20180918092017-982855dad3e1/go.mod h1:2LVBu240CBZgYkGOSRx733tkh9QUNcH+fIqmeAsdrds= -github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dchest/uniuri v0.0.0-20160212164326-8902c56451e9/go.mod h1:GgB8SF9nRG+GqaDtLcwJZsQFhcogVCJ79j4EdT0c2V4= -github.com/deckarep/golang-set v1.7.1/go.mod h1:93vsz/8Wt4joVM7c2AVqh+YRMiUSc14yDtF28KmMOgQ= -github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.0-20210816181553-5444fa50b93d h1:1iy2qD6JEhHKKhUOA9IWs7mjco7lnw2qx8FsRI2wirE= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.0-20210816181553-5444fa50b93d/go.mod h1:tmAIfUFEirG/Y8jhZ9M+h36obRZAk/1fcSpXwAVlfqE= -github.com/deepmap/oapi-codegen v1.6.1/go.mod h1:ryDa9AgbELGeB+YEXE1dR53yAjHwFvE9iAUlWl9Al3M= -github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/dgoogauth v0.0.0-20190221195224-5a805980a5f3/go.mod h1:hEfFauPHz7+NnjR/yHJGhrKo1Za+zStgwUETx3yzqgY= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/disintegration/imaging v1.6.0/go.mod h1:xuIt+sRxDFrHS0drzXUlCJthkJ8k7lkkUojDSR247MQ= -github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= -github.com/dop251/goja v0.0.0-20210726224656-a55e4cfac4cf/go.mod h1:R9ET47fwRVRPZnOGvHxxhuZcbrMCuiqOz3Rlrh4KSnk= -github.com/dop251/goja_nodejs v0.0.0-20210225215109-d91c329300e7/go.mod h1:hn7BA7c8pLvoGndExHudxTDKZ84Pyvv+90pbBjbTz0Y= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/edwvee/exiffix v0.0.0-20180602190213-b57537c92a6b/go.mod h1:KoE3Ti1qbQXCb3s/XGj0yApHnbnNnn1bXTtB5Auq/Vc= -github.com/elastic/go-elasticsearch/v7 v7.12.0 h1:j4tvcMrZJLp39L2NYvBb7f+lHKPqPHSL3nvB8+/DV+s= -github.com/elastic/go-elasticsearch/v7 v7.12.0/go.mod h1:OJ4wdbtDNk5g503kvlHLyErCgQwwzmDtaFC4XyOxXA4= -github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/evanw/esbuild v0.12.16/go.mod h1:y2AFBAGVelPqPodpdtxWWqe6n2jYf5FrsJbligmRmuw= -github.com/exoscale/egoscale v0.80.1/go.mod h1:wi0myUxPsV8SdEtdJHQJxFLL/wEw9fiw9Gs1PWRkvkM= -github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= -github.com/fastly/go-utils v0.0.0-20180712184237-d95a45783239/go.mod h1:Gdwt2ce0yfBxPvZrHkprdPPTTS3N5rwmLE8T22KBXlw= -github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/gabriel-vasile/mimetype v1.1.2/go.mod h1:6CDPel/o/3/s4+bp6kIbsWATq8pmgOisOPG40CJa6To= -github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc= -github.com/getkin/kin-openapi v0.53.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= -github.com/getsentry/sentry-go v0.1.1/go.mod h1:2QfSdvxz4IZGyB5izm1TtADFhlhfj1Dcesrg8+A/T9Y= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-chi/chi v1.5.1/go.mod h1:REp24E+25iKvxgeTfHmdUoL5x15kBiDBlnIl5bCwe2k= -github.com/go-chi/chi v3.3.4+incompatible h1:X+OApYAmoQS6jr1WoUgW+t5Ry5RYGXq2A//WAL5xdAU= -github.com/go-chi/chi v3.3.4+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= -github.com/go-chi/chi/v5 v5.0.0/go.mod h1:BBug9lr0cqtdAhsu6R4AAdvufI0/XBzAQSsUqJpoZOs= -github.com/go-chi/chi/v5 v5.0.7 h1:rDTPXLDHGATaeHvVlLcR4Qe0zftYethFucbjVQ1PxU8= -github.com/go-chi/chi/v5 v5.0.7/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8= -github.com/go-chi/cors v1.0.0 h1:e6x8k7uWbUwYs+aXDoiUzeQFT6l0cygBYyNhD7/1Tg0= -github.com/go-chi/cors v1.0.0/go.mod h1:K2Yje0VW/SJzxiyMYu6iPQYa7hMjQX2i/F491VChg1I= -github.com/go-chi/httprate v0.4.0/go.mod h1:7e7qjQtHzEbdyW5TYQrl4X2uNRCnlTajictc7B4ftgc= -github.com/go-chi/jwtauth v0.0.0-20190109153619-47840abb19b3/go.mod h1:ZdbLUuUBAgS2xbrMtdm0EXaHZ2uruR+RMdGn2bnlUtU= -github.com/go-chi/jwtauth v1.2.0 h1:Z116SPpevIABBYsv8ih/AHYBHmd4EufKSKsLUnWdrTM= -github.com/go-chi/jwtauth v1.2.0/go.mod h1:NTUpKoTQV6o25UwYE6w/VaLUu83hzrVKYTVo+lE6qDA= -github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-oauth2/oauth2/v4 v4.3.0 h1:vp4goUmrq1YaPzpm34FDLlZiAkIqK3LsuNTTRyTnPbo= -github.com/go-oauth2/oauth2/v4 v4.3.0/go.mod h1:+rsyi0o/ZbSfhL/3Xr/sAtL4brS+IdGj86PHVlPjE+4= -github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-session/session v3.1.2+incompatible/go.mod h1:8B3iivBQjrz/JtC68Np2T1yBBLxTan3mn/3OM0CyRt0= -github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= -github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/goccy/go-json v0.3.5/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= -github.com/goccy/go-json v0.7.10/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= -github.com/goccy/go-json v0.9.4 h1:L8MLKG2mvVXiQu07qB6hmfqeSYQdOnqPot2GhsIwIaI= -github.com/goccy/go-json v0.9.4/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= -github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y= -github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200905233945-acf8798be1f7/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY= -github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= -github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorhill/cronexpr v0.0.0-20180427100037-88b0669f7d75/go.mod h1:g2644b03hfBX9Ov0ZBDgXXens4rxSxmqFBbhvKv2yVA= -github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= -github.com/gorilla/csrf v1.7.0/go.mod h1:+a/4tCmqhG6/w4oafeAZ9pEa3/NZOWYVbD9fV0FwIQA= -github.com/gorilla/css v1.0.0 h1:BQqNyPTi50JCFMTw/b67hByjMVXZRwGha6wxVGkeihY= -github.com/gorilla/css v1.0.0/go.mod h1:Dn721qIggHpt4+EFCcTLTU/vk5ySda2ReITrtgBl60c= -github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gorilla/pat v0.0.0-20180118222023-199c85a7f6d1/go.mod h1:YeAe0gNeiNT5hoiZRI4yiOky6jVdNvfO2N6Kav/HmxY= -github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= -github.com/gorilla/sessions v1.1.1/go.mod h1:8KCfur6+4Mqcc6S0FEfKuN15Vl5MgXW92AE8ovaJD0w= -github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= -github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA= -github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/jarcoal/httpmock v0.0.0-20180424175123-9c70cfe4a1da/go.mod h1:ks+b9deReOc7jgqp+e7LuFiCBH6Rm5hL32cLcEAArb4= -github.com/jarcoal/httpmock v1.0.6/go.mod h1:ATjnClrvW/3tijVmpL/va5Z3aAyGvqU3gCT8nX0Txik= -github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869/go.mod h1:cJ6Cj7dQo+O6GJNiMx+Pa94qKj+TG8ONdKHgMNIyyag= -github.com/jmoiron/sqlx v1.2.0 h1:41Ip0zITnmWNR/vHV+S4m+VoUivnWY5E4OJfLZjCJMA= -github.com/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks= -github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= -github.com/joho/godotenv v1.4.0 h1:3l4+N6zfMWnkbPEXKng2o2/MR5mSwTrBih4ZEkkz1lg= -github.com/joho/godotenv v1.4.0/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= -github.com/jonboulle/clockwork v0.2.0/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= -github.com/jonboulle/clockwork v0.2.1/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= -github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.10.4/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.10.10/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/labstack/echo/v4 v4.2.1/go.mod h1:AA49e0DZ8kk5jTOOCKNuPR6oTnBS0dYiM4FW1e6jwpg= -github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= -github.com/lann/builder v0.0.0-20180802200727-47ae307949d0/go.mod h1:dXGbAdH5GtBTC4WfIxhKZfyBF/HBFgRZSWwZ9g/He9o= -github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0/go.mod h1:vmVJ0l/dxyfGW6FmdpVm2joNMFikkuWg0EoCKLGUMNw= -github.com/lestrrat-go/backoff/v2 v2.0.7/go.mod h1:rHP/q/r9aT27n24JQLa7JhSQZCKBBOiM/uP402WwN8Y= -github.com/lestrrat-go/backoff/v2 v2.0.8 h1:oNb5E5isby2kiro9AgdHLv5N5tint1AnDVVf2E2un5A= -github.com/lestrrat-go/backoff/v2 v2.0.8/go.mod h1:rHP/q/r9aT27n24JQLa7JhSQZCKBBOiM/uP402WwN8Y= -github.com/lestrrat-go/blackmagic v1.0.0 h1:XzdxDbuQTz0RZZEmdU7cnQxUtFUzgCSPq8RCz4BxIi4= -github.com/lestrrat-go/blackmagic v1.0.0/go.mod h1:TNgH//0vYSs8VXDCfkZLgIrVTTXQELZffUV0tz3MtdQ= -github.com/lestrrat-go/codegen v1.0.0/go.mod h1:JhJw6OQAuPEfVKUCLItpaVLumDGWQznd1VaXrBk9TdM= -github.com/lestrrat-go/envload v0.0.0-20180220234015-a3eb8ddeffcc/go.mod h1:kopuH9ugFRkIXf3YoqHKyrJ9YfUFsckUU9S7B+XP+is= -github.com/lestrrat-go/httpcc v1.0.0 h1:FszVC6cKfDvBKcJv646+lkh4GydQg2Z29scgUfkOpYc= -github.com/lestrrat-go/httpcc v1.0.0/go.mod h1:tGS/u00Vh5N6FHNkExqGGNId8e0Big+++0Gf8MBnAvE= -github.com/lestrrat-go/iter v1.0.0/go.mod h1:zIdgO1mRKhn8l9vrZJZz9TUMMFbQbLeTsbqPDrJ/OJc= -github.com/lestrrat-go/iter v1.0.1 h1:q8faalr2dY6o8bV45uwrxq12bRa1ezKrB6oM9FUgN4A= -github.com/lestrrat-go/iter v1.0.1/go.mod h1:zIdgO1mRKhn8l9vrZJZz9TUMMFbQbLeTsbqPDrJ/OJc= -github.com/lestrrat-go/jwx v0.9.0/go.mod h1:iEoxlYfZjvoGpuWwxUz+eR5e6KTJGsaRcy/YNA/UnBk= -github.com/lestrrat-go/jwx v1.1.0/go.mod h1:vn9FzD6gJtKkgYs7RTKV7CjWtEka8F/voUollhnn4QE= -github.com/lestrrat-go/jwx v1.2.11/go.mod h1:25DcLbNWArPA/Ew5CcBmewl32cJKxOk5cbepBsIJFzw= -github.com/lestrrat-go/jwx v1.2.20 h1:ckMNlG0MqCcVp7LnD5FN2+459ndm7SW3vryE79Dz9nk= -github.com/lestrrat-go/jwx v1.2.20/go.mod h1:tLE1XszaFgd7zaS5wHe4NxA+XVhu7xgdRvDpNyi3kNM= -github.com/lestrrat-go/option v0.0.0-20210103042652-6f1ecfceda35/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I= -github.com/lestrrat-go/option v1.0.0 h1:WqAWL8kh8VcSoD6xjSH34/1m8yxluXQbDeKNfvFeEO4= -github.com/lestrrat-go/option v1.0.0/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I= -github.com/lestrrat-go/pdebug/v3 v3.0.1/go.mod h1:za+m+Ve24yCxTEhR59N7UlnJomWwCiIqbJRmKeiADU4= -github.com/lestrrat-go/strftime v1.0.5/go.mod h1:E1nN3pCbtMSu1yjSVeyuRFVm/U0xoR76fd03sz+Qz4g= -github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/markbates/going v1.0.0/go.mod h1:I6mnB4BPnEeqo85ynXIx1ZFLLbtiLHNXVgWeFO9OGOA= -github.com/markbates/goth v1.67.1/go.mod h1:EyLFHGU5ySr2GXRDyJH5nu2dA7parbC8QwIYW/rGcWg= -github.com/matryer/moq v0.0.0-20190312154309-6cfb0558e1bd/go.mod h1:9ELz6aaclSIGnZBoaSLZ3NAl1VTufbOrXBPvtcy6WiQ= -github.com/mattermost/xml-roundtrip-validator v0.0.0-20201213122252-bcd7e1b9601e/go.mod h1:qccnGMcpgwcNaBnxqpJpWWUiPNr5H3O8eDgGV9gT5To= -github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= -github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= -github.com/mattn/go-sqlite3 v1.14.0/go.mod h1:JIl7NbARA7phWnGvh0LKTyg7S9BA+6gx71ShQilpsus= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/microcosm-cc/bluemonday v1.0.16 h1:kHmAq2t7WPWLjiGvzKa5o3HzSfahUKiOq7fAPUiMNIc= -github.com/microcosm-cc/bluemonday v1.0.16/go.mod h1:Z0r70sCuXHig8YpBzCc5eGHAap2K7e/u082ZUpDRRqM= -github.com/minio/minio-go/v6 v6.0.39/go.mod h1:qD0lajrGW49lKZLtXKtCB4X/qkMf0a5tBvN2PaZg7Gg= -github.com/minio/sha256-simd v0.1.1/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM= -github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= -github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ= -github.com/mrjones/oauth v0.0.0-20180629183705-f4e24b6d100c/go.mod h1:skjdDftzkFALcuGzYSklqYd8gvat6F1gZJ4YPVbkZpM= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/ngrok/sqlmw v0.0.0-20200129213757-d5c93a81bec6/go.mod h1:E26fwEtRNigBfFfHDWsklmo0T7Ixbg0XXgck+Hq4O9k= -github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= -github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.13.0/go.mod h1:+REjRxOmWfHCjfv9TTWB1jD1Frx4XydAD3zm1lskyM0= -github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/pingcap/errors v0.11.1/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/pquerna/cachecontrol v0.0.0-20180517163645-1555304b9b35/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/russellhaering/goxmldsig v1.1.0/go.mod h1:QK8GhXPB3+AfuCrfo0oRISa9NfzeCpWmxeGnqEpDF9o= -github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd/go.mod h1:hPqNNc0+uJM6H+SuU8sEs5K5IQeKccPqeSjfgcKGgPk= -github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw= -github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/sony/sonyflake v1.0.0/go.mod h1:Jv3cfhf/UFtolOTTRd3q4Nl6ENqM+KfyZ5PseKfZGF4= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= -github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v0.0.3 h1:ZlrZ4XsMRm04Fr5pSFxBgfND2EBVa1nLpiy1stUsX/8= -github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/steinfletcher/apitest v1.1.5/go.mod h1:LOVbGzWvWCiiVE4PZByfhRnA5L00l5uZQEx403xQ4K8= -github.com/steinfletcher/apitest v1.3.8/go.mod h1:LOVbGzWvWCiiVE4PZByfhRnA5L00l5uZQEx403xQ4K8= -github.com/steinfletcher/apitest-jsonpath v1.3.0/go.mod h1:3wP64zeeW8CNUN1g01ZaH0fnVco4s4a6z7KcLTTR6e0= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.3.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/tebeka/strftime v0.1.5/go.mod h1:29/OidkoWHdEKZqzyDLUyC+LmgDgdHo4WAFCDT7D/Ig= -github.com/tidwall/btree v0.0.0-20191029221954-400434d76274/go.mod h1:huei1BkDWJ3/sLXmO+bsCNELL+Bp2Kks9OLyQFkzvA8= -github.com/tidwall/buntdb v1.1.2/go.mod h1:xAzi36Hir4FarpSHyfuZ6JzPJdjRZ8QlLZSntE2mqlI= -github.com/tidwall/gjson v1.3.4/go.mod h1:P256ACg0Mn+j1RXIDXoss50DeIABTYK1PULOJHhxOls= -github.com/tidwall/gjson v1.6.0/go.mod h1:P256ACg0Mn+j1RXIDXoss50DeIABTYK1PULOJHhxOls= -github.com/tidwall/grect v0.0.0-20161006141115-ba9a043346eb/go.mod h1:lKYYLFIr9OIgdgrtgkZ9zgRxRdvPYsExnYBsEAd8W5M= -github.com/tidwall/match v1.0.1/go.mod h1:LujAq0jyVjBy028G1WhWfIzbpQfMO8bBZ6Tyb0+pL9E= -github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= -github.com/tidwall/pretty v1.0.1/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= -github.com/tidwall/rtree v0.0.0-20180113144539-6cd427091e0e/go.mod h1:/h+UnNGt0IhNNJLkGikcdcJqm66zGD/uJGMRxK/9+Ao= -github.com/tidwall/tinyqueue v0.0.0-20180302190814-1e39f5511563/go.mod h1:mLqSmt7Dv/CNneF2wfcChfN1rvapyQr01LGKnKex0DQ= -github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasthttp v1.14.0/go.mod h1:ol1PCaL0dX20wC0htZ7sYCsvCYmrouYra0zHzaclZhE= -github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= -github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= -github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= -github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= -github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= -github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= -github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI= -github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg= -github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM= -github.com/yudai/pp v2.0.1+incompatible/go.mod h1:PuxR/8QJ7cyCkFp/aUDS+JY727OFEZkTdatxwunjIkc= -github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/zenazn/goji v0.9.1-0.20160507202103-64eb34159fe5/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= -go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= -go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= -go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI= -go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= -go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= -go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= -go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= -go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= -go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= -go.uber.org/zap v1.20.0 h1:N4oPlghZwYG55MlU6LXk/Zp00FVNE9X9wrYO8CEs4lc= -go.uber.org/zap v1.20.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190513172903-22d7a77e9e5f/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201217014255-9d1352758620/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/crypto v0.0.0-20220214200702-86341886e292 h1:f+lwQ+GtmgoY+A2YaQxlSOnDjXcQ7ZRLWOHbC6HtRqE= -golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= -golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20190910094157-69e4b8554b2a/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200927032502-5d4f70055728/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200930145003-4acb6c075d10/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 h1:CIJ76btIcR3eFI5EgSo6k1qKw9KJexJuRLI9G7Hp5wE= -golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501145240-bc7a7d42d5c3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200826173525-f9321e4c35a6/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20200918232735-d647fc253266/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= -golang.org/x/tools v0.0.0-20200929161345-d7fc70abf50f/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= -golang.org/x/tools v0.0.0-20210114065538-d78b04bdf963/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= -google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= -google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.32.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200929141702-51c3e5b607fe/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= -gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/ini.v1 v1.42.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/mail.v2 v2.3.1/go.mod h1:htwXN1Qh09vZJ1NVKxQqHPBaCBbzKhp5GzuJEA4VJWw= -gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -moul.io/zapfilter v1.6.1 h1:D5ySvqGTADgtOmjhKCrCOnH3DHZjIqIAQD0kwCeyBIw= -moul.io/zapfilter v1.6.1/go.mod h1:zfT2z4z2YfI63Kifpe8GMt0M+sBXs8WQ4mfne4bGmic= -rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/qr v0.2.0/go.mod h1:IF+uZjkb9fqyeF/4tlBoynqmQxUoPfWEKh921coOuXs= -rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= -rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/inc_footer.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/inc_footer.yaml deleted file mode 100644 index 00dd78856..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/inc_footer.yaml +++ /dev/null @@ -1,2 +0,0 @@ ---- -version: Version {{version}} diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/expressions-help.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/expressions-help.yaml deleted file mode 100644 index 6b63cfb3d..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/expressions-help.yaml +++ /dev/null @@ -1,124 +0,0 @@ ---- -calculate: Field expressions provide a way to calculate field values based on the defined expression. -categories: - dateTime: - earliest: Returns earliest DateTime - label: Date and Time - latest: Returns latest DateTime - modTime: Returns modified DateTime string - parseDuration: Returns parsed duration - parseISOTime: Returns parsed ISO DateTime string - strftime: Returns DateTime string for the specified date and format - general: - description: Returns the first non null value - label: General - number: - ceil: Rounds number up to the nearest integer - floor: Rounds number down to the nearest integer - label: Number - max: Returns item with the highest value - min: Returns item with the lowest value - rounds: Rounds a floating point number to the specified number of digits - string: - format: Returns the formatted string - label: String - longest: Returns the longest string - shortest: Returns the shortest string - toLower: Converts all characters to lowercase - toUpper: Converts all characters to uppercase - trim: Removes spaces at the beginning and at the end of the string - trimLeft: Removes character from the beginning of the string - trimRight: Removes character from the end of the string -example-description: Below are a few examples of different use cases of field expressions. -examples: Examples -field: Field Expressions -formatCategories: - dateTime: - A: Returns the full national weekday name - B: Returns the full national month name - C: Returns year / 100 as a decimal number; single digits are preceded by a zero - D: Equivalent to %m/%d/%y - F: Equivalent to %Y-%m-%d - H: Returns the hour (24-hour clock) as a decimal number (00-23) - I: Returns the hour (12-hour clock) as a decimal number (01-12) - M: Returns the minute as a decimal number (00-59) - R: Equivalent to %H:%M - S-middle: Returns the millisecond as a decimal number (000-999) - S-second: Returns the second as a decimal number (00-60) - T: Equivalent to %H:%M:%S - U: Returns the week number of the year (Sunday as the first day of the week) as a decimal number (00-53) - V: Returns the week number of the year (Monday as the first day of the week) as a decimal number (01-53) - W: Returns the week number of the year (Monday as the first day of the week) as a decimal number (00-53) - X: Returns the national representation of the time - "Y": Returns the year with century as a decimal number - Z: Returns the time zone name - a: Returns the abbreviated national weekday name - b: Returns the abbreviated national month name - c: Returns the national representation of time and date - d: Returns the day of the month as a decimal number (01-31) - e: Returns the day of the month as a decimal number (1-31) - j: Returns the day of the year as a decimal number (001-366) - k: Returns the hour (24-hour clock) as a decimal number (0-23) - l: Returns the hour (12-hour clock) as a decimal number (1-12) - label: Date and Time formatting - m: Returns the month as a decimal number (01-12) - "n": |- - Returns a newline ( - ) - p: Returns the national representation of either "ante meridiem" (a.m.) or "post meridiem" (p.m.) - percent: Returns a % - r: Equivalent to %I:%M:%S %p - t: Returns a tab - u: Returns the weekday (Monday as the first day of the week) as a decimal number (1-7) - v: Equivalent to %e-%b-%Y - w: Returns the weekday (Sunday as the first day of the week) as a decimal number (0-6) - x: Returns the national representation of the date - "y": Returns the year without century as a decimal number (00-99) - z: Returns the time zone offset from UTC - string: - E: Returns the floating point number in scientific notation; upper-case E - O: Returns the number in base 8 with 0o prefix - X: Returns the number in base 16; upper-case A-F - b: Returns the number in base 2 (in the binary format) - binary: Returns the floating point number in scientific notation with binary exponent - d: Returns the number in base 10 - e: Returns the floating point number in scientific notation; lower-case e - f: Returns the floating point number with a decimal point - label: String formatting - o: Returns the number in base 8 - t: Returns the boolean value as true/false - v: Returns the raw value - x: Returns the number in base 16; lower-case a-f -formatting-parameters: - description: Here is a complete list of available formatting options. - label: Formatting parameters -helper-functions: - description: We provide a set of helper functions that extend the capabilites of field expressions. - label: Helper functions - note: 'NOTE: Only the "General" functions can be used on all types of fields. The other functions are limited to their respective field type.' -instructions: 'To write the expression you can use the following operators:' -operators: - all-new-values: (Alle neuen Variablen) - comparators: 'Comparators: ' - control-order: 'Control order of evaluation: ' - field-name: field-name - location: 'Depending on where the field expression is used it has access to different variables:' - logical: 'Logical: ' - modifiers: 'Modifiers: ' - more: 'More: ' - new: new - new-value: (neuer-Wert) - new-value-with-comma: '(neuer-Wert), ' - old: old - old-value: oldValue - old-value-brackets: '(old value), ' - record: '(record), ' - sanitizer: Sanitizer - sanitizers: 'Sanitizers: ' - validator: Validator - validators: 'Validators: ' - value: value - value-expression: Value expression - value-expressions: 'Value expressions: ' - values: values -write: Writing field expressions is like writing an equation. Instead of only using constants, you can pass in the field name, and it will be evaluated as the field value for that record. diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/login.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/login.yaml deleted file mode 100644 index db803e12c..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/login.yaml +++ /dev/null @@ -1,22 +0,0 @@ -template: - title: Log in - form: - email: - label: E-mail - placeholder: email@domain.ltd - password: - label: Password - placeholder: password - button: - login-and-remember: Log in and remember me - login: Log in - continue: Continue - links: - request-password-reset: Forgot your password? - signup: Create a new account - external: - login-with: Login with {{idp}} - -alerts: - logged-in: You are now logged-in. - local-disabled: Local accounts disabled diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/logout.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/logout.yaml deleted file mode 100644 index 7b93bc8ac..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/logout.yaml +++ /dev/null @@ -1,3 +0,0 @@ -template: - log-out: Logout successful. - log-in: Click here to log in. diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/oauth2-authorize-client.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/oauth2-authorize-client.yaml deleted file mode 100644 index a5c307dcf..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/oauth2-authorize-client.yaml +++ /dev/null @@ -1,14 +0,0 @@ -template: - title: Authorize - form: - greeting-paragraph: Hello - question-for-client: would like to perform actions on this Corteza server on your behalf. - buttons: - allow: Allow - deny: Deny - links: - mistake: If this is a mistake, please log out. - errors: - invalid-user: Cannot continue with unauthorized email, visit your profile and resolve the issue. -alerts: - denied: cannot authorize {{client}}, no permissions. diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/pending-email-confirmation.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/pending-email-confirmation.yaml deleted file mode 100644 index c190849b7..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/pending-email-confirmation.yaml +++ /dev/null @@ -1,4 +0,0 @@ -template: - title: Confirm your email - instructions: You should receive email confirmation link to your inbox in a few moments. - links: Create new account or log in. diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/request-password-reset.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/request-password-reset.yaml deleted file mode 100644 index 56ac883fb..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/request-password-reset.yaml +++ /dev/null @@ -1,9 +0,0 @@ -template: - title: Request password reset link - form: - email: - label: E-mail - placeholder: email@domain.ltd - buttons: - request: Request password reset link via email - links: Return to the login page diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/compose.settings.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/compose.settings.yaml deleted file mode 100644 index d66887b3c..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/compose.settings.yaml +++ /dev/null @@ -1,11 +0,0 @@ -editor: - basic: - attachments: - max-size: Max size (MB) - page: Page attachments - record: Record attachments - type: - description: 'MIME types, separated with ",". Example: "text/plain,text/csv"' - whitelist: File type whitelist - title: Basic - title: Compose settings diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/ui.settings.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/ui.settings.yaml deleted file mode 100644 index bdf4641f7..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/ui.settings.yaml +++ /dev/null @@ -1,24 +0,0 @@ -editor: - title: 'User Interface Settings' - - mainLogo: - title: 'Main logo' - - uploader: - instructions: 'Click or drop main logo here to upload' - uploading: 'Uploading main logo' - - iconLogo: - title: 'Icon logo' - - uploader: - instructions: 'Click or drop icon logo image here to upload' - uploading: 'Uploading icon logo' - - favicon: - title: 'Favicon' - - uploader: - instructions: 'Click or drop favicon file here to upload' - uploading: 'Uploading favicon' - diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/expressions-help.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/expressions-help.yaml deleted file mode 100644 index ee10c83a8..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/expressions-help.yaml +++ /dev/null @@ -1,123 +0,0 @@ -calculate: Field expressions provide a way to calculate field values based on the defined expression. -categories: - dateTime: - earliest: Returns earliest DateTime - label: Date and Time - latest: Returns latest DateTime - modTime: Returns modified DateTime string - parseDuration: Returns parsed duration - parseISOTime: Returns parsed ISO DateTime string - strftime: Returns DateTime string for the specified date and format - general: - description: Returns the first non null value - label: General - number: - ceil: Rounds number up to the nearest integer - floor: Rounds number down to the nearest integer - label: Number - max: Returns item with the highest value - min: Returns item with the lowest value - rounds: Rounds a floating point number to the specified number of digits - string: - format: Returns the formatted string - label: String - longest: Returns the longest string - shortest: Returns the shortest string - toLower: Converts all characters to lowercase - toUpper: Converts all characters to uppercase - trim: Removes spaces at the beginning and at the end of the string - trimLeft: Removes character from the beginning of the string - trimRight: Removes character from the end of the string -example-description: Below are a few examples of different use cases of field expressions. -examples: Examples -field: Field Expressions -formatCategories: - dateTime: - A: Returns the full national weekday name - B: Returns the full national month name - C: Returns year / 100 as a decimal number; single digits are preceded by a zero - D: Equivalent to %m/%d/%y - F: Equivalent to %Y-%m-%d - H: Returns the hour (24-hour clock) as a decimal number (00-23) - I: Returns the hour (12-hour clock) as a decimal number (01-12) - M: Returns the minute as a decimal number (00-59) - R: Equivalent to %H:%M - S-middle: Returns the millisecond as a decimal number (000-999) - S-second: Returns the second as a decimal number (00-60) - T: Equivalent to %H:%M:%S - U: Returns the week number of the year (Sunday as the first day of the week) as a decimal number (00-53) - V: Returns the week number of the year (Monday as the first day of the week) as a decimal number (01-53) - W: Returns the week number of the year (Monday as the first day of the week) as a decimal number (00-53) - X: Returns the national representation of the time - "Y": Returns the year with century as a decimal number - Z: Returns the time zone name - a: Returns the abbreviated national weekday name - b: Returns the abbreviated national month name - c: Returns the national representation of time and date - d: Returns the day of the month as a decimal number (01-31) - e: Returns the day of the month as a decimal number (1-31) - j: Returns the day of the year as a decimal number (001-366) - k: Returns the hour (24-hour clock) as a decimal number (0-23) - l: Returns the hour (12-hour clock) as a decimal number (1-12) - label: Date and Time formatting - m: Returns the month as a decimal number (01-12) - "n": |- - Returns a newline ( - ) - p: Returns the national representation of either "ante meridiem" (a.m.) or "post meridiem" (p.m.) - percent: Returns a % - r: Equivalent to %I:%M:%S %p - t: Returns a tab - u: Returns the weekday (Monday as the first day of the week) as a decimal number (1-7) - v: Equivalent to %e-%b-%Y - w: Returns the weekday (Sunday as the first day of the week) as a decimal number (0-6) - x: Returns the national representation of the date - "y": Returns the year without century as a decimal number (00-99) - z: Returns the time zone offset from UTC - string: - E: Returns the floating point number in scientific notation; upper-case E - O: Returns the number in base 8 with 0o prefix - X: Returns the number in base 16; upper-case A-F - b: Returns the number in base 2 (in the binary format) - binary: Returns the floating point number in scientific notation with binary exponent - d: Returns the number in base 10 - e: Returns the floating point number in scientific notation; lower-case e - f: Returns the floating point number with a decimal point - label: String formatting - o: Returns the number in base 8 - t: Returns the boolean value as true/false - v: Returns the raw value - x: Returns the number in base 16; lower-case a-f -formatting-parameters: - description: Here is a complete list of available formatting options. - label: Formatting parameters -helper-functions: - description: We provide a set of helper functions that extend the capabilites of field expressions. - label: Helper functions - note: 'NOTE: Only the "General" functions can be used on all types of fields. The other functions are limited to their respective field type.' -instructions: 'To write the expression you can use the following operators:' -operators: - all-new-values: (all new values) - comparators: 'Comparators: ' - control-order: 'Control order of evaluation: ' - field-name: field-name - location: 'Depending on where the field expression is used it has access to different variables:' - logical: 'Logical: ' - modifiers: 'Modifiers: ' - more: 'More: ' - new: new - new-value: (new-value) - new-value-with-comma: '(new-value), ' - old: old - old-value: oldValue - old-value-brackets: '(old value), ' - record: '(record), ' - sanitizer: Sanitizer - sanitizers: 'Sanitizers: ' - validator: Validator - validators: 'Validators: ' - value: value - value-expression: Value expression - value-expressions: 'Value expressions: ' - values: values -write: Writing field expressions is like writing an equation. Instead of only using constants, you can pass in the field name, and it will be evaluated as the field value for that record. diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/module.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/module.yaml deleted file mode 100644 index b12f57ef6..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/module.yaml +++ /dev/null @@ -1,102 +0,0 @@ -allRecords: - create: - title: Create record for module "{{name}}" - edit: - title: Edit record for module "{{name}}" - label: All records - list: - title: All records for module "{{name}}" - columns: - title: Configure columns - description: The columns picked won't be saved after you refresh the page - view: - title: View record for module "{{name}}" -block: - record: - recordDeleted: This record was deleted - loadFailed: Could not load record -createLabel: New Module -edit: - create: Create module - edit: Edit module - federationSettings: - downstream: - allFields: All Fields - description: 'Match federated fields with existing ones:' - title: Map - error: - fetch: - data: Error fetching server data - exposed: Error fetching exposed module info - shared: Error fetching shared module info - mmap: Error fetching module mapping info - node: Error fetching nodes info - persist: - exposed: Error persisting exposed module info - shared: Error persisting shared module info - mmap: Error persisting module mapping info - general: - receive: Receive new records from another organization (downstream) - send: Send new records to the federated network (upstream) - title: General - noNodes: No federated servers available - noPermission: No permission to manage exposed module - pickModule: Pick a federated module - pickModuleField: Pick a module field - pickServer: Pick a federated server - specificTitle: Federation Settings ({{handle}}) - title: Federation Settings - upstream: - copyFrom: Copy settings from - allFields: All Fields - description: Select the fields you want to share with the selected network - title: Expose - fieldPermissions: Field permissions - manageRecordFields: Manage record fields - moduleFieldSettings: Module field settings - moduleInfo: Module info - newField: Add new field - recordPermissions: Record permissions - reorderFields: Reorder fields - specificFieldSettings: Field settings ({{name}}) - steps: - recordList: Page with record list - recordPage: Record page - systemFields: 'System fields:' - tooltip: - attributes: Select if the field can hold multiple values, if it's required field or if contains sensitive data - name: Must be a-z/A-Z, 0-9 or underscore - private: Sensitive data - required: Required field - title: The name displayed in form input / data lists -federated: Federated -forModule: - recordList: Record List for module - recordListPage: Record List page for module - recordPage: Record page for module -general: - fields: Module fields - label: - attributes: Attributes - handle: Handle - name: Name - permissions: Permissions - title: Title - type: Type - saveAndClose: Save and close - placeholder: - handle: handle (a - z, 0 - 9, underscore, dash) - sample: Sample - invalid-handle-characters: Should be at least 2 characters long and start with a letter. Can contains only letters, numbers, dash, underscore and dot -import: Module import -navigation: - module: Modules -newLabel: Module Name * -newPlaceholder: Name used on the list of modules -noModule: No modules -noModuleFilter: No module matches your search -recordPage: - create: Create record page - edit: Page builder -searchPlaceholder: Type here to search all modules in this namespace -title: List of Modules diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/general.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/general.yaml deleted file mode 100644 index 2cfc3e842..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/general.yaml +++ /dev/null @@ -1,7 +0,0 @@ -label: - add: + Add - back: Back - delete: Delete - ok: Ok - save: Save - urlPlaceholder: https://example.tld diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/general.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/general.yaml deleted file mode 100644 index a1caf25c6..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/general.yaml +++ /dev/null @@ -1,22 +0,0 @@ -description: Description -enabled: Enabled -error: Error -'error-expression': Error message(expression) -export: Export -general: General -handle: Handle -import: - json: Import JSON - label: Import - 'reassign-run-as': "NOTE: the Run as workflow property won't be imported and should be reassigned" - 'upload-files': Browse or drop files to upload... -label: Label -name: Name -'new-workflow': New Workflow -offset: Offset -permissions: Permissions -'search-workflows': Type here to search all workflows... -'unnamed-workflow': Unnamed Workflow -'workflow-list': List of Workflows -save: Save -cancel: Cancel diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/inc_footer.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/inc_footer.yaml deleted file mode 100644 index 7b5500830..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/inc_footer.yaml +++ /dev/null @@ -1,2 +0,0 @@ ---- -version: version {{version}} diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/mfa-totp.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/mfa-totp.yaml deleted file mode 100644 index 5587fc96d..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/mfa-totp.yaml +++ /dev/null @@ -1,23 +0,0 @@ ---- -template: - title: Configure two-factor authentication with TOTP - enforced: | - TOTP multi factor authentication is enforced by Corteza administrator. - Please configure it right away. - instructions: | - Corteza uses time based one time passwords (TOTP) as one of the underlying technologies for two-factor authentication. Use one of the applications listed below and type in the secret or scan the QR code. -
-
- This will enable additional security for your account. -
-
- You can use one of the following applications: - lastpass: LastPass Authenticator - gauth: Google Authenticator for Android or iPhone - authy: Authy - form: - title: "Complete the configuration by entering code from the authenticator application:" - button: Submit -alerts: - text-2FA-enabled: Two factor authentication with TOTP enabled - text-2FA-disabled: Two factor authentication with TOTP disabled diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/expressions-help.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/expressions-help.yaml deleted file mode 100644 index 728501311..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/expressions-help.yaml +++ /dev/null @@ -1,124 +0,0 @@ ---- -calculate: Field expressions provide a way to calculate field values based on the defined expression. -categories: - dateTime: - earliest: Returns earliest DateTime - label: Date and Time - latest: Returns latest DateTime - modTime: Returns modified DateTime string - parseDuration: Returns parsed duration - parseISOTime: Returns parsed ISO DateTime string - strftime: Returns DateTime string for the specified date and format - general: - description: Returns the first non null value - label: General - number: - ceil: Rounds number up to the nearest integer - floor: Rounds number down to the nearest integer - label: Number - max: Returns item with the highest value - min: Returns item with the lowest value - rounds: Rounds a floating point number to the specified number of digits - string: - format: Returns the formatted string - label: String - longest: Returns the longest string - shortest: Returns the shortest string - toLower: Converts all characters to lowercase - toUpper: Converts all characters to uppercase - trim: Removes spaces at the beginning and at the end of the string - trimLeft: Removes character from the beginning of the string - trimRight: Removes character from the end of the string -example-description: Below are a few examples of different use cases of field expressions. -examples: Examples -field: Field Expressions -formatCategories: - dateTime: - A: Returns the full national weekday name - B: Returns the full national month name - C: Returns year / 100 as a decimal number; single digits are preceded by a zero - D: Equivalent to %m/%d/%y - F: Equivalent to %Y-%m-%d - H: Returns the hour (24-hour clock) as a decimal number (00-23) - I: Returns the hour (12-hour clock) as a decimal number (01-12) - M: Returns the minute as a decimal number (00-59) - R: Equivalent to %H:%M - S-middle: Returns the millisecond as a decimal number (000-999) - S-second: Returns the second as a decimal number (00-60) - T: Equivalent to %H:%M:%S - U: Returns the week number of the year (Sunday as the first day of the week) as a decimal number (00-53) - V: Returns the week number of the year (Monday as the first day of the week) as a decimal number (01-53) - W: Returns the week number of the year (Monday as the first day of the week) as a decimal number (00-53) - X: Returns the national representation of the time - "Y": Returns the year with century as a decimal number - Z: Returns the time zone name - a: Returns the abbreviated national weekday name - b: Returns the abbreviated national month name - c: Returns the national representation of time and date - d: Returns the day of the month as a decimal number (01-31) - e: Returns the day of the month as a decimal number (1-31) - j: Returns the day of the year as a decimal number (001-366) - k: Returns the hour (24-hour clock) as a decimal number (0-23) - l: Returns the hour (12-hour clock) as a decimal number (1-12) - label: Date and Time formatting - m: Returns the month as a decimal number (01-12) - "n": |- - Returns a newline ( - ) - p: Returns the national representation of either "ante meridiem" (a.m.) or "post meridiem" (p.m.) - percent: Returns a % - r: Equivalent to %I:%M:%S %p - t: Returns a tab - u: Returns the weekday (Monday as the first day of the week) as a decimal number (1-7) - v: Equivalent to %e-%b-%Y - w: Returns the weekday (Sunday as the first day of the week) as a decimal number (0-6) - x: Returns the national representation of the date - "y": Returns the year without century as a decimal number (00-99) - z: Returns the time zone offset from UTC - string: - E: Returns the floating point number in scientific notation; upper-case E - O: Returns the number in base 8 with 0o prefix - X: Returns the number in base 16; upper-case A-F - b: Returns the number in base 2 (in the binary format) - binary: Returns the floating point number in scientific notation with binary exponent - d: Returns the number in base 10 - e: Returns the floating point number in scientific notation; lower-case e - f: Returns the floating point number with a decimal point - label: String formatting - o: Returns the number in base 8 - t: Returns the boolean value as true/false - v: Returns the raw value - x: Returns the number in base 16; lower-case a-f -formatting-parameters: - description: Here is a complete list of available formatting options. - label: Formatting parameters -helper-functions: - description: We provide a set of helper functions that extend the capabilites of field expressions. - label: Helper functions - note: 'NOTE: Only the "General" functions can be used on all types of fields. The other functions are limited to their respective field type.' -instructions: 'To write the expression you can use the following operators:' -operators: - all-new-values: (all new values) - comparators: 'Comparators: ' - control-order: 'Control order of evaluation: ' - field-name: field-name - location: 'Depending on where the field expression is used it has access to different variables:' - logical: 'Logical: ' - modifiers: 'Modifiers: ' - more: 'More: ' - new: new - new-value: (new-value) - new-value-with-comma: '(new-value), ' - old: old - old-value: oldValue - old-value-brackets: '(old value), ' - record: '(record), ' - sanitizer: Sanitizer - sanitizers: 'Sanitizers: ' - validator: Validator - validators: 'Validators: ' - value: value - value-expression: Value expression - value-expressions: 'Value expressions: ' - values: values -write: Writing field expressions is like writing an equation. Instead of only using constants, you can pass in the field name, and it will be evaluated as the field value for that record. diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/profile.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/profile.yaml deleted file mode 100644 index cacdb8593..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/profile.yaml +++ /dev/null @@ -1,19 +0,0 @@ ---- -template: - title: Your profile - form: - email: - label: Email - placeholder: email@domain.ltd - resend-confirmation-link: Email is not verified, resend confirmation link. - name: - label: Full name - placeholder: Your full name - handle: - label: Handle - placeholder: Short name, nickname or handle - buttons: - submit: Update profile -alerts: - profile-updated: Profile successfully updated. - profile-update-fail: Could not update profile due to input errors diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/expressions-help.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/expressions-help.yaml deleted file mode 100644 index 728501311..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/expressions-help.yaml +++ /dev/null @@ -1,124 +0,0 @@ ---- -calculate: Field expressions provide a way to calculate field values based on the defined expression. -categories: - dateTime: - earliest: Returns earliest DateTime - label: Date and Time - latest: Returns latest DateTime - modTime: Returns modified DateTime string - parseDuration: Returns parsed duration - parseISOTime: Returns parsed ISO DateTime string - strftime: Returns DateTime string for the specified date and format - general: - description: Returns the first non null value - label: General - number: - ceil: Rounds number up to the nearest integer - floor: Rounds number down to the nearest integer - label: Number - max: Returns item with the highest value - min: Returns item with the lowest value - rounds: Rounds a floating point number to the specified number of digits - string: - format: Returns the formatted string - label: String - longest: Returns the longest string - shortest: Returns the shortest string - toLower: Converts all characters to lowercase - toUpper: Converts all characters to uppercase - trim: Removes spaces at the beginning and at the end of the string - trimLeft: Removes character from the beginning of the string - trimRight: Removes character from the end of the string -example-description: Below are a few examples of different use cases of field expressions. -examples: Examples -field: Field Expressions -formatCategories: - dateTime: - A: Returns the full national weekday name - B: Returns the full national month name - C: Returns year / 100 as a decimal number; single digits are preceded by a zero - D: Equivalent to %m/%d/%y - F: Equivalent to %Y-%m-%d - H: Returns the hour (24-hour clock) as a decimal number (00-23) - I: Returns the hour (12-hour clock) as a decimal number (01-12) - M: Returns the minute as a decimal number (00-59) - R: Equivalent to %H:%M - S-middle: Returns the millisecond as a decimal number (000-999) - S-second: Returns the second as a decimal number (00-60) - T: Equivalent to %H:%M:%S - U: Returns the week number of the year (Sunday as the first day of the week) as a decimal number (00-53) - V: Returns the week number of the year (Monday as the first day of the week) as a decimal number (01-53) - W: Returns the week number of the year (Monday as the first day of the week) as a decimal number (00-53) - X: Returns the national representation of the time - "Y": Returns the year with century as a decimal number - Z: Returns the time zone name - a: Returns the abbreviated national weekday name - b: Returns the abbreviated national month name - c: Returns the national representation of time and date - d: Returns the day of the month as a decimal number (01-31) - e: Returns the day of the month as a decimal number (1-31) - j: Returns the day of the year as a decimal number (001-366) - k: Returns the hour (24-hour clock) as a decimal number (0-23) - l: Returns the hour (12-hour clock) as a decimal number (1-12) - label: Date and Time formatting - m: Returns the month as a decimal number (01-12) - "n": |- - Returns a newline ( - ) - p: Returns the national representation of either "ante meridiem" (a.m.) or "post meridiem" (p.m.) - percent: Returns a % - r: Equivalent to %I:%M:%S %p - t: Returns a tab - u: Returns the weekday (Monday as the first day of the week) as a decimal number (1-7) - v: Equivalent to %e-%b-%Y - w: Returns the weekday (Sunday as the first day of the week) as a decimal number (0-6) - x: Returns the national representation of the date - "y": Returns the year without century as a decimal number (00-99) - z: Returns the time zone offset from UTC - string: - E: Returns the floating point number in scientific notation; upper-case E - O: Returns the number in base 8 with 0o prefix - X: Returns the number in base 16; upper-case A-F - b: Returns the number in base 2 (in the binary format) - binary: Returns the floating point number in scientific notation with binary exponent - d: Returns the number in base 10 - e: Returns the floating point number in scientific notation; lower-case e - f: Returns the floating point number with a decimal point - label: String formatting - o: Returns the number in base 8 - t: Returns the boolean value as true/false - v: Returns the raw value - x: Returns the number in base 16; lower-case a-f -formatting-parameters: - description: Here is a complete list of available formatting options. - label: Formatting parameters -helper-functions: - description: We provide a set of helper functions that extend the capabilites of field expressions. - label: Helper functions - note: 'NOTE: Only the "General" functions can be used on all types of fields. The other functions are limited to their respective field type.' -instructions: 'To write the expression you can use the following operators:' -operators: - all-new-values: (all new values) - comparators: 'Comparators: ' - control-order: 'Control order of evaluation: ' - field-name: field-name - location: 'Depending on where the field expression is used it has access to different variables:' - logical: 'Logical: ' - modifiers: 'Modifiers: ' - more: 'More: ' - new: new - new-value: (new-value) - new-value-with-comma: '(new-value), ' - old: old - old-value: oldValue - old-value-brackets: '(old value), ' - record: '(record), ' - sanitizer: Sanitizer - sanitizers: 'Sanitizers: ' - validator: Validator - validators: 'Validators: ' - value: value - value-expression: Value expression - value-expressions: 'Value expressions: ' - values: values -write: Writing field expressions is like writing an equation. Instead of only using constants, you can pass in the field name, and it will be evaluated as the field value for that record. diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/expressions-help.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/expressions-help.yaml deleted file mode 100644 index 728501311..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/expressions-help.yaml +++ /dev/null @@ -1,124 +0,0 @@ ---- -calculate: Field expressions provide a way to calculate field values based on the defined expression. -categories: - dateTime: - earliest: Returns earliest DateTime - label: Date and Time - latest: Returns latest DateTime - modTime: Returns modified DateTime string - parseDuration: Returns parsed duration - parseISOTime: Returns parsed ISO DateTime string - strftime: Returns DateTime string for the specified date and format - general: - description: Returns the first non null value - label: General - number: - ceil: Rounds number up to the nearest integer - floor: Rounds number down to the nearest integer - label: Number - max: Returns item with the highest value - min: Returns item with the lowest value - rounds: Rounds a floating point number to the specified number of digits - string: - format: Returns the formatted string - label: String - longest: Returns the longest string - shortest: Returns the shortest string - toLower: Converts all characters to lowercase - toUpper: Converts all characters to uppercase - trim: Removes spaces at the beginning and at the end of the string - trimLeft: Removes character from the beginning of the string - trimRight: Removes character from the end of the string -example-description: Below are a few examples of different use cases of field expressions. -examples: Examples -field: Field Expressions -formatCategories: - dateTime: - A: Returns the full national weekday name - B: Returns the full national month name - C: Returns year / 100 as a decimal number; single digits are preceded by a zero - D: Equivalent to %m/%d/%y - F: Equivalent to %Y-%m-%d - H: Returns the hour (24-hour clock) as a decimal number (00-23) - I: Returns the hour (12-hour clock) as a decimal number (01-12) - M: Returns the minute as a decimal number (00-59) - R: Equivalent to %H:%M - S-middle: Returns the millisecond as a decimal number (000-999) - S-second: Returns the second as a decimal number (00-60) - T: Equivalent to %H:%M:%S - U: Returns the week number of the year (Sunday as the first day of the week) as a decimal number (00-53) - V: Returns the week number of the year (Monday as the first day of the week) as a decimal number (01-53) - W: Returns the week number of the year (Monday as the first day of the week) as a decimal number (00-53) - X: Returns the national representation of the time - "Y": Returns the year with century as a decimal number - Z: Returns the time zone name - a: Returns the abbreviated national weekday name - b: Returns the abbreviated national month name - c: Returns the national representation of time and date - d: Returns the day of the month as a decimal number (01-31) - e: Returns the day of the month as a decimal number (1-31) - j: Returns the day of the year as a decimal number (001-366) - k: Returns the hour (24-hour clock) as a decimal number (0-23) - l: Returns the hour (12-hour clock) as a decimal number (1-12) - label: Date and Time formatting - m: Returns the month as a decimal number (01-12) - "n": |- - Returns a newline ( - ) - p: Returns the national representation of either "ante meridiem" (a.m.) or "post meridiem" (p.m.) - percent: Returns a % - r: Equivalent to %I:%M:%S %p - t: Returns a tab - u: Returns the weekday (Monday as the first day of the week) as a decimal number (1-7) - v: Equivalent to %e-%b-%Y - w: Returns the weekday (Sunday as the first day of the week) as a decimal number (0-6) - x: Returns the national representation of the date - "y": Returns the year without century as a decimal number (00-99) - z: Returns the time zone offset from UTC - string: - E: Returns the floating point number in scientific notation; upper-case E - O: Returns the number in base 8 with 0o prefix - X: Returns the number in base 16; upper-case A-F - b: Returns the number in base 2 (in the binary format) - binary: Returns the floating point number in scientific notation with binary exponent - d: Returns the number in base 10 - e: Returns the floating point number in scientific notation; lower-case e - f: Returns the floating point number with a decimal point - label: String formatting - o: Returns the number in base 8 - t: Returns the boolean value as true/false - v: Returns the raw value - x: Returns the number in base 16; lower-case a-f -formatting-parameters: - description: Here is a complete list of available formatting options. - label: Formatting parameters -helper-functions: - description: We provide a set of helper functions that extend the capabilites of field expressions. - label: Helper functions - note: 'NOTE: Only the "General" functions can be used on all types of fields. The other functions are limited to their respective field type.' -instructions: 'To write the expression you can use the following operators:' -operators: - all-new-values: (all new values) - comparators: 'Comparators: ' - control-order: 'Control order of evaluation: ' - field-name: field-name - location: 'Depending on where the field expression is used it has access to different variables:' - logical: 'Logical: ' - modifiers: 'Modifiers: ' - more: 'More: ' - new: new - new-value: (new-value) - new-value-with-comma: '(new-value), ' - old: old - old-value: oldValue - old-value-brackets: '(old value), ' - record: '(record), ' - sanitizer: Sanitizer - sanitizers: 'Sanitizers: ' - validator: Validator - validators: 'Validators: ' - value: value - value-expression: Value expression - value-expressions: 'Value expressions: ' - values: values -write: Writing field expressions is like writing an equation. Instead of only using constants, you can pass in the field name, and it will be evaluated as the field value for that record. diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/authorized-clients.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/authorized-clients.yaml deleted file mode 100644 index d8abeec1d..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/authorized-clients.yaml +++ /dev/null @@ -1,10 +0,0 @@ ---- -template: - title: Authorized clients - list: - authorized-on: Authorized on - buttons: - revoke: Revoke access - empty: No authorized clients found -alerts: - removed: Client authorization removed diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/change-password.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/change-password.yaml deleted file mode 100644 index 594386c18..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/change-password.yaml +++ /dev/null @@ -1,17 +0,0 @@ ---- -template: - title: Change your password - form: - email: - label: E-mail - placeholder: email@domain.ltd - old-password: - label: Old password - placeholder: Enter your old password - new-password: - label: New password - placeholder: Enter your new password - button: - change-password: Change your password -alerts: - password-change-success: Password successfully changed. diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/create-password.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/create-password.yaml deleted file mode 100644 index ca7e215c1..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/create-password.yaml +++ /dev/null @@ -1,15 +0,0 @@ ---- -template: - title: Create your password - form: - email: - label: E-mail - password: - label: Password - placeholder: Enter your password - button: - create-password: Create your password -alerts: - invalid-expired-password-token: Invalid or expired password create token, please repeat password create request. - password-create-success: Password successfully created. - password-create-disabled: Password create disabled. diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/error-internal.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/error-internal.yaml deleted file mode 100644 index b8f598f96..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/error-internal.yaml +++ /dev/null @@ -1,3 +0,0 @@ ---- -template: - title: Internal error diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/inc_header.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/inc_header.yaml deleted file mode 100644 index 6ba56afc6..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/inc_header.yaml +++ /dev/null @@ -1,3 +0,0 @@ ---- -logged-in-as: You're logged-in as -logout: logout diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/inc_nav.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/inc_nav.yaml deleted file mode 100644 index b061b802c..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/inc_nav.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -template: - authorize-client: Finalize the authorization of - class: - your-profile: Your profile - security: Security - login-session: Login sessions - authorized-clients: Authorized clients diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/logout.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/logout.yaml deleted file mode 100644 index e4f435e9d..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/logout.yaml +++ /dev/null @@ -1,4 +0,0 @@ ---- -template: - log-out: Logout successful. - log-in: Click here to log in. diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/mfa-totp-disable.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/mfa-totp-disable.yaml deleted file mode 100644 index a1cf85846..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/mfa-totp-disable.yaml +++ /dev/null @@ -1,6 +0,0 @@ ---- -template: - title: Disable two-factor authentication with TOTP - instructions: Disable by entering existing code. - button: - remove: Remove diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/mfa.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/mfa.yaml deleted file mode 100644 index a38b349be..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/mfa.yaml +++ /dev/null @@ -1,19 +0,0 @@ ---- -template: - title: Multi-factor authentication - email: - instructions: Check your inbox and enter the received code - code: Code - verify: Verify - resend: Resend - confirmed: Email OTP confirmed - totp: - instructions: Check your TOTP application and enter the code you received - code: Code - confirmed: TOTP confirmed - verify: Verify -alerts: - email: - resent: Email OTP resent - topt: - valid: TOTP valid diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/password-reset-requested.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/password-reset-requested.yaml deleted file mode 100644 index 650c3f557..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/password-reset-requested.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -template: - title: Password reset requested - instructions: If the email you entered is found in our database, you'll receive a password reset link to your inbox in a few moments. - links: Create new account or log in. -alert: - invalid-expired-password-token: Invalid or expired password reset token, please repeat password reset request. - password-reset-success: Password successfully reset. - password-reset-disabled: Password reset disabled. diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/pending-email-confirmation.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/pending-email-confirmation.yaml deleted file mode 100644 index cba1e4bd0..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/pending-email-confirmation.yaml +++ /dev/null @@ -1,5 +0,0 @@ ---- -template: - title: Confirm your email - instructions: You should receive email confirmation link to your inbox in a few moments. - links: Create new account or log in. diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/reset-password.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/reset-password.yaml deleted file mode 100644 index 73a0bf498..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/reset-password.yaml +++ /dev/null @@ -1,12 +0,0 @@ ---- -template: - title: Reset your password - form: - email: - label: E-mail - placeholder: email@domain.ltd - new-password: - label: New password - placeholder: Set new password - buttons: - change-password: Change your password diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/security.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/security.yaml deleted file mode 100644 index 3f7fc8543..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/security.yaml +++ /dev/null @@ -1,23 +0,0 @@ ---- -template: - title: Security - password: - title: Password - change-link: Change your password - mfa: - title: Multi-factor authentication - totp: - title: Additional security with mobile app (time-based one-time-password) - enforced: Configured and required on login. - disabled: Currently disabled. - configure: Configure - disable: Disable - email: - title: Additional security with one-time-password over email - enforced: Enabled and required on login. - disabled: Currently disabled. - enable: Configure - disable: Disable - all-disabled: All MFA methods are currently disabled. Ask your administrator to enable them. -alerts: - topt-disabled: Two factor authentication with TOTP disabled diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/sessions.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/sessions.yaml deleted file mode 100644 index d456477cf..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/sessions.yaml +++ /dev/null @@ -1,17 +0,0 @@ ---- -template: - title: Your session - list: - current: Current session - authorized-on: Authorized on - same-machine: This machine - ip-address: IP Address - same-browser: This browser - browser: Browser - expires: Expires - expired: Expired - today: Today - tomorrow: In 1 day - soon: In {{days}} days - delete: Delete this session - delete-all: Delete all sessions diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/signup.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/signup.yaml deleted file mode 100644 index b9f30d485..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/signup.yaml +++ /dev/null @@ -1,24 +0,0 @@ ---- -template: - title: Sign up - form: - email: - label: E-mail - placeholder: email@domain.ltd - password: - label: Password - placeholder: Password - name: - label: Full name - placeholder: Your full name - nickname: - label: Short name, nickname or handle - placeholder: Short name, nickname or handle - button: - sign-up: Submit - log-in: Already have an account? Log in -alerts: - signup-successful: Sign-up successful. - email-confirmed-logged-in: Email address confirmed, you're now logged-in. - invalid-expired-token: Invalid or expired email confirmation token, please resend confirmation request. - signup-disabled: Signup disabled diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.settings.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.settings.yaml deleted file mode 100644 index 2076eab37..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.settings.yaml +++ /dev/null @@ -1,119 +0,0 @@ -editor: - title: System settings - auth: - title: Authentication - url: URL - internal: - title: Internal - enabled: Internal authentication enabled - password-reset: - enabled: Password reset enabled - password-constraints: - title: Password constraints - ignored-security: The system is configured to ignore password security constraints which is insecure on production deployments. If this is a production deployment, please contact your administrator to update the system configuration (the AUTH_PASSWORD_SECURITY .env variable). - min-length: Minimum length - min-length-description: Must be at least 8 characters - min-num-count: Minimum number of numbers - min-num-count-description: The password must include the specified number of numbers (disabled if set to 0) - min-special-count: Minimum number of special characters - min-special-count-description: The password must include the specified number of special characters (disabled if set to 0) - signup: - email-confirmation-required: Signup email confirmation required - enabled: Signup enabled - split-credentials-check: - description: 'Split login into two steps: collect the email input first and show the input for the password on the 2nd screen. Automatically forward user to external identity provider when user does not have his password set and there is only one IdP present' - label: Enable split-credentials check - mail: - title: Authentication email sender mail - from-address: Sender's address - from-name: Sender's name - validate-email: Please enter valid email address. - mfa: - title: Multi-factor authentication - TOTP: - enabled: Allow users to use time based one-time-password (using mobile application) - enforced: Force users to use time based one-time-password (using mobile application) - issuer: - description: Issuer name will be send to authenticator app when user configures it. - label: Issuer - emailOTP: - enabled: Allow users to use one-time-password over email - enforced: Force users to use one-time-password over email - expires: - description: How long will password be valid before it expires. - label: Valid for - - external: - title: External Authentication Providers - enabled: Enable external authentication - - table: - header: - provider: Provider - info: Issuer, client ID - - - standard: - enabled: Enabled - clientKey: Client key - clientSecret: Secret - - oidc: - add: Add an OIDC provider - enabled: Enabled - handle: Handle - title: OpenID Connect - issuer: OIDC Issuer URL - issuerHint: Where to find the /.well-known/openid-configuration (without the /.well-known/openid-configuration part) - clientKey: Client key - clientSecret: Secret - scope: Scope - scopePlaceholder: List out supported OAuth scope values, use space delimited string - - saml: - enabled: Enabled - title: SAML - requests: - title: Requests - sign-requests: Sign requests - sign-method: Signature method - binding: Binding - binding-redirect: HTTP Redirect - binding-post: HTTP POST - cert: - public: Public key - private: Private key - name: Name - certificate: Certificate - idp: - title: Identity provider - ident-handle: Handle field - ident-identifier: Identifier field - ident-name: Name field - url: URL - desc: - name: IdP name used on the login screen (Login with ) - cert: - public: Content will be minimized - private: Content will be minimized - requests: - sign-requests: Sign AuthNRequest and assertion - sign-method: Method to use on signed requests - binding: The type of HTTP binding to use on AuthNRequest, defaults to HTTP Redirect (GET) - idp: - url: Location of IdP metadata - ident-handle: Name of the IdP field used for filling Corteza user handle or nickname - ident-identifier: Name of the IdP field used for filling and matching Corteza user email - ident-name: Name of the IdP field used for filling Corteza user full name - - - security: - forbidden-roles: - description: Roles from this list will be removed from security context when authenticates with this provider - label: Forbidden roles - forced-roles: - description: Roles from this list will be always added to security context when authenticates with this provider - label: Forced roles - permitted-roles: - description: Only roles in this list will be added into security context when authenticates with this provider - label: Permitted roles diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/expressions-help.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/expressions-help.yaml deleted file mode 100644 index 728501311..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/expressions-help.yaml +++ /dev/null @@ -1,124 +0,0 @@ ---- -calculate: Field expressions provide a way to calculate field values based on the defined expression. -categories: - dateTime: - earliest: Returns earliest DateTime - label: Date and Time - latest: Returns latest DateTime - modTime: Returns modified DateTime string - parseDuration: Returns parsed duration - parseISOTime: Returns parsed ISO DateTime string - strftime: Returns DateTime string for the specified date and format - general: - description: Returns the first non null value - label: General - number: - ceil: Rounds number up to the nearest integer - floor: Rounds number down to the nearest integer - label: Number - max: Returns item with the highest value - min: Returns item with the lowest value - rounds: Rounds a floating point number to the specified number of digits - string: - format: Returns the formatted string - label: String - longest: Returns the longest string - shortest: Returns the shortest string - toLower: Converts all characters to lowercase - toUpper: Converts all characters to uppercase - trim: Removes spaces at the beginning and at the end of the string - trimLeft: Removes character from the beginning of the string - trimRight: Removes character from the end of the string -example-description: Below are a few examples of different use cases of field expressions. -examples: Examples -field: Field Expressions -formatCategories: - dateTime: - A: Returns the full national weekday name - B: Returns the full national month name - C: Returns year / 100 as a decimal number; single digits are preceded by a zero - D: Equivalent to %m/%d/%y - F: Equivalent to %Y-%m-%d - H: Returns the hour (24-hour clock) as a decimal number (00-23) - I: Returns the hour (12-hour clock) as a decimal number (01-12) - M: Returns the minute as a decimal number (00-59) - R: Equivalent to %H:%M - S-middle: Returns the millisecond as a decimal number (000-999) - S-second: Returns the second as a decimal number (00-60) - T: Equivalent to %H:%M:%S - U: Returns the week number of the year (Sunday as the first day of the week) as a decimal number (00-53) - V: Returns the week number of the year (Monday as the first day of the week) as a decimal number (01-53) - W: Returns the week number of the year (Monday as the first day of the week) as a decimal number (00-53) - X: Returns the national representation of the time - "Y": Returns the year with century as a decimal number - Z: Returns the time zone name - a: Returns the abbreviated national weekday name - b: Returns the abbreviated national month name - c: Returns the national representation of time and date - d: Returns the day of the month as a decimal number (01-31) - e: Returns the day of the month as a decimal number (1-31) - j: Returns the day of the year as a decimal number (001-366) - k: Returns the hour (24-hour clock) as a decimal number (0-23) - l: Returns the hour (12-hour clock) as a decimal number (1-12) - label: Date and Time formatting - m: Returns the month as a decimal number (01-12) - "n": |- - Returns a newline ( - ) - p: Returns the national representation of either "ante meridiem" (a.m.) or "post meridiem" (p.m.) - percent: Returns a % - r: Equivalent to %I:%M:%S %p - t: Returns a tab - u: Returns the weekday (Monday as the first day of the week) as a decimal number (1-7) - v: Equivalent to %e-%b-%Y - w: Returns the weekday (Sunday as the first day of the week) as a decimal number (0-6) - x: Returns the national representation of the date - "y": Returns the year without century as a decimal number (00-99) - z: Returns the time zone offset from UTC - string: - E: Returns the floating point number in scientific notation; upper-case E - O: Returns the number in base 8 with 0o prefix - X: Returns the number in base 16; upper-case A-F - b: Returns the number in base 2 (in the binary format) - binary: Returns the floating point number in scientific notation with binary exponent - d: Returns the number in base 10 - e: Returns the floating point number in scientific notation; lower-case e - f: Returns the floating point number with a decimal point - label: String formatting - o: Returns the number in base 8 - t: Returns the boolean value as true/false - v: Returns the raw value - x: Returns the number in base 16; lower-case a-f -formatting-parameters: - description: Here is a complete list of available formatting options. - label: Formatting parameters -helper-functions: - description: We provide a set of helper functions that extend the capabilites of field expressions. - label: Helper functions - note: 'NOTE: Only the "General" functions can be used on all types of fields. The other functions are limited to their respective field type.' -instructions: 'To write the expression you can use the following operators:' -operators: - all-new-values: (all new values) - comparators: 'Comparators: ' - control-order: 'Control order of evaluation: ' - field-name: field-name - location: 'Depending on where the field expression is used it has access to different variables:' - logical: 'Logical: ' - modifiers: 'Modifiers: ' - more: 'More: ' - new: new - new-value: (new-value) - new-value-with-comma: '(new-value), ' - old: old - old-value: oldValue - old-value-brackets: '(old value), ' - record: '(record), ' - sanitizer: Sanitizer - sanitizers: 'Sanitizers: ' - validator: Validator - validators: 'Validators: ' - value: value - value-expression: Value expression - value-expressions: 'Value expressions: ' - values: values -write: Writing field expressions is like writing an equation. Instead of only using constants, you can pass in the field name, and it will be evaluated as the field value for that record. diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/locale/input.go b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/locale/input.go deleted file mode 100644 index 118eb8242..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/locale/input.go +++ /dev/null @@ -1,15 +0,0 @@ -package locale - -import ( - "html" - - "github.com/microcosm-cc/bluemonday" -) - -var ( - stripHtml = bluemonday.StripTagsPolicy().Sanitize -) - -func SanitizeMessage(in string) string { - return html.UnescapeString(stripHtml(in)) -} diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/logger/logger.go b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/logger/logger.go deleted file mode 100644 index 8c3b1d983..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/logger/logger.go +++ /dev/null @@ -1,107 +0,0 @@ -package logger - -import ( - "time" - - "github.com/cortezaproject/corteza-server/pkg/options" - "go.uber.org/zap" - "go.uber.org/zap/zapcore" - "moul.io/zapfilter" -) - -var ( - opt = options.Log() - defaultLogger = zap.NewNop() -) - -func Default() *zap.Logger { - if defaultLogger == nil { - return zap.NewNop() - } - - return defaultLogger -} - -func SetDefault(logger *zap.Logger) { - defaultLogger = logger -} - -// Init (re)initializes logger according to the settings -func Init() { - if opt.Debug { - // Do we want to enable debug logger - // with a bit more dev-friendly output - defaultLogger = MakeDebugLogger() - defaultLogger.Debug("full debug mode enabled") - return - } - - var ( - err error - conf = applyOptions(zap.NewProductionConfig(), opt) - ) - - defaultLogger, err = conf.Build() - if err != nil { - panic(err) - } - - defaultLogger = applySpecials(defaultLogger, opt) -} - -func MakeDebugLogger() *zap.Logger { - dbgOpt := *opt - dbgOpt.Debug = true - dbgOpt.Level = "debug" - - var ( - conf = applyOptions(zap.NewDevelopmentConfig(), &dbgOpt) - ) - - // Print log level in colors - conf.EncoderConfig.EncodeLevel = zapcore.CapitalColorLevelEncoder - - // Shorten timestamp, we do not care about the date - conf.EncoderConfig.EncodeTime = func(t time.Time, enc zapcore.PrimitiveArrayEncoder) { - enc.AppendString(t.Format("15:04:05.000")) - } - - logger, err := conf.Build() - if err != nil { - panic(err) - } - - return applySpecials(logger, &dbgOpt) -} - -// Applies options from environment variables -func applyOptions(conf zap.Config, opt *options.LogOpt) zap.Config { - // LOG_LEVEL - conf.Level = zap.NewAtomicLevelAt(mustParseLevel(opt.Level)) - - // LOG_INCLUDE_CALLER - conf.DisableCaller = !opt.IncludeCaller - - conf.Sampling = nil - - return conf -} - -// Applies "special" options - filtering and conditional stack-level -func applySpecials(l *zap.Logger, opt *options.LogOpt) *zap.Logger { - if len(opt.Filter) > 0 { - // LOG_FILTER - l = zap.New(zapfilter.NewFilteringCore(l.Core(), zapfilter.MustParseRules(opt.Filter))) - } - - // LOG_STACKTRACE_LEVEL - return l.WithOptions(zap.AddStacktrace(mustParseLevel(opt.StacktraceLevel))) -} - -func mustParseLevel(l string) (o zapcore.Level) { - if err := o.Set(l); err != nil { - panic(err) - } - - return -} diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/DB.gen.go b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/DB.gen.go deleted file mode 100644 index d0eed20bd..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/DB.gen.go +++ /dev/null @@ -1,35 +0,0 @@ -package options - -// This file is auto-generated. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// Definitions file that controls how this file is generated: -// pkg/options/DB.yaml - -type ( - DBOpt struct { - DSN string `env:"DB_DSN"` - } -) - -// DB initializes and returns a DBOpt with default values -func DB() (o *DBOpt) { - o = &DBOpt{ - DSN: "sqlite3://file::memory:?cache=shared&mode=memory", - } - - fill(o) - - // Function that allows access to custom logic inside the parent function. - // The custom logic in the other file should be like: - // func (o *DB) Defaults() {...} - func(o interface{}) { - if def, ok := o.(interface{ Defaults() }); ok { - def.Defaults() - } - }(o) - - return -} diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/DB.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/DB.yaml deleted file mode 100644 index e4df737c3..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/DB.yaml +++ /dev/null @@ -1,7 +0,0 @@ -docs: - title: Connection to data store backend - -props: - - name: DSN - default: "sqlite3://file::memory:?cache=shared&mode=memory" - description: Database connection string. diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/HTTPClient.gen.go b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/HTTPClient.gen.go deleted file mode 100644 index 21bb34d25..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/HTTPClient.gen.go +++ /dev/null @@ -1,41 +0,0 @@ -package options - -// This file is auto-generated. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// Definitions file that controls how this file is generated: -// pkg/options/HTTPClient.yaml - -import ( - "time" -) - -type ( - HTTPClientOpt struct { - ClientTSLInsecure bool `env:"HTTP_CLIENT_TLS_INSECURE"` - HttpClientTimeout time.Duration `env:"HTTP_CLIENT_TIMEOUT"` - } -) - -// HTTPClient initializes and returns a HTTPClientOpt with default values -func HTTPClient() (o *HTTPClientOpt) { - o = &HTTPClientOpt{ - ClientTSLInsecure: false, - HttpClientTimeout: 30 * time.Second, - } - - fill(o) - - // Function that allows access to custom logic inside the parent function. - // The custom logic in the other file should be like: - // func (o *HTTPClient) Defaults() {...} - func(o interface{}) { - if def, ok := o.(interface{ Defaults() }); ok { - def.Defaults() - } - }(o) - - return -} diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/HTTPClient.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/HTTPClient.yaml deleted file mode 100644 index 1393d1162..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/HTTPClient.yaml +++ /dev/null @@ -1,24 +0,0 @@ -imports: - - time - -docs: - title: HTTP Client - -props: - - name: clientTSLInsecure - type: bool - env: HTTP_CLIENT_TLS_INSECURE - default: false - description: |- - Allow insecure (invalid, expired TLS/SSL certificates) connections. - - [IMPORTANT] - ==== - We strongly recommend keeping this value set to false except for local development or demos. - ==== - - - name: httpClientTimeout - type: time.Duration - env: HTTP_CLIENT_TIMEOUT - default: 30 * time.Second - description: Default timeout for clients. diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/HTTPServer.gen.go b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/HTTPServer.gen.go deleted file mode 100644 index bf3d1e818..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/HTTPServer.gen.go +++ /dev/null @@ -1,77 +0,0 @@ -package options - -// This file is auto-generated. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// Definitions file that controls how this file is generated: -// pkg/options/HTTPServer.yaml - -import ( - "github.com/cortezaproject/corteza-server/pkg/rand" -) - -type ( - HTTPServerOpt struct { - Addr string `env:"HTTP_ADDR"` - LogRequest bool `env:"HTTP_LOG_REQUEST"` - LogResponse bool `env:"HTTP_LOG_RESPONSE"` - Tracing bool `env:"HTTP_ERROR_TRACING"` - EnableHealthcheckRoute bool `env:"HTTP_ENABLE_HEALTHCHECK_ROUTE"` - EnableVersionRoute bool `env:"HTTP_ENABLE_VERSION_ROUTE"` - EnableDebugRoute bool `env:"HTTP_ENABLE_DEBUG_ROUTE"` - EnableMetrics bool `env:"HTTP_METRICS"` - MetricsServiceLabel string `env:"HTTP_METRICS_NAME"` - MetricsUsername string `env:"HTTP_METRICS_USERNAME"` - MetricsPassword string `env:"HTTP_METRICS_PASSWORD"` - EnablePanicReporting bool `env:"HTTP_REPORT_PANIC"` - BaseUrl string `env:"HTTP_BASE_URL"` - ApiEnabled bool `env:"HTTP_API_ENABLED"` - ApiBaseUrl string `env:"HTTP_API_BASE_URL"` - WebappEnabled bool `env:"HTTP_WEBAPP_ENABLED"` - WebappBaseUrl string `env:"HTTP_WEBAPP_BASE_URL"` - WebappBaseDir string `env:"HTTP_WEBAPP_BASE_DIR"` - WebappList string `env:"HTTP_WEBAPP_LIST"` - SslTerminated bool `env:"HTTP_SSL_TERMINATED"` - } -) - -// HTTPServer initializes and returns a HTTPServerOpt with default values -func HTTPServer() (o *HTTPServerOpt) { - o = &HTTPServerOpt{ - Addr: ":80", - LogRequest: false, - LogResponse: false, - Tracing: false, - EnableHealthcheckRoute: true, - EnableVersionRoute: true, - EnableDebugRoute: false, - EnableMetrics: false, - MetricsServiceLabel: "corteza", - MetricsUsername: "metrics", - MetricsPassword: string(rand.Bytes(5)), - EnablePanicReporting: true, - BaseUrl: "/", - ApiEnabled: true, - ApiBaseUrl: "/", - WebappEnabled: false, - WebappBaseUrl: "/", - WebappBaseDir: "./webapp/public", - WebappList: "admin,compose,workflow,reporter", - SslTerminated: isSecure(), - } - - fill(o) - - // Function that allows access to custom logic inside the parent function. - // The custom logic in the other file should be like: - // func (o *HTTPServer) Defaults() {...} - func(o interface{}) { - if def, ok := o.(interface{ Defaults() }); ok { - def.Defaults() - } - }(o) - - return -} diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/HTTPServer.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/HTTPServer.yaml deleted file mode 100644 index 8d9fc1c9f..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/HTTPServer.yaml +++ /dev/null @@ -1,119 +0,0 @@ -imports: - - github.com/cortezaproject/corteza-server/pkg/rand - -docs: - title: HTTP Server - -props: - - name: addr - env: HTTP_ADDR - default: ":80" - description: IP and port for the HTTP server. - - - name: logRequest - type: bool - env: HTTP_LOG_REQUEST - default: false - description: Log HTTP requests. - - - name: logResponse - type: bool - env: HTTP_LOG_RESPONSE - default: false - description: Log HTTP responses. - - - name: tracing - type: bool - env: HTTP_ERROR_TRACING - default: false - - - name: enableHealthcheckRoute - type: bool - env: HTTP_ENABLE_HEALTHCHECK_ROUTE - default: true - - - name: enableVersionRoute - type: bool - env: HTTP_ENABLE_VERSION_ROUTE - default: true - description: Enable `/version` route. - - - name: enableDebugRoute - type: bool - env: HTTP_ENABLE_DEBUG_ROUTE - default: false - description: Enable `/debug` route. - - - name: enableMetrics - type: bool - env: HTTP_METRICS - default: false - description: Enable (prometheus) metrics. - - - name: metricsServiceLabel - env: HTTP_METRICS_NAME - default: "corteza" - description: Name for metrics endpoint. - - - name: metricsUsername - env: HTTP_METRICS_USERNAME - default: "metrics" - description: Username for the metrics endpoint. - - - name: metricsPassword - env: HTTP_METRICS_PASSWORD - default: string(rand.Bytes(5)) - description: Password for the metrics endpoint. - - - name: enablePanicReporting - type: bool - env: HTTP_REPORT_PANIC - default: true - description: Report HTTP panic to Sentry. - - - name: baseUrl - env: HTTP_BASE_URL - default: "/" - description: |- - Base URL (prefix) for all routes (/auth, /api, ...) - - - name: apiEnabled - type: bool - env: HTTP_API_ENABLED - default: true - - - name: apiBaseUrl - env: HTTP_API_BASE_URL - default: "/" - description: |- - When webapps are enabled (HTTP_WEBAPP_ENABLED) this is moved to '/api' if not explicitly set otherwise. - API base URL is internaly prefixed with baseUrl - - - - name: webappEnabled - type: bool - env: HTTP_WEBAPP_ENABLED - default: false - - - name: webappBaseUrl - env: HTTP_WEBAPP_BASE_URL - default: "/" - description: |- - Webapp base URL is internaly prefixed with baseUrl - - - name: webappBaseDir - env: HTTP_WEBAPP_BASE_DIR - default: "./webapp/public" - - - name: webappList - env: HTTP_WEBAPP_LIST - default: "admin,compose,workflow,reporter" - - - name: sslTerminated - env: HTTP_SSL_TERMINATED - type: bool - default: isSecure() - description: |- - Is SSL termination enabled in ingres, proxy or load balancer that is in front of Corteza? - By default, Corteza checks for presence of LETSENCRYPT_HOST environmental variable. - This DOES NOT enable SSL termination in Cortreza! diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/RBAC.gen.go b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/RBAC.gen.go deleted file mode 100644 index 4dbf10587..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/RBAC.gen.go +++ /dev/null @@ -1,41 +0,0 @@ -package options - -// This file is auto-generated. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// Definitions file that controls how this file is generated: -// pkg/options/RBAC.yaml - -type ( - RBACOpt struct { - Log bool `env:"RBAC_LOG"` - ServiceUser string `env:"RBAC_SERVICE_USER"` - BypassRoles string `env:"RBAC_BYPASS_ROLES"` - AuthenticatedRoles string `env:"RBAC_AUTHENTICATED_ROLES"` - AnonymousRoles string `env:"RBAC_ANONYMOUS_ROLES"` - } -) - -// RBAC initializes and returns a RBACOpt with default values -func RBAC() (o *RBACOpt) { - o = &RBACOpt{ - BypassRoles: "super-admin", - AuthenticatedRoles: "authenticated", - AnonymousRoles: "anonymous", - } - - fill(o) - - // Function that allows access to custom logic inside the parent function. - // The custom logic in the other file should be like: - // func (o *RBAC) Defaults() {...} - func(o interface{}) { - if def, ok := o.(interface{ Defaults() }); ok { - def.Defaults() - } - }(o) - - return -} diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/RBAC.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/RBAC.yaml deleted file mode 100644 index c28fd9ffb..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/RBAC.yaml +++ /dev/null @@ -1,45 +0,0 @@ -docs: - title: RBAC options - -props: -# Maybe someday we'll allow RBAC to be disabled -# -# Boolean might not be the best way but providing a secret here that would -# protect the entire corteza with a simple basic HTTP out while RBAC check are disabled -# would make sense? -# -# - name: enabled -# type: bool -# default: true -# description: When disabled all operations on all resources are allowed - - - name: log - type: bool - description: Log RBAC related events and actions - - - name: serviceUser - - name: bypassRoles - # Using literal string instead of DefaultBypassRole constant for clarity & documentation - default: "super-admin" - description: |- - Space delimited list of role handles. - These roles causes short-circuiting access control check and allowing all operations. - System will refuse to start if check-bypassing roles are also listed as authenticated or anonymous auto-assigned roles. - - - name: authenticatedRoles - # Using literal string instead of DefaultAuthenticatedRole constant for clarity & documentation - default: "authenticated" - description: |- - Space delimited list of role handles. - These roles are automatically assigned to authenticated user. - Memberships can not be managed for these roles. - System will refuse to start if roles listed here are also listed under anonymous roles - - - name: anonymousRoles - # Using literal string instead of DefaultAnonymousRole constant for clarity & documentation - default: "anonymous" - description: |- - Space delimited list of role handles. - These roles are automatically assigned to anonymous user. - Memberships can not be managed for these roles. - diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/SCIM.gen.go b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/SCIM.gen.go deleted file mode 100644 index a93fa5ff4..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/SCIM.gen.go +++ /dev/null @@ -1,40 +0,0 @@ -package options - -// This file is auto-generated. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// Definitions file that controls how this file is generated: -// pkg/options/SCIM.yaml - -type ( - SCIMOpt struct { - Enabled bool `env:"SCIM_ENABLED"` - BaseURL string `env:"SCIM_BASE_URL"` - Secret string `env:"SCIM_SECRET"` - ExternalIdAsPrimary bool `env:"SCIM_EXTERNAL_ID_AS_PRIMARY"` - ExternalIdValidation string `env:"SCIM_EXTERNAL_ID_VALIDATION"` - } -) - -// SCIM initializes and returns a SCIMOpt with default values -func SCIM() (o *SCIMOpt) { - o = &SCIMOpt{ - BaseURL: "/scim", - ExternalIdValidation: "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", - } - - fill(o) - - // Function that allows access to custom logic inside the parent function. - // The custom logic in the other file should be like: - // func (o *SCIM) Defaults() {...} - func(o interface{}) { - if def, ok := o.(interface{ Defaults() }); ok { - def.Defaults() - } - }(o) - - return -} diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/SCIM.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/SCIM.yaml deleted file mode 100644 index 086c0f62c..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/SCIM.yaml +++ /dev/null @@ -1,18 +0,0 @@ -docs: - title: SCIM Server - -props: - - name: enabled - type: bool - description: Enable SCIM subsystem - - name: baseURL - default: "/scim" - description: Prefix for SCIM API endpoints - - name: secret - description: Secret to use to validate requests on SCIM API endpoints - - name: externalIdAsPrimary - type: bool - description: Use external IDs in SCIM API endpoints - - name: externalIdValidation - default: "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$" - description: Validates format of external IDs. Defaults to UUID diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/SMTP.gen.go b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/SMTP.gen.go deleted file mode 100644 index 239bc32f1..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/SMTP.gen.go +++ /dev/null @@ -1,43 +0,0 @@ -package options - -// This file is auto-generated. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// Definitions file that controls how this file is generated: -// pkg/options/SMTP.yaml - -type ( - SMTPOpt struct { - Host string `env:"SMTP_HOST"` - Port int `env:"SMTP_PORT"` - User string `env:"SMTP_USER"` - Pass string `env:"SMTP_PASS"` - From string `env:"SMTP_FROM"` - TlsInsecure bool `env:"SMTP_TLS_INSECURE"` - TlsServerName string `env:"SMTP_TLS_SERVER_NAME"` - } -) - -// SMTP initializes and returns a SMTPOpt with default values -func SMTP() (o *SMTPOpt) { - o = &SMTPOpt{ - Host: "localhost", - Port: 25, - TlsInsecure: false, - } - - fill(o) - - // Function that allows access to custom logic inside the parent function. - // The custom logic in the other file should be like: - // func (o *SMTP) Defaults() {...} - func(o interface{}) { - if def, ok := o.(interface{ Defaults() }); ok { - def.Defaults() - } - }(o) - - return -} diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/SMTP.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/SMTP.yaml deleted file mode 100644 index 38441e26c..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/SMTP.yaml +++ /dev/null @@ -1,35 +0,0 @@ -docs: - title: Email sending - intro: |- - Configure your local SMTP server or use one of the available providers. - - These values are copied to settings when the server starts and can be managed from the administration console. - We recommend you remove these values after they are copied to settings. - If server detects difference between these options and settings, it shows a warning in the log on server start. - -props: - - name: host - default: "localhost" - description: |- - The SMTP server hostname. - - - name: port - type: int - default: 25 - description: The SMTP post. - - - name: user - description: The SMTP username. - - - name: pass - description: The SMTP password. - - - name: from - description: The SMTP `from` email parameter - - - name: tlsInsecure - type: bool - default: false - description: Allow insecure (invalid, expired TLS certificates) connections. - - - name: tlsServerName diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/actionLog.gen.go b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/actionLog.gen.go deleted file mode 100644 index 33b8ad966..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/actionLog.gen.go +++ /dev/null @@ -1,39 +0,0 @@ -package options - -// This file is auto-generated. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// Definitions file that controls how this file is generated: -// pkg/options/actionLog.yaml - -type ( - ActionLogOpt struct { - Enabled bool `env:"ACTIONLOG_ENABLED"` - Debug bool `env:"ACTIONLOG_DEBUG"` - WorkflowFunctionsEnabled bool `env:"ACTIONLOG_WORKFLOW_FUNCTIONS_ENABLED"` - } -) - -// ActionLog initializes and returns a ActionLogOpt with default values -func ActionLog() (o *ActionLogOpt) { - o = &ActionLogOpt{ - Enabled: true, - Debug: false, - WorkflowFunctionsEnabled: false, - } - - fill(o) - - // Function that allows access to custom logic inside the parent function. - // The custom logic in the other file should be like: - // func (o *ActionLog) Defaults() {...} - func(o interface{}) { - if def, ok := o.(interface{ Defaults() }); ok { - def.Defaults() - } - }(o) - - return -} diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/actionLog.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/actionLog.yaml deleted file mode 100644 index fc06321b8..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/actionLog.yaml +++ /dev/null @@ -1,21 +0,0 @@ -docs: - title: Actionlog - -props: - - name: enabled - type: bool - default: true - docs: - description: Enable action logging. - - - name: debug - type: bool - default: false - docs: - description: Enable debug action logging. - - - name: workflowFunctionsEnabled - type: bool - default: false - docs: - description: Enable workflow function for searching and recording actions diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/apigw.gen.go b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/apigw.gen.go deleted file mode 100644 index 3a68c82ed..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/apigw.gen.go +++ /dev/null @@ -1,51 +0,0 @@ -package options - -// This file is auto-generated. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// Definitions file that controls how this file is generated: -// pkg/options/apigw.yaml - -import ( - "time" -) - -type ( - ApigwOpt struct { - Enabled bool `env:"APIGW_ENABLED"` - Debug bool `env:"APIGW_DEBUG"` - LogEnabled bool `env:"APIGW_LOG_ENABLED"` - LogRequestBody bool `env:"APIGW_LOG_REQUEST_BODY"` - ProxyEnableDebugLog bool `env:"APIGW_PROXY_ENABLE_DEBUG_LOG"` - ProxyFollowRedirects bool `env:"APIGW_PROXY_FOLLOW_REDIRECTS"` - ProxyOutboundTimeout time.Duration `env:"APIGW_PROXY_OUTBOUND_TIMEOUT"` - } -) - -// Apigw initializes and returns a ApigwOpt with default values -func Apigw() (o *ApigwOpt) { - o = &ApigwOpt{ - Enabled: true, - Debug: false, - LogEnabled: false, - LogRequestBody: false, - ProxyEnableDebugLog: false, - ProxyFollowRedirects: true, - ProxyOutboundTimeout: time.Second * 30, - } - - fill(o) - - // Function that allows access to custom logic inside the parent function. - // The custom logic in the other file should be like: - // func (o *Apigw) Defaults() {...} - func(o interface{}) { - if def, ok := o.(interface{ Defaults() }); ok { - def.Defaults() - } - }(o) - - return -} diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/apigw.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/apigw.yaml deleted file mode 100644 index e769283af..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/apigw.yaml +++ /dev/null @@ -1,49 +0,0 @@ -docs: - title: API Gateway - -imports: - - time - -props: - - name: Enabled - type: bool - default: true - description: |- - Enable API Gateway - - - name: Debug - type: bool - default: false - description: |- - Enable API Gateway debugging info - - - name: logEnabled - type: bool - default: false - description: |- - Enable extra logging - - - name: logRequestBody - type: bool - default: false - description: |- - Enable incoming request body output in logs - - - name: proxyEnableDebugLog - type: bool - default: false - description: |- - Enable full debug log on requests / responses - warning, includes sensitive data - - - name: proxyFollowRedirects - type: bool - default: true - description: |- - Follow redirects on proxy requests - - - name: proxyOutboundTimeout - type: time.Duration - default: time.Second * 30 - description: |- - Outbound request timeout - diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/auth.gen.go b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/auth.gen.go deleted file mode 100644 index a30d7edb2..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/auth.gen.go +++ /dev/null @@ -1,85 +0,0 @@ -package options - -// This file is auto-generated. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// Definitions file that controls how this file is generated: -// pkg/options/auth.yaml - -import ( - "time" -) - -type ( - AuthOpt struct { - LogEnabled bool `env:"AUTH_LOG_ENABLED"` - PasswordSecurity bool `env:"AUTH_PASSWORD_SECURITY"` - Secret string `env:"AUTH_JWT_SECRET"` - AccessTokenLifetime time.Duration `env:"AUTH_OAUTH2_ACCESS_TOKEN_LIFETIME"` - RefreshTokenLifetime time.Duration `env:"AUTH_OAUTH2_REFRESH_TOKEN_LIFETIME"` - Expiry time.Duration `env:"AUTH_JWT_EXPIRY"` - ExternalRedirectURL string `env:"AUTH_EXTERNAL_REDIRECT_URL"` - ExternalCookieSecret string `env:"AUTH_EXTERNAL_COOKIE_SECRET"` - BaseURL string `env:"AUTH_BASE_URL"` - SessionCookieName string `env:"AUTH_SESSION_COOKIE_NAME"` - SessionCookiePath string `env:"AUTH_SESSION_COOKIE_PATH"` - SessionCookieDomain string `env:"AUTH_SESSION_COOKIE_DOMAIN"` - SessionCookieSecure bool `env:"AUTH_SESSION_COOKIE_SECURE"` - SessionLifetime time.Duration `env:"AUTH_SESSION_LIFETIME"` - SessionPermLifetime time.Duration `env:"AUTH_SESSION_PERM_LIFETIME"` - GarbageCollectorInterval time.Duration `env:"AUTH_GARBAGE_COLLECTOR_INTERVAL"` - RequestRateLimit int `env:"AUTH_REQUEST_RATE_LIMIT"` - RequestRateWindowLength time.Duration `env:"AUTH_REQUEST_RATE_WINDOW_LENGTH"` - CsrfSecret string `env:"AUTH_CSRF_SECRET"` - CsrfEnabled bool `env:"AUTH_CSRF_ENABLED"` - CsrfFieldName string `env:"AUTH_CSRF_FIELD_NAME"` - CsrfCookieName string `env:"AUTH_CSRF_COOKIE_NAME"` - DefaultClient string `env:"AUTH_DEFAULT_CLIENT"` - AssetsPath string `env:"AUTH_ASSETS_PATH"` - DevelopmentMode bool `env:"AUTH_DEVELOPMENT_MODE"` - } -) - -// Auth initializes and returns a AuthOpt with default values -func Auth() (o *AuthOpt) { - o = &AuthOpt{ - PasswordSecurity: true, - Secret: getSecretFromEnv("jwt secret"), - AccessTokenLifetime: time.Hour * 2, - RefreshTokenLifetime: time.Hour * 24 * 3, - Expiry: time.Hour * 24 * 30, - ExternalRedirectURL: fullURL("/auth/external/{provider}/callback"), - ExternalCookieSecret: getSecretFromEnv("external cookie secret"), - BaseURL: fullURL("/auth"), - SessionCookieName: "session", - SessionCookiePath: pathPrefix("/auth"), - SessionCookieDomain: guessHostname(), - SessionCookieSecure: isSecure(), - SessionLifetime: 24 * time.Hour, - SessionPermLifetime: 360 * 24 * time.Hour, - GarbageCollectorInterval: 15 * time.Minute, - RequestRateLimit: 60, - RequestRateWindowLength: time.Minute, - CsrfSecret: getSecretFromEnv("csrf secret"), - CsrfEnabled: true, - CsrfFieldName: "same-site-authenticity-token", - CsrfCookieName: "same-site-authenticity-token", - DefaultClient: "corteza-webapp", - AssetsPath: "", - } - - fill(o) - - // Function that allows access to custom logic inside the parent function. - // The custom logic in the other file should be like: - // func (o *Auth) Defaults() {...} - func(o interface{}) { - if def, ok := o.(interface{ Defaults() }); ok { - def.Defaults() - } - }(o) - - return -} diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/auth.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/auth.yaml deleted file mode 100644 index d06598f8e..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/auth.yaml +++ /dev/null @@ -1,182 +0,0 @@ -imports: - - time - -docs: - title: Authentication - -props: - - name: logEnabled - type: bool - description: |- - Enable extra logging for authentication flows - - - name: passwordSecurity - type: bool - default: true - description: |- - Password security allows you to disable constraints to which passwords must conform to. - - [CAUTION] - ==== - Disabling password security can be useful for development environments as it removes the need for complex passwords. - Password security *should be enabled* on production environments to avoid security incidents - ==== - - - name: secret - env: AUTH_JWT_SECRET - default: getSecretFromEnv("jwt secret") - description: |- - Secret used for signing JWT tokens. - - [IMPORTANT] - ==== - If secret is not set, system auto-generates one from DB_DSN and HOSTNAME environment variables. - Generated secret will change if you change any of these variables. - ==== - - - name: accessTokenLifetime - type: time.Duration - env: AUTH_OAUTH2_ACCESS_TOKEN_LIFETIME - default: time.Hour * 2 - description: Access token lifetime - - - name: refreshTokenLifetime - type: time.Duration - env: AUTH_OAUTH2_REFRESH_TOKEN_LIFETIME - default: time.Hour * 24 * 3 - description: Refresh token lifetime - - - name: expiry - type: time.Duration - env: AUTH_JWT_EXPIRY - default: time.Hour * 24 * 30 - description: Experation time for the auth JWT tokens. - - - name: externalRedirectURL - default: fullURL("/auth/external/{provider}/callback") - description: |- - Redirect URL to be sent with OAuth2 authentication request to provider - - `provider` placeholder is replaced with the actual value when used. - - - name: externalCookieSecret - default: getSecretFromEnv("external cookie secret") - description: |- - Secret used for securing cookies - - [IMPORTANT] - ==== - If secret is not set, system auto-generates one from DB_DSN and HOSTNAME environment variables. - Generated secret will change if you change any of these variables. - ==== - - - name: baseURL - default: fullURL("/auth") - description: |- - Frontend base URL. Must be an absolute URL, with the domain. - This is used for some redirects and links in auth emails. - - - name: sessionCookieName - default: "session" - description: |- - Session cookie name - - - name: sessionCookiePath - default: pathPrefix("/auth") - description: |- - Session cookie path - - - name: sessionCookieDomain - default: guessHostname() - description: |- - Session cookie domain - - - name: sessionCookieSecure - type: bool - default: isSecure() - description: |- - Defaults to true when HTTPS is used. Corteza will try to guess the this setting by - - - name: sessionLifetime - type: time.Duration - default: 24 * time.Hour - description: |- - How long do we keep the temporary session - - - name: sessionPermLifetime - type: time.Duration - default: 360 * 24 * time.Hour - description: |- - How long do we keep the permanent session - - - name: garbageCollectorInterval - type: time.Duration - default: 15 * time.Minute - description: |- - How often are expired sessions and tokens purged from the database - - - name: requestRateLimit - type: int - default: 60 - description: |- - How many requests from a cerain IP address are allowed in a time window. - Set to zero to disable - - - name: requestRateWindowLength - type: time.Duration - default: time.Minute - description: |- - How many requests from a cerain IP address are allowed in a time window - - - name: csrfSecret - default: getSecretFromEnv("csrf secret") - description: |- - Secret used for securing CSRF protection - - [IMPORTANT] - ==== - If secret is not set, system auto-generates one from DB_DSN and HOSTNAME environment variables. - Generated secret will change if you change any of these variables. - ==== - - - name: csrfEnabled - type: bool - default: true - description: |- - Enable CSRF protection - - - name: csrfFieldName - default: "same-site-authenticity-token" - description: |- - Form field name used for CSRF protection - - - name: csrfCookieName - default: "same-site-authenticity-token" - description: |- - Cookie name used for CSRF protection - - - name: defaultClient - default: "corteza-webapp" - description: | - Handle for OAuth2 client used for automatic redirect from /auth/oauth2/go endpoint. - - This simplifies configuration for OAuth2 flow for Corteza Web applications as it removes - the need to suply redirection URL and client ID (oauth2/go endpoint does that internally) - - - name: assetsPath - default: "" - description: |- - Path to js, css, images and template source files - - When corteza starts, if path exists it tries to load template files from it. - If not it uses statically embedded files. - - When empty path is set (default value), embedded files are used. - - - name: developmentMode - type: bool - description: |- - When enabled, corteza reloads template before every execution. - Enable this for debugging or when developing auth templates. - - Should be disabled in production where templates do not change between server restarts. diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/corredor.gen.go b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/corredor.gen.go deleted file mode 100644 index 53e7186dc..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/corredor.gen.go +++ /dev/null @@ -1,64 +0,0 @@ -package options - -// This file is auto-generated. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// Definitions file that controls how this file is generated: -// pkg/options/corredor.yaml - -import ( - "time" -) - -type ( - CorredorOpt struct { - Enabled bool `env:"CORREDOR_ENABLED"` - Addr string `env:"CORREDOR_ADDR"` - MaxBackoffDelay time.Duration `env:"CORREDOR_MAX_BACKOFF_DELAY"` - MaxReceiveMessageSize int `env:"CORREDOR_MAX_RECEIVE_MESSAGE_SIZE"` - DefaultExecTimeout time.Duration `env:"CORREDOR_DEFAULT_EXEC_TIMEOUT"` - ListTimeout time.Duration `env:"CORREDOR_LIST_TIMEOUT"` - ListRefresh time.Duration `env:"CORREDOR_LIST_REFRESH"` - RunAsEnabled bool `env:"CORREDOR_RUN_AS_ENABLED"` - TlsCertEnabled bool `env:"CORREDOR_CLIENT_CERTIFICATES_ENABLED"` - TlsCertPath string `env:"CORREDOR_CLIENT_CERTIFICATES_PATH"` - TlsCertCA string `env:"CORREDOR_CLIENT_CERTIFICATES_CA"` - TlsCertPrivate string `env:"CORREDOR_CLIENT_CERTIFICATES_PRIVATE"` - TlsCertPublic string `env:"CORREDOR_CLIENT_CERTIFICATES_PUBLIC"` - TlsServerName string `env:"CORREDOR_CLIENT_CERTIFICATES_SERVER_NAME"` - } -) - -// Corredor initializes and returns a CorredorOpt with default values -func Corredor() (o *CorredorOpt) { - o = &CorredorOpt{ - Enabled: false, - Addr: "localhost:50051", - MaxBackoffDelay: time.Minute, - MaxReceiveMessageSize: 2 << 23, - DefaultExecTimeout: time.Minute, - ListTimeout: time.Second * 2, - ListRefresh: time.Second * 5, - RunAsEnabled: true, - TlsCertEnabled: false, - TlsCertPath: "/certs/corredor/client", - TlsCertCA: "ca.crt", - TlsCertPrivate: "private.key", - TlsCertPublic: "public.crt", - } - - fill(o) - - // Function that allows access to custom logic inside the parent function. - // The custom logic in the other file should be like: - // func (o *Corredor) Defaults() {...} - func(o interface{}) { - if def, ok := o.(interface{ Defaults() }); ok { - def.Defaults() - } - }(o) - - return -} diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/corredor.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/corredor.yaml deleted file mode 100644 index cc74ab637..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/corredor.yaml +++ /dev/null @@ -1,65 +0,0 @@ -imports: - - "time" - -docs: - title: Connection to Corredor - -props: - - name: enabled - type: bool - default: false - description: Enable/disable Corredor integration - - - name: addr - default: "localhost:50051" - description: Hostname and port of the Corredor gRPC server. - - - name: maxBackoffDelay - type: time.Duration - default: time.Minute - description: Max delay for backoff on connection. - - - name: maxReceiveMessageSize - type: int - default: 2 << 23 - description: Max message size that can be recived. - - - name: defaultExecTimeout - type: time.Duration - default: time.Minute - - - name: listTimeout - type: time.Duration - default: time.Second * 2 - - - name: listRefresh - type: time.Duration - default: time.Second * 5 - - - name: runAsEnabled - type: bool - default: true - - - name: tlsCertEnabled - type: bool - env: CORREDOR_CLIENT_CERTIFICATES_ENABLED - default: false - - - name: tlsCertPath - env: CORREDOR_CLIENT_CERTIFICATES_PATH - default: "/certs/corredor/client" - - - name: tlsCertCA - env: CORREDOR_CLIENT_CERTIFICATES_CA - default: "ca.crt" - - - name: tlsCertPrivate - env: CORREDOR_CLIENT_CERTIFICATES_PRIVATE - default: "private.key" - - - name: tlsCertPublic - env: CORREDOR_CLIENT_CERTIFICATES_PUBLIC - default: "public.crt" - - - name: tlsServerName - env: CORREDOR_CLIENT_CERTIFICATES_SERVER_NAME diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/environment.gen.go b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/environment.gen.go deleted file mode 100644 index e5d799b06..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/environment.gen.go +++ /dev/null @@ -1,35 +0,0 @@ -package options - -// This file is auto-generated. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// Definitions file that controls how this file is generated: -// pkg/options/environment.yaml - -type ( - EnvironmentOpt struct { - Environment string `env:"ENVIRONMENT"` - } -) - -// Environment initializes and returns a EnvironmentOpt with default values -func Environment() (o *EnvironmentOpt) { - o = &EnvironmentOpt{ - Environment: "production", - } - - fill(o) - - // Function that allows access to custom logic inside the parent function. - // The custom logic in the other file should be like: - // func (o *Environment) Defaults() {...} - func(o interface{}) { - if def, ok := o.(interface{ Defaults() }); ok { - def.Defaults() - } - }(o) - - return -} diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/environment.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/environment.yaml deleted file mode 100644 index 8fd7e06c9..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/environment.yaml +++ /dev/null @@ -1,7 +0,0 @@ -docs: - title: Environment - -props: - - name: environment - default: "production" - env: ENVIRONMENT diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/eventbus.gen.go b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/eventbus.gen.go deleted file mode 100644 index b67ce5f49..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/eventbus.gen.go +++ /dev/null @@ -1,41 +0,0 @@ -package options - -// This file is auto-generated. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// Definitions file that controls how this file is generated: -// pkg/options/eventbus.yaml - -import ( - "time" -) - -type ( - EventbusOpt struct { - SchedulerEnabled bool `env:"EVENTBUS_SCHEDULER_ENABLED"` - SchedulerInterval time.Duration `env:"EVENTBUS_SCHEDULER_INTERVAL"` - } -) - -// Eventbus initializes and returns a EventbusOpt with default values -func Eventbus() (o *EventbusOpt) { - o = &EventbusOpt{ - SchedulerEnabled: true, - SchedulerInterval: time.Minute, - } - - fill(o) - - // Function that allows access to custom logic inside the parent function. - // The custom logic in the other file should be like: - // func (o *Eventbus) Defaults() {...} - func(o interface{}) { - if def, ok := o.(interface{ Defaults() }); ok { - def.Defaults() - } - }(o) - - return -} diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/eventbus.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/eventbus.yaml deleted file mode 100644 index 90108da4c..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/eventbus.yaml +++ /dev/null @@ -1,16 +0,0 @@ -imports: - - time - -docs: - title: Events and scheduler - -props: - - name: schedulerEnabled - type: bool - default: true - description: Enable eventbus sheduler. - - - name: schedulerInterval - type: time.Duration - default: time.Minute - description: Set time interval for `eventbus` scheduler. diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/federation.gen.go b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/federation.gen.go deleted file mode 100644 index 1af9aef21..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/federation.gen.go +++ /dev/null @@ -1,51 +0,0 @@ -package options - -// This file is auto-generated. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// Definitions file that controls how this file is generated: -// pkg/options/federation.yaml - -import ( - "time" -) - -type ( - FederationOpt struct { - Enabled bool `env:"FEDERATION_ENABLED"` - Label string `env:"FEDERATION_LABEL"` - Host string `env:"FEDERATION_HOST"` - StructureMonitorInterval time.Duration `env:"FEDERATION_SYNC_STRUCTURE_MONITOR_INTERVAL"` - StructurePageSize int `env:"FEDERATION_SYNC_STRUCTURE_PAGE_SIZE"` - DataMonitorInterval time.Duration `env:"FEDERATION_SYNC_DATA_MONITOR_INTERVAL"` - DataPageSize int `env:"FEDERATION_SYNC_DATA_PAGE_SIZE"` - } -) - -// Federation initializes and returns a FederationOpt with default values -func Federation() (o *FederationOpt) { - o = &FederationOpt{ - Enabled: false, - Label: "Federation label", - Host: "local.cortezaproject.org", - StructureMonitorInterval: time.Minute * 2, - StructurePageSize: 1, - DataMonitorInterval: time.Second * 60, - DataPageSize: 100, - } - - fill(o) - - // Function that allows access to custom logic inside the parent function. - // The custom logic in the other file should be like: - // func (o *Federation) Defaults() {...} - func(o interface{}) { - if def, ok := o.(interface{ Defaults() }); ok { - def.Defaults() - } - }(o) - - return -} diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/federation.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/federation.yaml deleted file mode 100644 index 717646241..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/federation.yaml +++ /dev/null @@ -1,45 +0,0 @@ -imports: - - time - -props: - - name: Enabled - type: bool - default: false - env: FEDERATION_ENABLED - description: Federation enabled on system, it toggles rest API endpoints, possibility to map modules in Compose and sync itself - - - name: Label - type: string - default: "Federation label" - env: FEDERATION_LABEL - description: Federation label - - - name: Host - type: string - default: "local.cortezaproject.org" - env: FEDERATION_HOST - description: Host that is used during node pairing, also included in invitation - - - name: StructureMonitorInterval - type: time.Duration - default: time.Minute * 2 - env: FEDERATION_SYNC_STRUCTURE_MONITOR_INTERVAL - description: Delay in seconds for structure sync - - - name: StructurePageSize - type: int - default: 1 - env: FEDERATION_SYNC_STRUCTURE_PAGE_SIZE - description: Bulk size in fetching for structure sync - - - name: DataMonitorInterval - type: time.Duration - default: time.Second * 60 - env: FEDERATION_SYNC_DATA_MONITOR_INTERVAL - description: Delay in seconds for data sync - - - name: DataPageSize - type: int - default: 100 - env: FEDERATION_SYNC_DATA_PAGE_SIZE - description: Bulk size in fetching for data sync diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/limit.gen.go b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/limit.gen.go deleted file mode 100644 index df7cf5aa1..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/limit.gen.go +++ /dev/null @@ -1,33 +0,0 @@ -package options - -// This file is auto-generated. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// Definitions file that controls how this file is generated: -// pkg/options/limit.yaml - -type ( - LimitOpt struct { - SystemUsers int `env:"LIMIT_SYSTEM_USERS"` - } -) - -// Limit initializes and returns a LimitOpt with default values -func Limit() (o *LimitOpt) { - o = &LimitOpt{} - - fill(o) - - // Function that allows access to custom logic inside the parent function. - // The custom logic in the other file should be like: - // func (o *Limit) Defaults() {...} - func(o interface{}) { - if def, ok := o.(interface{ Defaults() }); ok { - def.Defaults() - } - }(o) - - return -} diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/limit.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/limit.yaml deleted file mode 100644 index 2057e11cc..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/limit.yaml +++ /dev/null @@ -1,50 +0,0 @@ -docs: - title: Limits - -props: - - name: systemUsers - type: int - description: |- - Maximum number of valid (not deleted, not suspended) users - -# @todo to be implemented -# - name: systemRoles -# type: int -# description: |- -# Maximum number of valid (not deleted, not archived) roles -# -# @todo to be implemented -# - name: systemGatewayRouts -# type: int -# description: |- -# Maximum number of valid (not deleted) gateway routes -# -# @todo to be implemented -# - name: systemTemplates -# type: int -# description: |- -# Maximum number of valid (not deleted) templates -# -# @todo to be implemented -# - name: composeNamespaces -# type: int -# description: |- -# Maximum number of valid (not deleted) compose namespaces -# -# @todo to be implemented -# - name: composeModules -# type: int -# description: |- -# Maximum number of valid (not deleted) compose modules accross all namespaces -# -# @todo to be implemented -# - name: composeRecords -# type: int -# description: |- -# Maximum number of valid (not deleted) compose records accross all namespaces and modules -# -# @todo to be implemented -# - name: automationWorkflows -# type: int -# description: |- -# Maximum number of valid (not deleted) automation workflows diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/locale.gen.go b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/locale.gen.go deleted file mode 100644 index df74c99d7..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/locale.gen.go +++ /dev/null @@ -1,41 +0,0 @@ -package options - -// This file is auto-generated. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// Definitions file that controls how this file is generated: -// pkg/options/locale.yaml - -type ( - LocaleOpt struct { - Languages string `env:"LOCALE_LANGUAGES"` - Path string `env:"LOCALE_PATH"` - QueryStringParam string `env:"LOCALE_QUERY_STRING_PARAM"` - ResourceTranslationsEnabled bool `env:"LOCALE_RESOURCE_TRANSLATIONS_ENABLED"` - Log bool `env:"LOCALE_LOG"` - DevelopmentMode bool `env:"LOCALE_DEVELOPMENT_MODE"` - } -) - -// Locale initializes and returns a LocaleOpt with default values -func Locale() (o *LocaleOpt) { - o = &LocaleOpt{ - Languages: "en", - QueryStringParam: "lng", - } - - fill(o) - - // Function that allows access to custom logic inside the parent function. - // The custom logic in the other file should be like: - // func (o *Locale) Defaults() {...} - func(o interface{}) { - if def, ok := o.(interface{ Defaults() }); ok { - def.Defaults() - } - }(o) - - return -} diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/locale.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/locale.yaml deleted file mode 100644 index 59a5ca7fe..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/locale.yaml +++ /dev/null @@ -1,33 +0,0 @@ -props: - - name: languages - default: "en" - description: | - List of compa delimited languages (language tags) to enable. - In case when an enabled language can not be loaded, error is logged. - - When loading language configurations (config.xml) from the configured path(s). - - - name: path - description: One or more paths to locale config and translation files, separated by colon - - - name: queryStringParam - description: | - Name of the query string parameter used to pass the language tag (it overrides Accept-Language header). - Set it to empty string to disable detection from the query string. - This parameter is ignored if only one language is enabled - default: "lng" - - - name: resourceTranslationsEnabled - type: bool - description: |- - When enabled, Corteza all - - - name: log - type: bool - description: Log locale related events and actions - - - name: developmentMode - type: bool - description: |- - When enabled, Corteza reloads language files on every request - Enable this for debugging or developing. diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/log.gen.go b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/log.gen.go deleted file mode 100644 index fe5a8733f..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/log.gen.go +++ /dev/null @@ -1,41 +0,0 @@ -package options - -// This file is auto-generated. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// Definitions file that controls how this file is generated: -// pkg/options/log.yaml - -type ( - LogOpt struct { - Debug bool `env:"LOG_DEBUG"` - Level string `env:"LOG_LEVEL"` - Filter string `env:"LOG_FILTER"` - IncludeCaller bool `env:"LOG_INCLUDE_CALLER"` - StacktraceLevel string `env:"LOG_STACKTRACE_LEVEL"` - } -) - -// Log initializes and returns a LogOpt with default values -func Log() (o *LogOpt) { - o = &LogOpt{ - Level: "warn", - IncludeCaller: false, - StacktraceLevel: "dpanic", - } - - fill(o) - - // Function that allows access to custom logic inside the parent function. - // The custom logic in the other file should be like: - // func (o *Log) Defaults() {...} - func(o interface{}) { - if def, ok := o.(interface{ Defaults() }); ok { - def.Defaults() - } - }(o) - - return -} diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/log.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/log.yaml deleted file mode 100644 index d1aea6ab1..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/log.yaml +++ /dev/null @@ -1,49 +0,0 @@ -props: - - name: debug - type: bool - description: | - Disables JSON format for logging and enables more human-readable output with colors. - - Disable for production. - - - name: level - default: "warn" - description: | - Minimum logging level. If set to "warn", - Levels warn, error, dpanic panic and fatal will be logged. - - Recommended value for production: warn - - Possible values: debug, info, warn, error, dpanic, panic, fatal - - - name: filter - description: | - Log filtering rules by level and name (log-level:log-namespace). - Please note that level (LOG_LEVEL) is applied before filter and it affects the final output! - - Leave unset for production. - - Example: - `warn+:* *:auth,workflow.*` - Log warnings, errors, panic, fatals. Everything from auth and workflow is logged. - - - See more examples and documentation here: https://github.com/moul/zapfilter - - - name: includeCaller - type: bool - default: false - description: | - Set to true to see where the logging was called from. - - Disable for production. - - - name: stacktraceLevel - default: "dpanic" - description: | - Include stack-trace when logging at a specified level or below. - Disable for production. - - Possible values: debug, info, warn, error, dpanic, panic, fatal - - diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/messagebus.gen.go b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/messagebus.gen.go deleted file mode 100644 index 5510fbe96..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/messagebus.gen.go +++ /dev/null @@ -1,37 +0,0 @@ -package options - -// This file is auto-generated. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// Definitions file that controls how this file is generated: -// pkg/options/messagebus.yaml - -type ( - MessagebusOpt struct { - Enabled bool `env:"MESSAGEBUS_ENABLED"` - LogEnabled bool `env:"MESSAGEBUS_LOG_ENABLED"` - } -) - -// Messagebus initializes and returns a MessagebusOpt with default values -func Messagebus() (o *MessagebusOpt) { - o = &MessagebusOpt{ - Enabled: true, - LogEnabled: false, - } - - fill(o) - - // Function that allows access to custom logic inside the parent function. - // The custom logic in the other file should be like: - // func (o *Messagebus) Defaults() {...} - func(o interface{}) { - if def, ok := o.(interface{ Defaults() }); ok { - def.Defaults() - } - }(o) - - return -} diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/messagebus.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/messagebus.yaml deleted file mode 100644 index 89ff0232b..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/messagebus.yaml +++ /dev/null @@ -1,15 +0,0 @@ -docs: - title: Messaging queue - -props: - - name: Enabled - type: bool - default: true - description: |- - Enable messagebus - - - name: logEnabled - type: bool - default: false - description: |- - Enable extra logging for messagebus watchers diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/monitor.gen.go b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/monitor.gen.go deleted file mode 100644 index 1de1fa12d..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/monitor.gen.go +++ /dev/null @@ -1,39 +0,0 @@ -package options - -// This file is auto-generated. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// Definitions file that controls how this file is generated: -// pkg/options/monitor.yaml - -import ( - "time" -) - -type ( - MonitorOpt struct { - Interval time.Duration `env:"MONITOR_INTERVAL"` - } -) - -// Monitor initializes and returns a MonitorOpt with default values -func Monitor() (o *MonitorOpt) { - o = &MonitorOpt{ - Interval: 300 * time.Second, - } - - fill(o) - - // Function that allows access to custom logic inside the parent function. - // The custom logic in the other file should be like: - // func (o *Monitor) Defaults() {...} - func(o interface{}) { - if def, ok := o.(interface{ Defaults() }); ok { - def.Defaults() - } - }(o) - - return -} diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/monitor.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/monitor.yaml deleted file mode 100644 index e38ed4bcf..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/monitor.yaml +++ /dev/null @@ -1,11 +0,0 @@ -imports: - - time - -docs: - title: Monitoring - -props: - - name: interval - type: time.Duration - default: 300 * time.Second - description: Output (log) interval for monitoring. diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/objectStore.gen.go b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/objectStore.gen.go deleted file mode 100644 index 1cccf4a47..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/objectStore.gen.go +++ /dev/null @@ -1,46 +0,0 @@ -package options - -// This file is auto-generated. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// Definitions file that controls how this file is generated: -// pkg/options/objectStore.yaml - -type ( - ObjectStoreOpt struct { - Path string `env:"STORAGE_PATH"` - MinioEndpoint string `env:"MINIO_ENDPOINT"` - MinioSecure bool `env:"MINIO_SECURE"` - MinioAccessKey string `env:"MINIO_ACCESS_KEY"` - MinioSecretKey string `env:"MINIO_SECRET_KEY"` - MinioSSECKey string `env:"MINIO_SSEC_KEY"` - MinioBucket string `env:"MINIO_BUCKET"` - MinioPathPrefix string `env:"MINIO_PATH_PREFIX"` - MinioStrict bool `env:"MINIO_STRICT"` - } -) - -// ObjectStore initializes and returns a ObjectStoreOpt with default values -func ObjectStore() (o *ObjectStoreOpt) { - o = &ObjectStoreOpt{ - Path: "var/store", - MinioSecure: true, - MinioBucket: "{component}", - MinioStrict: false, - } - - fill(o) - - // Function that allows access to custom logic inside the parent function. - // The custom logic in the other file should be like: - // func (o *ObjectStore) Defaults() {...} - func(o interface{}) { - if def, ok := o.(interface{ Defaults() }); ok { - def.Defaults() - } - }(o) - - return -} diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/objectStore.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/objectStore.yaml deleted file mode 100644 index 8083d32f9..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/objectStore.yaml +++ /dev/null @@ -1,44 +0,0 @@ -docs: - title: Object (file) storage - intro: - The MinIO integration allows you to replace local storage with cloud storage. - When configured, `STORAGE_PATH` is not needed. - -props: - - name: path - env: STORAGE_PATH - default: "var/store" - description: Location where uploaded files are stored. - - - name: minioEndpoint - env: MINIO_ENDPOINT - - - name: minioSecure - type: bool - env: MINIO_SECURE - default: true - - - name: minioAccessKey - env: MINIO_ACCESS_KEY - - - name: minioSecretKey - env: MINIO_SECRET_KEY - - - name: minioSSECKey - env: MINIO_SSEC_KEY - - - name: minioBucket - env: MINIO_BUCKET - default: "{component}" - description: |- - `component` placeholder is replaced with service name (e.g system). - - - name: minioPathPrefix - env: MINIO_PATH_PREFIX - description: |- - `component` placeholder is replaced with service name (e.g system). - - - name: minioStrict - type: bool - env: MINIO_STRICT - default: false diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/plugins.gen.go b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/plugins.gen.go deleted file mode 100644 index 16c5cb494..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/plugins.gen.go +++ /dev/null @@ -1,36 +0,0 @@ -package options - -// This file is auto-generated. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// Definitions file that controls how this file is generated: -// pkg/options/plugins.yaml - -type ( - PluginsOpt struct { - Enabled bool `env:"PLUGINS_ENABLED"` - Paths string `env:"PLUGINS_PATHS"` - } -) - -// Plugins initializes and returns a PluginsOpt with default values -func Plugins() (o *PluginsOpt) { - o = &PluginsOpt{ - Enabled: true, - } - - fill(o) - - // Function that allows access to custom logic inside the parent function. - // The custom logic in the other file should be like: - // func (o *Plugins) Defaults() {...} - func(o interface{}) { - if def, ok := o.(interface{ Defaults() }); ok { - def.Defaults() - } - }(o) - - return -} diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/plugins.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/plugins.yaml deleted file mode 100644 index 7bc159c04..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/plugins.yaml +++ /dev/null @@ -1,12 +0,0 @@ -docs: - title: Plugins - description: Server plugins - -props: - - name: Enabled - type: bool - default: true - description: Enable plugins - - - name: Paths - description: List of colon seperated paths or patterns where plugins could be found diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/provision.gen.go b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/provision.gen.go deleted file mode 100644 index 6cc70dbd4..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/provision.gen.go +++ /dev/null @@ -1,37 +0,0 @@ -package options - -// This file is auto-generated. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// Definitions file that controls how this file is generated: -// pkg/options/provision.yaml - -type ( - ProvisionOpt struct { - Always bool `env:"PROVISION_ALWAYS"` - Path string `env:"PROVISION_PATH"` - } -) - -// Provision initializes and returns a ProvisionOpt with default values -func Provision() (o *ProvisionOpt) { - o = &ProvisionOpt{ - Always: true, - Path: "provision/*", - } - - fill(o) - - // Function that allows access to custom logic inside the parent function. - // The custom logic in the other file should be like: - // func (o *Provision) Defaults() {...} - func(o interface{}) { - if def, ok := o.(interface{ Defaults() }); ok { - def.Defaults() - } - }(o) - - return -} diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/provision.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/provision.yaml deleted file mode 100644 index a04dfa379..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/provision.yaml +++ /dev/null @@ -1,23 +0,0 @@ -docs: - title: Provisioning - intro: |- - Provisioning allows you to configure a {PRODUCT_NAME} instance when deployed. - It occurs automatically after the {PRODUCT_NAME} server starts. - - [IMPORTANT] - ==== - We recommend you to keep provisioning enabled as it simplifies version updates by updating the database and updating settings. - - If you're doing local development or some debugging, you can disable this. - ==== - - -props: - - name: always - type: bool - default: true - description: Controls if provision should run when the server starts. - - - name: path - default: "provision/*" - description: Colon seperated paths to config files for provisioning. diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/seeder.gen.go b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/seeder.gen.go deleted file mode 100644 index 2d92e742d..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/seeder.gen.go +++ /dev/null @@ -1,33 +0,0 @@ -package options - -// This file is auto-generated. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// Definitions file that controls how this file is generated: -// pkg/options/seeder.yaml - -type ( - SeederOpt struct { - LogEnabled bool `env:"SEEDER_LOG_ENABLED"` - } -) - -// Seeder initializes and returns a SeederOpt with default values -func Seeder() (o *SeederOpt) { - o = &SeederOpt{} - - fill(o) - - // Function that allows access to custom logic inside the parent function. - // The custom logic in the other file should be like: - // func (o *Seeder) Defaults() {...} - func(o interface{}) { - if def, ok := o.(interface{ Defaults() }); ok { - def.Defaults() - } - }(o) - - return -} diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/seeder.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/seeder.yaml deleted file mode 100644 index 6ea7efc8a..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/seeder.yaml +++ /dev/null @@ -1,8 +0,0 @@ -docs: - title: Seeder - description: A seeder is the initial seeding of a database with fake data. - -props: - - name: LogEnabled - type: bool - description: Enable extra logging // fixme add some more description diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/sentry.gen.go b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/sentry.gen.go deleted file mode 100644 index 68f073685..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/sentry.gen.go +++ /dev/null @@ -1,49 +0,0 @@ -package options - -// This file is auto-generated. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// Definitions file that controls how this file is generated: -// pkg/options/sentry.yaml - -import ( - "github.com/cortezaproject/corteza-server/pkg/version" -) - -type ( - SentryOpt struct { - DSN string `env:"SENTRY_DSN"` - Debug bool `env:"SENTRY_DEBUG"` - AttachStacktrace bool `env:"SENTRY_ATTACH_STACKTRACE"` - SampleRate float32 `env:"SENTRY_SAMPLE_RATE"` - MaxBreadcrumbs int `env:"SENTRY_MAX_BREADCRUMBS"` - ServerName string `env:"SENTRY_SERVERNAME"` - Release string `env:"SENTRY_RELEASE"` - Dist string `env:"SENTRY_DIST"` - Environment string `env:"SENTRY_ENVIRONMENT"` - } -) - -// Sentry initializes and returns a SentryOpt with default values -func Sentry() (o *SentryOpt) { - o = &SentryOpt{ - AttachStacktrace: true, - MaxBreadcrumbs: 0, - Release: version.Version, - } - - fill(o) - - // Function that allows access to custom logic inside the parent function. - // The custom logic in the other file should be like: - // func (o *Sentry) Defaults() {...} - func(o interface{}) { - if def, ok := o.(interface{ Defaults() }); ok { - def.Defaults() - } - }(o) - - return -} diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/sentry.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/sentry.yaml deleted file mode 100644 index eb9892532..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/sentry.yaml +++ /dev/null @@ -1,49 +0,0 @@ -imports: - - github.com/cortezaproject/corteza-server/pkg/version - -docs: - title: Sentry monitoring - intro: |- - [NOTE] - ==== - These parameters help in the development and testing process. - When you are deploying to production, these should be disabled to improve performance and reduce storage usage. - - You should configure external services such as Sentry or ELK to keep track of logs and error reports. - ==== - -props: - - name: DSN - description: Set to enable Sentry client. - - - name: debug - type: bool - description: Print out debugging information. - - - name: attachStacktrace - type: bool - default: true - description: Attach stacktraces - - - name: sampleRate - type: float32 - description: Sample rate for event submission (0.0 - 1.0. defaults to 1.0) - - - name: maxBreadcrumbs - type: int - default: 0 - description: Maximum number of bredcrumbs. - - - name: serverName - env: SENTRY_SERVERNAME - description: Set reported Server name. - - - name: release - default: version.Version - description: Set reported Release. - - - name: dist - description: Set reported distribution. - - - name: environment - description: Set reported environment. diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/template.gen.go b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/template.gen.go deleted file mode 100644 index 26ddc75aa..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/template.gen.go +++ /dev/null @@ -1,37 +0,0 @@ -package options - -// This file is auto-generated. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// Definitions file that controls how this file is generated: -// pkg/options/template.yaml - -type ( - TemplateOpt struct { - RendererGotenbergAddress string `env:"TEMPLATE_RENDERER_GOTENBERG_ADDRESS"` - RendererGotenbergEnabled bool `env:"TEMPLATE_RENDERER_GOTENBERG_ENABLED"` - } -) - -// Template initializes and returns a TemplateOpt with default values -func Template() (o *TemplateOpt) { - o = &TemplateOpt{ - RendererGotenbergAddress: "", - RendererGotenbergEnabled: false, - } - - fill(o) - - // Function that allows access to custom logic inside the parent function. - // The custom logic in the other file should be like: - // func (o *Template) Defaults() {...} - func(o interface{}) { - if def, ok := o.(interface{ Defaults() }); ok { - def.Defaults() - } - }(o) - - return -} diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/template.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/template.yaml deleted file mode 100644 index 013ae7636..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/template.yaml +++ /dev/null @@ -1,11 +0,0 @@ -docs: - title: Rendering engine - -props: - - name: rendererGotenbergAddress - default: "" - description: Gotenberg rendering container address. - - name: rendererGotenbergEnabled - type: bool - default: false - description: Is Gotenberg rendering container enabled. diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/upgrade.gen.go b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/upgrade.gen.go deleted file mode 100644 index 80ea30750..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/upgrade.gen.go +++ /dev/null @@ -1,37 +0,0 @@ -package options - -// This file is auto-generated. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// Definitions file that controls how this file is generated: -// pkg/options/upgrade.yaml - -type ( - UpgradeOpt struct { - Debug bool `env:"UPGRADE_DEBUG"` - Always bool `env:"UPGRADE_ALWAYS"` - } -) - -// Upgrade initializes and returns a UpgradeOpt with default values -func Upgrade() (o *UpgradeOpt) { - o = &UpgradeOpt{ - Debug: false, - Always: true, - } - - fill(o) - - // Function that allows access to custom logic inside the parent function. - // The custom logic in the other file should be like: - // func (o *Upgrade) Defaults() {...} - func(o interface{}) { - if def, ok := o.(interface{ Defaults() }); ok { - def.Defaults() - } - }(o) - - return -} diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/upgrade.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/upgrade.yaml deleted file mode 100644 index 60649551b..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/upgrade.yaml +++ /dev/null @@ -1,16 +0,0 @@ -docs: - title: Data store (database) upgrade - -props: - - name: Debug - type: bool - default: false - description: |- - Enable/disable debug logging. - To enable debug logging set `UPGRADE_DEBUG=true`. - - - name: Always - type: bool - default: true - description: |- - Controls if the upgradable systems should be upgraded when the server starts. diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/waitFor.gen.go b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/waitFor.gen.go deleted file mode 100644 index c55bec4a7..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/waitFor.gen.go +++ /dev/null @@ -1,48 +0,0 @@ -package options - -// This file is auto-generated. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// Definitions file that controls how this file is generated: -// pkg/options/waitFor.yaml - -import ( - "time" -) - -type ( - WaitForOpt struct { - Delay time.Duration `env:"WAIT_FOR"` - StatusPage bool `env:"WAIT_FOR_STATUS_PAGE"` - Services string `env:"WAIT_FOR_SERVICES"` - ServicesTimeout time.Duration `env:"WAIT_FOR_SERVICES_TIMEOUT"` - ServicesProbeTimeout time.Duration `env:"WAIT_FOR_SERVICES_PROBE_TIMEOUT"` - ServicesProbeInterval time.Duration `env:"WAIT_FOR_SERVICES_PROBE_INTERVAL"` - } -) - -// WaitFor initializes and returns a WaitForOpt with default values -func WaitFor() (o *WaitForOpt) { - o = &WaitForOpt{ - Delay: 0, - StatusPage: true, - ServicesTimeout: time.Minute, - ServicesProbeTimeout: time.Second * 30, - ServicesProbeInterval: time.Second * 5, - } - - fill(o) - - // Function that allows access to custom logic inside the parent function. - // The custom logic in the other file should be like: - // func (o *WaitFor) Defaults() {...} - func(o interface{}) { - if def, ok := o.(interface{ Defaults() }); ok { - def.Defaults() - } - }(o) - - return -} diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/waitFor.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/waitFor.yaml deleted file mode 100644 index d3c64c394..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/waitFor.yaml +++ /dev/null @@ -1,56 +0,0 @@ -imports: - - time - -docs: - title: Delay system startup - intro: |- - You can configure these options to defer API execution until another external (HTTP) service is up and running. - - [ TIP ] - ==== - Delaying API execution can come in handy in complex setups where execution order is important. - ==== - -props: - - name: Delay - type: time.Duration - env: WAIT_FOR - default: 0 - description: |- - Delays API startup for the amount of time specified (10s, 2m...). - This delay happens before service (`WAIT_FOR_SERVICES`) probing. - - - name: StatusPage - type: bool - env: WAIT_FOR_STATUS_PAGE - default: true - description: Show temporary status web page. - - - name: Services - env: WAIT_FOR_SERVICES - description: |- - Space delimited list of hosts and/or URLs to probe. - Host format: `host` or `host:443` (port will default to 80). - - [NOTE] - ==== - Services are probed in parallel. - ==== - - - name: ServicesTimeout - type: time.Duration - env: WAIT_FOR_SERVICES_TIMEOUT - default: time.Minute - description: Max time for each service probe. - - - name: ServicesProbeTimeout - type: time.Duration - env: WAIT_FOR_SERVICES_PROBE_TIMEOUT - default: time.Second * 30 - description: Timeout for each service probe. - - - name: ServicesProbeInterval - type: time.Duration - env: WAIT_FOR_SERVICES_PROBE_INTERVAL - default: time.Second * 5 - description: Interval between service probes. diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/websocket.gen.go b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/websocket.gen.go deleted file mode 100644 index dd3c3c524..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/websocket.gen.go +++ /dev/null @@ -1,44 +0,0 @@ -package options - -// This file is auto-generated. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// Definitions file that controls how this file is generated: -// pkg/options/websocket.yaml - -import ( - "time" -) - -type ( - WebsocketOpt struct { - LogEnabled bool `env:"WEBSOCKET_LOG_ENABLED"` - Timeout time.Duration `env:"WEBSOCKET_TIMEOUT"` - PingTimeout time.Duration `env:"WEBSOCKET_PING_TIMEOUT"` - PingPeriod time.Duration `env:"WEBSOCKET_PING_PERIOD"` - } -) - -// Websocket initializes and returns a WebsocketOpt with default values -func Websocket() (o *WebsocketOpt) { - o = &WebsocketOpt{ - Timeout: 15 * time.Second, - PingTimeout: 120 * time.Second, - PingPeriod: ((120 * time.Second) * 9) / 10, - } - - fill(o) - - // Function that allows access to custom logic inside the parent function. - // The custom logic in the other file should be like: - // func (o *Websocket) Defaults() {...} - func(o interface{}) { - if def, ok := o.(interface{ Defaults() }); ok { - def.Defaults() - } - }(o) - - return -} diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/websocket.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/websocket.yaml deleted file mode 100644 index 5ecde67de..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/websocket.yaml +++ /dev/null @@ -1,24 +0,0 @@ -imports: - - time - -docs: - title: Websocket server - description: A Websocket server emphasize the trigger events and actions. - -props: - - name: LogEnabled - type: bool - description: Enable extra logging for authentication flows - - - name: Timeout - type: time.Duration - default: 15 * time.Second - description: Time before `WsServer` gets timed out. - - - name: PingTimeout - type: time.Duration - default: 120 * time.Second - - - name: PingPeriod - type: time.Duration - default: ((120 * time.Second) * 9) / 10 diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/workflow.gen.go b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/workflow.gen.go deleted file mode 100644 index a19d9c707..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/workflow.gen.go +++ /dev/null @@ -1,39 +0,0 @@ -package options - -// This file is auto-generated. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// Definitions file that controls how this file is generated: -// pkg/options/workflow.yaml - -type ( - WorkflowOpt struct { - Register bool `env:"WORKFLOW_REGISTER"` - ExecDebug bool `env:"WORKFLOW_EXEC_DEBUG"` - CallStackSize int `env:"WORKFLOW_CALL_STACK_SIZE"` - } -) - -// Workflow initializes and returns a WorkflowOpt with default values -func Workflow() (o *WorkflowOpt) { - o = &WorkflowOpt{ - Register: true, - ExecDebug: false, - CallStackSize: 16, - } - - fill(o) - - // Function that allows access to custom logic inside the parent function. - // The custom logic in the other file should be like: - // func (o *Workflow) Defaults() {...} - func(o interface{}) { - if def, ok := o.(interface{ Defaults() }); ok { - def.Defaults() - } - }(o) - - return -} diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/workflow.yaml b/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/workflow.yaml deleted file mode 100644 index 3d07a89d5..000000000 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/workflow.yaml +++ /dev/null @@ -1,18 +0,0 @@ -docs: - title: Workflow - -props: - - name: register - type: bool - default: true - description: Registers enabled and valid workflows and executes them when triggered - - - name: execDebug - type: bool - default: false - description: Enables verbose logging for workflow execution - - - name: callStackSize - type: int - default: 16 - description: Defines the maximum call stack size between workflows diff --git a/aux/server-discovery/vendor/github.com/dgrijalva/jwt-go/.travis.yml b/aux/server-discovery/vendor/github.com/dgrijalva/jwt-go/.travis.yml deleted file mode 100644 index 1027f56cd..000000000 --- a/aux/server-discovery/vendor/github.com/dgrijalva/jwt-go/.travis.yml +++ /dev/null @@ -1,13 +0,0 @@ -language: go - -script: - - go vet ./... - - go test -v ./... - -go: - - 1.3 - - 1.4 - - 1.5 - - 1.6 - - 1.7 - - tip diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/.travis.yml b/aux/server-discovery/vendor/github.com/go-chi/chi/.travis.yml deleted file mode 100644 index 781b0dd4e..000000000 --- a/aux/server-discovery/vendor/github.com/go-chi/chi/.travis.yml +++ /dev/null @@ -1,18 +0,0 @@ -language: go - -go: - - 1.9.x - - 1.10.x - - 1.11.x - -script: - - go get -d -t ./... - - go vet ./... - - go test ./... - - > - go_version=$(go version); - if [ ${go_version:13:4} = "1.11" ]; then - go get -u golang.org/x/tools/cmd/goimports; - goimports -d -e ./ | grep '.*' && { echo; echo "Aborting due to non-empty goimports output."; exit 1; } || :; - fi - diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/chain.go b/aux/server-discovery/vendor/github.com/go-chi/chi/chain.go deleted file mode 100644 index 88e684613..000000000 --- a/aux/server-discovery/vendor/github.com/go-chi/chi/chain.go +++ /dev/null @@ -1,49 +0,0 @@ -package chi - -import "net/http" - -// Chain returns a Middlewares type from a slice of middleware handlers. -func Chain(middlewares ...func(http.Handler) http.Handler) Middlewares { - return Middlewares(middlewares) -} - -// Handler builds and returns a http.Handler from the chain of middlewares, -// with `h http.Handler` as the final handler. -func (mws Middlewares) Handler(h http.Handler) http.Handler { - return &ChainHandler{mws, h, chain(mws, h)} -} - -// HandlerFunc builds and returns a http.Handler from the chain of middlewares, -// with `h http.Handler` as the final handler. -func (mws Middlewares) HandlerFunc(h http.HandlerFunc) http.Handler { - return &ChainHandler{mws, h, chain(mws, h)} -} - -// ChainHandler is a http.Handler with support for handler composition and -// execution. -type ChainHandler struct { - Middlewares Middlewares - Endpoint http.Handler - chain http.Handler -} - -func (c *ChainHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { - c.chain.ServeHTTP(w, r) -} - -// chain builds a http.Handler composed of an inline middleware stack and endpoint -// handler in the order they are passed. -func chain(middlewares []func(http.Handler) http.Handler, endpoint http.Handler) http.Handler { - // Return ahead of time if there aren't any middlewares for the chain - if len(middlewares) == 0 { - return endpoint - } - - // Wrap the end handler with the middleware chain - h := middlewares[len(middlewares)-1](endpoint) - for i := len(middlewares) - 2; i >= 0; i-- { - h = middlewares[i](h) - } - - return h -} diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/chi.go b/aux/server-discovery/vendor/github.com/go-chi/chi/chi.go deleted file mode 100644 index 9962229d0..000000000 --- a/aux/server-discovery/vendor/github.com/go-chi/chi/chi.go +++ /dev/null @@ -1,134 +0,0 @@ -// -// Package chi is a small, idiomatic and composable router for building HTTP services. -// -// chi requires Go 1.7 or newer. -// -// Example: -// package main -// -// import ( -// "net/http" -// -// "github.com/go-chi/chi" -// "github.com/go-chi/chi/middleware" -// ) -// -// func main() { -// r := chi.NewRouter() -// r.Use(middleware.Logger) -// r.Use(middleware.Recoverer) -// -// r.Get("/", func(w http.ResponseWriter, r *http.Request) { -// w.Write([]byte("root.")) -// }) -// -// http.ListenAndServe(":3333", r) -// } -// -// See github.com/go-chi/chi/_examples/ for more in-depth examples. -// -// URL patterns allow for easy matching of path components in HTTP -// requests. The matching components can then be accessed using -// chi.URLParam(). All patterns must begin with a slash. -// -// A simple named placeholder {name} matches any sequence of characters -// up to the next / or the end of the URL. Trailing slashes on paths must -// be handled explicitly. -// -// A placeholder with a name followed by a colon allows a regular -// expression match, for example {number:\\d+}. The regular expression -// syntax is Go's normal regexp RE2 syntax, except that regular expressions -// including { or } are not supported, and / will never be -// matched. An anonymous regexp pattern is allowed, using an empty string -// before the colon in the placeholder, such as {:\\d+} -// -// The special placeholder of asterisk matches the rest of the requested -// URL. Any trailing characters in the pattern are ignored. This is the only -// placeholder which will match / characters. -// -// Examples: -// "/user/{name}" matches "/user/jsmith" but not "/user/jsmith/info" or "/user/jsmith/" -// "/user/{name}/info" matches "/user/jsmith/info" -// "/page/*" matches "/page/intro/latest" -// "/page/*/index" also matches "/page/intro/latest" -// "/date/{yyyy:\\d\\d\\d\\d}/{mm:\\d\\d}/{dd:\\d\\d}" matches "/date/2017/04/01" -// -package chi - -import "net/http" - -// NewRouter returns a new Mux object that implements the Router interface. -func NewRouter() *Mux { - return NewMux() -} - -// Router consisting of the core routing methods used by chi's Mux, -// using only the standard net/http. -type Router interface { - http.Handler - Routes - - // Use appends one of more middlewares onto the Router stack. - Use(middlewares ...func(http.Handler) http.Handler) - - // With adds inline middlewares for an endpoint handler. - With(middlewares ...func(http.Handler) http.Handler) Router - - // Group adds a new inline-Router along the current routing - // path, with a fresh middleware stack for the inline-Router. - Group(fn func(r Router)) Router - - // Route mounts a sub-Router along a `pattern`` string. - Route(pattern string, fn func(r Router)) Router - - // Mount attaches another http.Handler along ./pattern/* - Mount(pattern string, h http.Handler) - - // Handle and HandleFunc adds routes for `pattern` that matches - // all HTTP methods. - Handle(pattern string, h http.Handler) - HandleFunc(pattern string, h http.HandlerFunc) - - // Method and MethodFunc adds routes for `pattern` that matches - // the `method` HTTP method. - Method(method, pattern string, h http.Handler) - MethodFunc(method, pattern string, h http.HandlerFunc) - - // HTTP-method routing along `pattern` - Connect(pattern string, h http.HandlerFunc) - Delete(pattern string, h http.HandlerFunc) - Get(pattern string, h http.HandlerFunc) - Head(pattern string, h http.HandlerFunc) - Options(pattern string, h http.HandlerFunc) - Patch(pattern string, h http.HandlerFunc) - Post(pattern string, h http.HandlerFunc) - Put(pattern string, h http.HandlerFunc) - Trace(pattern string, h http.HandlerFunc) - - // NotFound defines a handler to respond whenever a route could - // not be found. - NotFound(h http.HandlerFunc) - - // MethodNotAllowed defines a handler to respond whenever a method is - // not allowed. - MethodNotAllowed(h http.HandlerFunc) -} - -// Routes interface adds two methods for router traversal, which is also -// used by the `docgen` subpackage to generation documentation for Routers. -type Routes interface { - // Routes returns the routing tree in an easily traversable structure. - Routes() []Route - - // Middlewares returns the list of middlewares in use by the router. - Middlewares() Middlewares - - // Match searches the routing tree for a handler that matches - // the method/path - similar to routing a http request, but without - // executing the handler thereafter. - Match(rctx *Context, method, path string) bool -} - -// Middlewares type is a slice of standard middleware handlers with methods -// to compose middleware chains and http.Handler's. -type Middlewares []func(http.Handler) http.Handler diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/context.go b/aux/server-discovery/vendor/github.com/go-chi/chi/context.go deleted file mode 100644 index 229c9cbfb..000000000 --- a/aux/server-discovery/vendor/github.com/go-chi/chi/context.go +++ /dev/null @@ -1,161 +0,0 @@ -package chi - -import ( - "context" - "net" - "net/http" - "strings" -) - -var ( - // RouteCtxKey is the context.Context key to store the request context. - RouteCtxKey = &contextKey{"RouteContext"} -) - -// Context is the default routing context set on the root node of a -// request context to track route patterns, URL parameters and -// an optional routing path. -type Context struct { - Routes Routes - - // Routing path/method override used during the route search. - // See Mux#routeHTTP method. - RoutePath string - RouteMethod string - - // Routing pattern stack throughout the lifecycle of the request, - // across all connected routers. It is a record of all matching - // patterns across a stack of sub-routers. - RoutePatterns []string - - // URLParams are the stack of routeParams captured during the - // routing lifecycle across a stack of sub-routers. - URLParams RouteParams - - // The endpoint routing pattern that matched the request URI path - // or `RoutePath` of the current sub-router. This value will update - // during the lifecycle of a request passing through a stack of - // sub-routers. - routePattern string - - // Route parameters matched for the current sub-router. It is - // intentionally unexported so it cant be tampered. - routeParams RouteParams - - // methodNotAllowed hint - methodNotAllowed bool -} - -// NewRouteContext returns a new routing Context object. -func NewRouteContext() *Context { - return &Context{} -} - -// Reset a routing context to its initial state. -func (x *Context) Reset() { - x.Routes = nil - x.RoutePath = "" - x.RouteMethod = "" - x.RoutePatterns = x.RoutePatterns[:0] - x.URLParams.Keys = x.URLParams.Keys[:0] - x.URLParams.Values = x.URLParams.Values[:0] - - x.routePattern = "" - x.routeParams.Keys = x.routeParams.Keys[:0] - x.routeParams.Values = x.routeParams.Values[:0] - x.methodNotAllowed = false -} - -// URLParam returns the corresponding URL parameter value from the request -// routing context. -func (x *Context) URLParam(key string) string { - for k := len(x.URLParams.Keys) - 1; k >= 0; k-- { - if x.URLParams.Keys[k] == key { - return x.URLParams.Values[k] - } - } - return "" -} - -// RoutePattern builds the routing pattern string for the particular -// request, at the particular point during routing. This means, the value -// will change throughout the execution of a request in a router. That is -// why its advised to only use this value after calling the next handler. -// -// For example, -// -// func Instrument(next http.Handler) http.Handler { -// return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { -// next.ServeHTTP(w, r) -// routePattern := chi.RouteContext(r.Context()).RoutePattern() -// measure(w, r, routePattern) -// }) -// } -func (x *Context) RoutePattern() string { - routePattern := strings.Join(x.RoutePatterns, "") - return strings.Replace(routePattern, "/*/", "/", -1) -} - -// RouteContext returns chi's routing Context object from a -// http.Request Context. -func RouteContext(ctx context.Context) *Context { - return ctx.Value(RouteCtxKey).(*Context) -} - -// URLParam returns the url parameter from a http.Request object. -func URLParam(r *http.Request, key string) string { - if rctx := RouteContext(r.Context()); rctx != nil { - return rctx.URLParam(key) - } - return "" -} - -// URLParamFromCtx returns the url parameter from a http.Request Context. -func URLParamFromCtx(ctx context.Context, key string) string { - if rctx := RouteContext(ctx); rctx != nil { - return rctx.URLParam(key) - } - return "" -} - -// RouteParams is a structure to track URL routing parameters efficiently. -type RouteParams struct { - Keys, Values []string -} - -// Add will append a URL parameter to the end of the route param -func (s *RouteParams) Add(key, value string) { - (*s).Keys = append((*s).Keys, key) - (*s).Values = append((*s).Values, value) -} - -// ServerBaseContext wraps an http.Handler to set the request context to the -// `baseCtx`. -func ServerBaseContext(baseCtx context.Context, h http.Handler) http.Handler { - fn := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() - baseCtx := baseCtx - - // Copy over default net/http server context keys - if v, ok := ctx.Value(http.ServerContextKey).(*http.Server); ok { - baseCtx = context.WithValue(baseCtx, http.ServerContextKey, v) - } - if v, ok := ctx.Value(http.LocalAddrContextKey).(net.Addr); ok { - baseCtx = context.WithValue(baseCtx, http.LocalAddrContextKey, v) - } - - h.ServeHTTP(w, r.WithContext(baseCtx)) - }) - return fn -} - -// contextKey is a value for use with context.WithValue. It's used as -// a pointer so it fits in an interface{} without allocation. This technique -// for defining context keys was copied from Go 1.7's new use of context in net/http. -type contextKey struct { - name string -} - -func (k *contextKey) String() string { - return "chi context value " + k.name -} diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/closenotify17.go b/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/closenotify17.go deleted file mode 100644 index 95802b13e..000000000 --- a/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/closenotify17.go +++ /dev/null @@ -1,42 +0,0 @@ -// +build go1.7,!go1.8 - -package middleware - -import ( - "context" - "net/http" -) - -// CloseNotify is a middleware that cancels ctx when the underlying -// connection has gone away. It can be used to cancel long operations -// on the server when the client disconnects before the response is ready. -// -// Note: this behaviour is standard in Go 1.8+, so the middleware does nothing -// on 1.8+ and exists just for backwards compatibility. -func CloseNotify(next http.Handler) http.Handler { - fn := func(w http.ResponseWriter, r *http.Request) { - cn, ok := w.(http.CloseNotifier) - if !ok { - panic("chi/middleware: CloseNotify expects http.ResponseWriter to implement http.CloseNotifier interface") - } - closeNotifyCh := cn.CloseNotify() - - ctx, cancel := context.WithCancel(r.Context()) - defer cancel() - - go func() { - select { - case <-ctx.Done(): - return - case <-closeNotifyCh: - cancel() - return - } - }() - - r = r.WithContext(ctx) - next.ServeHTTP(w, r) - } - - return http.HandlerFunc(fn) -} diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/closenotify18.go b/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/closenotify18.go deleted file mode 100644 index 4f0d73cc2..000000000 --- a/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/closenotify18.go +++ /dev/null @@ -1,17 +0,0 @@ -// +build go1.8 appengine - -package middleware - -import ( - "net/http" -) - -// CloseNotify is a middleware that cancels ctx when the underlying -// connection has gone away. It can be used to cancel long operations -// on the server when the client disconnects before the response is ready. -// -// Note: this behaviour is standard in Go 1.8+, so the middleware does nothing -// on 1.8+ and exists just for backwards compatibility. -func CloseNotify(next http.Handler) http.Handler { - return next -} diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/compress.go b/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/compress.go deleted file mode 100644 index d2d964add..000000000 --- a/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/compress.go +++ /dev/null @@ -1,273 +0,0 @@ -package middleware - -import ( - "bufio" - "compress/flate" - "compress/gzip" - "errors" - "io" - "net" - "net/http" - "regexp" - "sort" - "strings" -) - -var encoders = map[string]EncoderFunc{} - -var acceptEncodingAlgorithmsRe = regexp.MustCompile(`([a-z]{2,}|\*)`) - -func init() { - // TODO: - // lzma: Opera. - // sdch: Chrome, Android. Gzip output + dictionary header. - // br: Brotli. - - // TODO: Exception for old MSIE browsers that can't handle non-HTML? - // https://zoompf.com/blog/2012/02/lose-the-wait-http-compression - SetEncoder("gzip", encoderGzip) - - // HTTP 1.1 "deflate" (RFC 2616) stands for DEFLATE data (RFC 1951) - // wrapped with zlib (RFC 1950). The zlib wrapper uses Adler-32 - // checksum compared to CRC-32 used in "gzip" and thus is faster. - // - // But.. some old browsers (MSIE, Safari 5.1) incorrectly expect - // raw DEFLATE data only, without the mentioned zlib wrapper. - // Because of this major confusion, most modern browsers try it - // both ways, first looking for zlib headers. - // Quote by Mark Adler: http://stackoverflow.com/a/9186091/385548 - // - // The list of browsers having problems is quite big, see: - // http://zoompf.com/blog/2012/02/lose-the-wait-http-compression - // https://web.archive.org/web/20120321182910/http://www.vervestudios.co/projects/compression-tests/results - // - // That's why we prefer gzip over deflate. It's just more reliable - // and not significantly slower than gzip. - SetEncoder("deflate", encoderDeflate) - - // NOTE: Not implemented, intentionally: - // case "compress": // LZW. Deprecated. - // case "bzip2": // Too slow on-the-fly. - // case "zopfli": // Too slow on-the-fly. - // case "xz": // Too slow on-the-fly. -} - -// An EncoderFunc is a function that wraps the provided ResponseWriter with a -// streaming compression algorithm and returns it. -// -// In case of failure, the function should return nil. -type EncoderFunc func(w http.ResponseWriter, level int) io.Writer - -// SetEncoder can be used to set the implementation of a compression algorithm. -// -// The encoding should be a standardised identifier. See: -// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding -// -// For example, add the Brotli algortithm: -// -// import brotli_enc "gopkg.in/kothar/brotli-go.v0/enc" -// -// middleware.SetEncoder("br", func(w http.ResponseWriter, level int) io.Writer { -// params := brotli_enc.NewBrotliParams() -// params.SetQuality(level) -// return brotli_enc.NewBrotliWriter(params, w) -// }) -func SetEncoder(encoding string, fn EncoderFunc) { - if encoding == "" { - panic("the encoding can not be empty") - } - if fn == nil { - panic("attempted to set a nil encoder function") - } - encoders[encoding] = fn -} - -var defaultContentTypes = map[string]struct{}{ - "text/html": {}, - "text/css": {}, - "text/plain": {}, - "text/javascript": {}, - "application/javascript": {}, - "application/x-javascript": {}, - "application/json": {}, - "application/atom+xml": {}, - "application/rss+xml": {}, - "image/svg+xml": {}, -} - -// DefaultCompress is a middleware that compresses response -// body of predefined content types to a data format based -// on Accept-Encoding request header. It uses a default -// compression level. -func DefaultCompress(next http.Handler) http.Handler { - return Compress(flate.DefaultCompression)(next) -} - -// Compress is a middleware that compresses response -// body of a given content types to a data format based -// on Accept-Encoding request header. It uses a given -// compression level. -func Compress(level int, types ...string) func(next http.Handler) http.Handler { - contentTypes := defaultContentTypes - if len(types) > 0 { - contentTypes = make(map[string]struct{}, len(types)) - for _, t := range types { - contentTypes[t] = struct{}{} - } - } - - return func(next http.Handler) http.Handler { - fn := func(w http.ResponseWriter, r *http.Request) { - encoder, encoding := selectEncoder(r.Header) - mcw := &maybeCompressResponseWriter{ - ResponseWriter: w, - w: w, - contentTypes: contentTypes, - encoder: encoder, - encoding: encoding, - level: level, - } - defer mcw.Close() - - next.ServeHTTP(mcw, r) - } - - return http.HandlerFunc(fn) - } -} - -func selectEncoder(h http.Header) (EncoderFunc, string) { - header := h.Get("Accept-Encoding") - - // Parse the names of all accepted algorithms from the header. - var accepted []string - for _, m := range acceptEncodingAlgorithmsRe.FindAllStringSubmatch(header, -1) { - accepted = append(accepted, m[1]) - } - - sort.Sort(byPerformance(accepted)) - - // Select the first mutually supported algorithm. - for _, name := range accepted { - if fn, ok := encoders[name]; ok { - return fn, name - } - } - return nil, "" -} - -type byPerformance []string - -func (l byPerformance) Len() int { return len(l) } -func (l byPerformance) Swap(i, j int) { l[i], l[j] = l[j], l[i] } -func (l byPerformance) Less(i, j int) bool { - // Higher number = higher preference. This causes unknown names, which map - // to 0, to always be less prefered. - scores := map[string]int{ - "br": 3, - "gzip": 2, - "deflate": 1, - } - return scores[l[i]] > scores[l[j]] -} - -type maybeCompressResponseWriter struct { - http.ResponseWriter - w io.Writer - encoder EncoderFunc - encoding string - contentTypes map[string]struct{} - level int - wroteHeader bool -} - -func (w *maybeCompressResponseWriter) WriteHeader(code int) { - if w.wroteHeader { - return - } - w.wroteHeader = true - defer w.ResponseWriter.WriteHeader(code) - - // Already compressed data? - if w.ResponseWriter.Header().Get("Content-Encoding") != "" { - return - } - - // Parse the first part of the Content-Type response header. - contentType := "" - parts := strings.Split(w.ResponseWriter.Header().Get("Content-Type"), ";") - if len(parts) > 0 { - contentType = parts[0] - } - - // Is the content type compressable? - if _, ok := w.contentTypes[contentType]; !ok { - return - } - - if w.encoder != nil && w.encoding != "" { - if wr := w.encoder(w.ResponseWriter, w.level); wr != nil { - w.w = wr - w.Header().Set("Content-Encoding", w.encoding) - // The content-length after compression is unknown - w.Header().Del("Content-Length") - } - } -} - -func (w *maybeCompressResponseWriter) Write(p []byte) (int, error) { - if !w.wroteHeader { - w.WriteHeader(http.StatusOK) - } - - return w.w.Write(p) -} - -func (w *maybeCompressResponseWriter) Flush() { - if f, ok := w.w.(http.Flusher); ok { - f.Flush() - } -} - -func (w *maybeCompressResponseWriter) Hijack() (net.Conn, *bufio.ReadWriter, error) { - if hj, ok := w.w.(http.Hijacker); ok { - return hj.Hijack() - } - return nil, nil, errors.New("chi/middleware: http.Hijacker is unavailable on the writer") -} - -func (w *maybeCompressResponseWriter) CloseNotify() <-chan bool { - if cn, ok := w.w.(http.CloseNotifier); ok { - return cn.CloseNotify() - } - - // If the underlying writer does not implement http.CloseNotifier, return - // a channel that never receives a value. The semantics here is that the - // client never disconnnects before the request is processed by the - // http.Handler, which is close enough to the default behavior (when - // CloseNotify() is not even called). - return make(chan bool, 1) -} - -func (w *maybeCompressResponseWriter) Close() error { - if c, ok := w.w.(io.WriteCloser); ok { - return c.Close() - } - return errors.New("chi/middleware: io.WriteCloser is unavailable on the writer") -} - -func encoderGzip(w http.ResponseWriter, level int) io.Writer { - gw, err := gzip.NewWriterLevel(w, level) - if err != nil { - return nil - } - return gw -} - -func encoderDeflate(w http.ResponseWriter, level int) io.Writer { - dw, err := flate.NewWriter(w, level) - if err != nil { - return nil - } - return dw -} diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/compress18.go b/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/compress18.go deleted file mode 100644 index 0048f7d91..000000000 --- a/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/compress18.go +++ /dev/null @@ -1,15 +0,0 @@ -// +build go1.8 appengine - -package middleware - -import ( - "errors" - "net/http" -) - -func (w *maybeCompressResponseWriter) Push(target string, opts *http.PushOptions) error { - if ps, ok := w.w.(http.Pusher); ok { - return ps.Push(target, opts) - } - return errors.New("chi/middleware: http.Pusher is unavailable on the writer") -} diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/content_type.go b/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/content_type.go deleted file mode 100644 index 3a2dc20af..000000000 --- a/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/content_type.go +++ /dev/null @@ -1,45 +0,0 @@ -package middleware - -import ( - "net/http" - "strings" -) - -// SetHeader is a convenience handler to set a response header key/value -func SetHeader(key, value string) func(next http.Handler) http.Handler { - return func(next http.Handler) http.Handler { - fn := func(w http.ResponseWriter, r *http.Request) { - w.Header().Set(key, value) - next.ServeHTTP(w, r) - } - return http.HandlerFunc(fn) - } -} - -// AllowContentType enforces a whitelist of request Content-Types otherwise responds -// with a 415 Unsupported Media Type status. -func AllowContentType(contentTypes ...string) func(next http.Handler) http.Handler { - cT := []string{} - for _, t := range contentTypes { - cT = append(cT, strings.ToLower(t)) - } - - return func(next http.Handler) http.Handler { - fn := func(w http.ResponseWriter, r *http.Request) { - s := strings.ToLower(strings.TrimSpace(r.Header.Get("Content-Type"))) - if i := strings.Index(s, ";"); i > -1 { - s = s[0:i] - } - - for _, t := range cT { - if t == s { - next.ServeHTTP(w, r) - return - } - } - - w.WriteHeader(http.StatusUnsupportedMediaType) - } - return http.HandlerFunc(fn) - } -} diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/get_head.go b/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/get_head.go deleted file mode 100644 index 86068a96d..000000000 --- a/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/get_head.go +++ /dev/null @@ -1,39 +0,0 @@ -package middleware - -import ( - "net/http" - - "github.com/go-chi/chi" -) - -// GetHead automatically route undefined HEAD requests to GET handlers. -func GetHead(next http.Handler) http.Handler { - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if r.Method == "HEAD" { - rctx := chi.RouteContext(r.Context()) - routePath := rctx.RoutePath - if routePath == "" { - if r.URL.RawPath != "" { - routePath = r.URL.RawPath - } else { - routePath = r.URL.Path - } - } - - // Temporary routing context to look-ahead before routing the request - tctx := chi.NewRouteContext() - - // Attempt to find a HEAD handler for the routing path, if not found, traverse - // the router as through its a GET route, but proceed with the request - // with the HEAD method. - if !rctx.Routes.Match(tctx, "HEAD", routePath) { - rctx.RouteMethod = "GET" - rctx.RoutePath = routePath - next.ServeHTTP(w, r) - return - } - } - - next.ServeHTTP(w, r) - }) -} diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/heartbeat.go b/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/heartbeat.go deleted file mode 100644 index fe822fb53..000000000 --- a/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/heartbeat.go +++ /dev/null @@ -1,26 +0,0 @@ -package middleware - -import ( - "net/http" - "strings" -) - -// Heartbeat endpoint middleware useful to setting up a path like -// `/ping` that load balancers or uptime testing external services -// can make a request before hitting any routes. It's also convenient -// to place this above ACL middlewares as well. -func Heartbeat(endpoint string) func(http.Handler) http.Handler { - f := func(h http.Handler) http.Handler { - fn := func(w http.ResponseWriter, r *http.Request) { - if r.Method == "GET" && strings.EqualFold(r.URL.Path, endpoint) { - w.Header().Set("Content-Type", "text/plain") - w.WriteHeader(http.StatusOK) - w.Write([]byte(".")) - return - } - h.ServeHTTP(w, r) - } - return http.HandlerFunc(fn) - } - return f -} diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/logger.go b/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/logger.go deleted file mode 100644 index 9f119d565..000000000 --- a/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/logger.go +++ /dev/null @@ -1,158 +0,0 @@ -package middleware - -import ( - "bytes" - "context" - "log" - "net/http" - "os" - "time" -) - -var ( - // LogEntryCtxKey is the context.Context key to store the request log entry. - LogEntryCtxKey = &contextKey{"LogEntry"} - - // DefaultLogger is called by the Logger middleware handler to log each request. - // Its made a package-level variable so that it can be reconfigured for custom - // logging configurations. - DefaultLogger = RequestLogger(&DefaultLogFormatter{Logger: log.New(os.Stdout, "", log.LstdFlags), NoColor: false}) -) - -// Logger is a middleware that logs the start and end of each request, along -// with some useful data about what was requested, what the response status was, -// and how long it took to return. When standard output is a TTY, Logger will -// print in color, otherwise it will print in black and white. Logger prints a -// request ID if one is provided. -// -// Alternatively, look at https://github.com/pressly/lg and the `lg.RequestLogger` -// middleware pkg. -func Logger(next http.Handler) http.Handler { - return DefaultLogger(next) -} - -// RequestLogger returns a logger handler using a custom LogFormatter. -func RequestLogger(f LogFormatter) func(next http.Handler) http.Handler { - return func(next http.Handler) http.Handler { - fn := func(w http.ResponseWriter, r *http.Request) { - entry := f.NewLogEntry(r) - ww := NewWrapResponseWriter(w, r.ProtoMajor) - - t1 := time.Now() - defer func() { - entry.Write(ww.Status(), ww.BytesWritten(), time.Since(t1)) - }() - - next.ServeHTTP(ww, WithLogEntry(r, entry)) - } - return http.HandlerFunc(fn) - } -} - -// LogFormatter initiates the beginning of a new LogEntry per request. -// See DefaultLogFormatter for an example implementation. -type LogFormatter interface { - NewLogEntry(r *http.Request) LogEntry -} - -// LogEntry records the final log when a request completes. -// See defaultLogEntry for an example implementation. -type LogEntry interface { - Write(status, bytes int, elapsed time.Duration) - Panic(v interface{}, stack []byte) -} - -// GetLogEntry returns the in-context LogEntry for a request. -func GetLogEntry(r *http.Request) LogEntry { - entry, _ := r.Context().Value(LogEntryCtxKey).(LogEntry) - return entry -} - -// WithLogEntry sets the in-context LogEntry for a request. -func WithLogEntry(r *http.Request, entry LogEntry) *http.Request { - r = r.WithContext(context.WithValue(r.Context(), LogEntryCtxKey, entry)) - return r -} - -// LoggerInterface accepts printing to stdlib logger or compatible logger. -type LoggerInterface interface { - Print(v ...interface{}) -} - -// DefaultLogFormatter is a simple logger that implements a LogFormatter. -type DefaultLogFormatter struct { - Logger LoggerInterface - NoColor bool -} - -// NewLogEntry creates a new LogEntry for the request. -func (l *DefaultLogFormatter) NewLogEntry(r *http.Request) LogEntry { - useColor := !l.NoColor - entry := &defaultLogEntry{ - DefaultLogFormatter: l, - request: r, - buf: &bytes.Buffer{}, - useColor: useColor, - } - - reqID := GetReqID(r.Context()) - if reqID != "" { - cW(entry.buf, useColor, nYellow, "[%s] ", reqID) - } - cW(entry.buf, useColor, nCyan, "\"") - cW(entry.buf, useColor, bMagenta, "%s ", r.Method) - - scheme := "http" - if r.TLS != nil { - scheme = "https" - } - cW(entry.buf, useColor, nCyan, "%s://%s%s %s\" ", scheme, r.Host, r.RequestURI, r.Proto) - - entry.buf.WriteString("from ") - entry.buf.WriteString(r.RemoteAddr) - entry.buf.WriteString(" - ") - - return entry -} - -type defaultLogEntry struct { - *DefaultLogFormatter - request *http.Request - buf *bytes.Buffer - useColor bool -} - -func (l *defaultLogEntry) Write(status, bytes int, elapsed time.Duration) { - switch { - case status < 200: - cW(l.buf, l.useColor, bBlue, "%03d", status) - case status < 300: - cW(l.buf, l.useColor, bGreen, "%03d", status) - case status < 400: - cW(l.buf, l.useColor, bCyan, "%03d", status) - case status < 500: - cW(l.buf, l.useColor, bYellow, "%03d", status) - default: - cW(l.buf, l.useColor, bRed, "%03d", status) - } - - cW(l.buf, l.useColor, bBlue, " %dB", bytes) - - l.buf.WriteString(" in ") - if elapsed < 500*time.Millisecond { - cW(l.buf, l.useColor, nGreen, "%s", elapsed) - } else if elapsed < 5*time.Second { - cW(l.buf, l.useColor, nYellow, "%s", elapsed) - } else { - cW(l.buf, l.useColor, nRed, "%s", elapsed) - } - - l.Logger.Print(l.buf.String()) -} - -func (l *defaultLogEntry) Panic(v interface{}, stack []byte) { - panicEntry := l.NewLogEntry(l.request).(*defaultLogEntry) - cW(panicEntry.buf, l.useColor, bRed, "panic: %+v", v) - l.Logger.Print(panicEntry.buf.String()) - l.Logger.Print(string(stack)) -} diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/middleware.go b/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/middleware.go deleted file mode 100644 index be6a44fad..000000000 --- a/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/middleware.go +++ /dev/null @@ -1,12 +0,0 @@ -package middleware - -// contextKey is a value for use with context.WithValue. It's used as -// a pointer so it fits in an interface{} without allocation. This technique -// for defining context keys was copied from Go 1.7's new use of context in net/http. -type contextKey struct { - name string -} - -func (k *contextKey) String() string { - return "chi/middleware context value " + k.name -} diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/profiler.go b/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/profiler.go deleted file mode 100644 index 1d44b8259..000000000 --- a/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/profiler.go +++ /dev/null @@ -1,55 +0,0 @@ -package middleware - -import ( - "expvar" - "fmt" - "net/http" - "net/http/pprof" - - "github.com/go-chi/chi" -) - -// Profiler is a convenient subrouter used for mounting net/http/pprof. ie. -// -// func MyService() http.Handler { -// r := chi.NewRouter() -// // ..middlewares -// r.Mount("/debug", middleware.Profiler()) -// // ..routes -// return r -// } -func Profiler() http.Handler { - r := chi.NewRouter() - r.Use(NoCache) - - r.Get("/", func(w http.ResponseWriter, r *http.Request) { - http.Redirect(w, r, r.RequestURI+"/pprof/", 301) - }) - r.HandleFunc("/pprof", func(w http.ResponseWriter, r *http.Request) { - http.Redirect(w, r, r.RequestURI+"/", 301) - }) - - r.HandleFunc("/pprof/*", pprof.Index) - r.HandleFunc("/pprof/cmdline", pprof.Cmdline) - r.HandleFunc("/pprof/profile", pprof.Profile) - r.HandleFunc("/pprof/symbol", pprof.Symbol) - r.HandleFunc("/pprof/trace", pprof.Trace) - r.HandleFunc("/vars", expVars) - - return r -} - -// Replicated from expvar.go as not public. -func expVars(w http.ResponseWriter, r *http.Request) { - first := true - w.Header().Set("Content-Type", "application/json") - fmt.Fprintf(w, "{\n") - expvar.Do(func(kv expvar.KeyValue) { - if !first { - fmt.Fprintf(w, ",\n") - } - first = false - fmt.Fprintf(w, "%q: %s", kv.Key, kv.Value) - }) - fmt.Fprintf(w, "\n}\n") -} diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/realip.go b/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/realip.go deleted file mode 100644 index 146c2b0a0..000000000 --- a/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/realip.go +++ /dev/null @@ -1,54 +0,0 @@ -package middleware - -// Ported from Goji's middleware, source: -// https://github.com/zenazn/goji/tree/master/web/middleware - -import ( - "net/http" - "strings" -) - -var xForwardedFor = http.CanonicalHeaderKey("X-Forwarded-For") -var xRealIP = http.CanonicalHeaderKey("X-Real-IP") - -// RealIP is a middleware that sets a http.Request's RemoteAddr to the results -// of parsing either the X-Forwarded-For header or the X-Real-IP header (in that -// order). -// -// This middleware should be inserted fairly early in the middleware stack to -// ensure that subsequent layers (e.g., request loggers) which examine the -// RemoteAddr will see the intended value. -// -// You should only use this middleware if you can trust the headers passed to -// you (in particular, the two headers this middleware uses), for example -// because you have placed a reverse proxy like HAProxy or nginx in front of -// chi. If your reverse proxies are configured to pass along arbitrary header -// values from the client, or if you use this middleware without a reverse -// proxy, malicious clients will be able to make you very sad (or, depending on -// how you're using RemoteAddr, vulnerable to an attack of some sort). -func RealIP(h http.Handler) http.Handler { - fn := func(w http.ResponseWriter, r *http.Request) { - if rip := realIP(r); rip != "" { - r.RemoteAddr = rip - } - h.ServeHTTP(w, r) - } - - return http.HandlerFunc(fn) -} - -func realIP(r *http.Request) string { - var ip string - - if xff := r.Header.Get(xForwardedFor); xff != "" { - i := strings.Index(xff, ", ") - if i == -1 { - i = len(xff) - } - ip = xff[:i] - } else if xrip := r.Header.Get(xRealIP); xrip != "" { - ip = xrip - } - - return ip -} diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/recoverer.go b/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/recoverer.go deleted file mode 100644 index 57fc3eb9d..000000000 --- a/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/recoverer.go +++ /dev/null @@ -1,39 +0,0 @@ -package middleware - -// The original work was derived from Goji's middleware, source: -// https://github.com/zenazn/goji/tree/master/web/middleware - -import ( - "fmt" - "net/http" - "os" - "runtime/debug" -) - -// Recoverer is a middleware that recovers from panics, logs the panic (and a -// backtrace), and returns a HTTP 500 (Internal Server Error) status if -// possible. Recoverer prints a request ID if one is provided. -// -// Alternatively, look at https://github.com/pressly/lg middleware pkgs. -func Recoverer(next http.Handler) http.Handler { - fn := func(w http.ResponseWriter, r *http.Request) { - defer func() { - if rvr := recover(); rvr != nil { - - logEntry := GetLogEntry(r) - if logEntry != nil { - logEntry.Panic(rvr, debug.Stack()) - } else { - fmt.Fprintf(os.Stderr, "Panic: %+v\n", rvr) - debug.PrintStack() - } - - http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError) - } - }() - - next.ServeHTTP(w, r) - } - - return http.HandlerFunc(fn) -} diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/request_id.go b/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/request_id.go deleted file mode 100644 index 4afb89bfd..000000000 --- a/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/request_id.go +++ /dev/null @@ -1,92 +0,0 @@ -package middleware - -// Ported from Goji's middleware, source: -// https://github.com/zenazn/goji/tree/master/web/middleware - -import ( - "context" - "crypto/rand" - "encoding/base64" - "fmt" - "net/http" - "os" - "strings" - "sync/atomic" -) - -// Key to use when setting the request ID. -type ctxKeyRequestID int - -// RequestIDKey is the key that holds th unique request ID in a request context. -const RequestIDKey ctxKeyRequestID = 0 - -var prefix string -var reqid uint64 - -// A quick note on the statistics here: we're trying to calculate the chance that -// two randomly generated base62 prefixes will collide. We use the formula from -// http://en.wikipedia.org/wiki/Birthday_problem -// -// P[m, n] \approx 1 - e^{-m^2/2n} -// -// We ballpark an upper bound for $m$ by imagining (for whatever reason) a server -// that restarts every second over 10 years, for $m = 86400 * 365 * 10 = 315360000$ -// -// For a $k$ character base-62 identifier, we have $n(k) = 62^k$ -// -// Plugging this in, we find $P[m, n(10)] \approx 5.75%$, which is good enough for -// our purposes, and is surely more than anyone would ever need in practice -- a -// process that is rebooted a handful of times a day for a hundred years has less -// than a millionth of a percent chance of generating two colliding IDs. - -func init() { - hostname, err := os.Hostname() - if hostname == "" || err != nil { - hostname = "localhost" - } - var buf [12]byte - var b64 string - for len(b64) < 10 { - rand.Read(buf[:]) - b64 = base64.StdEncoding.EncodeToString(buf[:]) - b64 = strings.NewReplacer("+", "", "/", "").Replace(b64) - } - - prefix = fmt.Sprintf("%s/%s", hostname, b64[0:10]) -} - -// RequestID is a middleware that injects a request ID into the context of each -// request. A request ID is a string of the form "host.example.com/random-0001", -// where "random" is a base62 random string that uniquely identifies this go -// process, and where the last number is an atomically incremented request -// counter. -func RequestID(next http.Handler) http.Handler { - fn := func(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() - requestID := r.Header.Get("X-Request-Id") - if requestID == "" { - myid := atomic.AddUint64(&reqid, 1) - requestID = fmt.Sprintf("%s-%06d", prefix, myid) - } - ctx = context.WithValue(ctx, RequestIDKey, requestID) - next.ServeHTTP(w, r.WithContext(ctx)) - } - return http.HandlerFunc(fn) -} - -// GetReqID returns a request ID from the given context if one is present. -// Returns the empty string if a request ID cannot be found. -func GetReqID(ctx context.Context) string { - if ctx == nil { - return "" - } - if reqID, ok := ctx.Value(RequestIDKey).(string); ok { - return reqID - } - return "" -} - -// NextRequestID generates the next request ID in the sequence. -func NextRequestID() uint64 { - return atomic.AddUint64(&reqid, 1) -} diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/strip.go b/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/strip.go deleted file mode 100644 index 8f19766b1..000000000 --- a/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/strip.go +++ /dev/null @@ -1,48 +0,0 @@ -package middleware - -import ( - "net/http" - - "github.com/go-chi/chi" -) - -// StripSlashes is a middleware that will match request paths with a trailing -// slash, strip it from the path and continue routing through the mux, if a route -// matches, then it will serve the handler. -func StripSlashes(next http.Handler) http.Handler { - fn := func(w http.ResponseWriter, r *http.Request) { - var path string - rctx := chi.RouteContext(r.Context()) - if rctx.RoutePath != "" { - path = rctx.RoutePath - } else { - path = r.URL.Path - } - if len(path) > 1 && path[len(path)-1] == '/' { - rctx.RoutePath = path[:len(path)-1] - } - next.ServeHTTP(w, r) - } - return http.HandlerFunc(fn) -} - -// RedirectSlashes is a middleware that will match request paths with a trailing -// slash and redirect to the same path, less the trailing slash. -func RedirectSlashes(next http.Handler) http.Handler { - fn := func(w http.ResponseWriter, r *http.Request) { - var path string - rctx := chi.RouteContext(r.Context()) - if rctx.RoutePath != "" { - path = rctx.RoutePath - } else { - path = r.URL.Path - } - if len(path) > 1 && path[len(path)-1] == '/' { - path = path[:len(path)-1] - http.Redirect(w, r, path, 301) - return - } - next.ServeHTTP(w, r) - } - return http.HandlerFunc(fn) -} diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/terminal.go b/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/terminal.go deleted file mode 100644 index a5d424100..000000000 --- a/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/terminal.go +++ /dev/null @@ -1,63 +0,0 @@ -package middleware - -// Ported from Goji's middleware, source: -// https://github.com/zenazn/goji/tree/master/web/middleware - -import ( - "fmt" - "io" - "os" -) - -var ( - // Normal colors - nBlack = []byte{'\033', '[', '3', '0', 'm'} - nRed = []byte{'\033', '[', '3', '1', 'm'} - nGreen = []byte{'\033', '[', '3', '2', 'm'} - nYellow = []byte{'\033', '[', '3', '3', 'm'} - nBlue = []byte{'\033', '[', '3', '4', 'm'} - nMagenta = []byte{'\033', '[', '3', '5', 'm'} - nCyan = []byte{'\033', '[', '3', '6', 'm'} - nWhite = []byte{'\033', '[', '3', '7', 'm'} - // Bright colors - bBlack = []byte{'\033', '[', '3', '0', ';', '1', 'm'} - bRed = []byte{'\033', '[', '3', '1', ';', '1', 'm'} - bGreen = []byte{'\033', '[', '3', '2', ';', '1', 'm'} - bYellow = []byte{'\033', '[', '3', '3', ';', '1', 'm'} - bBlue = []byte{'\033', '[', '3', '4', ';', '1', 'm'} - bMagenta = []byte{'\033', '[', '3', '5', ';', '1', 'm'} - bCyan = []byte{'\033', '[', '3', '6', ';', '1', 'm'} - bWhite = []byte{'\033', '[', '3', '7', ';', '1', 'm'} - - reset = []byte{'\033', '[', '0', 'm'} -) - -var isTTY bool - -func init() { - // This is sort of cheating: if stdout is a character device, we assume - // that means it's a TTY. Unfortunately, there are many non-TTY - // character devices, but fortunately stdout is rarely set to any of - // them. - // - // We could solve this properly by pulling in a dependency on - // code.google.com/p/go.crypto/ssh/terminal, for instance, but as a - // heuristic for whether to print in color or in black-and-white, I'd - // really rather not. - fi, err := os.Stdout.Stat() - if err == nil { - m := os.ModeDevice | os.ModeCharDevice - isTTY = fi.Mode()&m == m - } -} - -// colorWrite -func cW(w io.Writer, useColor bool, color []byte, s string, args ...interface{}) { - if isTTY && useColor { - w.Write(color) - } - fmt.Fprintf(w, s, args...) - if isTTY && useColor { - w.Write(reset) - } -} diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/throttle.go b/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/throttle.go deleted file mode 100644 index d935e2ce6..000000000 --- a/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/throttle.go +++ /dev/null @@ -1,101 +0,0 @@ -package middleware - -import ( - "net/http" - "time" -) - -const ( - errCapacityExceeded = "Server capacity exceeded." - errTimedOut = "Timed out while waiting for a pending request to complete." - errContextCanceled = "Context was canceled." -) - -var ( - defaultBacklogTimeout = time.Second * 60 -) - -// Throttle is a middleware that limits number of currently processed requests -// at a time. -func Throttle(limit int) func(http.Handler) http.Handler { - return ThrottleBacklog(limit, 0, defaultBacklogTimeout) -} - -// ThrottleBacklog is a middleware that limits number of currently processed -// requests at a time and provides a backlog for holding a finite number of -// pending requests. -func ThrottleBacklog(limit int, backlogLimit int, backlogTimeout time.Duration) func(http.Handler) http.Handler { - if limit < 1 { - panic("chi/middleware: Throttle expects limit > 0") - } - - if backlogLimit < 0 { - panic("chi/middleware: Throttle expects backlogLimit to be positive") - } - - t := throttler{ - tokens: make(chan token, limit), - backlogTokens: make(chan token, limit+backlogLimit), - backlogTimeout: backlogTimeout, - } - - // Filling tokens. - for i := 0; i < limit+backlogLimit; i++ { - if i < limit { - t.tokens <- token{} - } - t.backlogTokens <- token{} - } - - fn := func(h http.Handler) http.Handler { - t.h = h - return &t - } - - return fn -} - -// token represents a request that is being processed. -type token struct{} - -// throttler limits number of currently processed requests at a time. -type throttler struct { - h http.Handler - tokens chan token - backlogTokens chan token - backlogTimeout time.Duration -} - -// ServeHTTP is the primary throttler request handler -func (t *throttler) ServeHTTP(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() - select { - case <-ctx.Done(): - http.Error(w, errContextCanceled, http.StatusServiceUnavailable) - return - case btok := <-t.backlogTokens: - timer := time.NewTimer(t.backlogTimeout) - - defer func() { - t.backlogTokens <- btok - }() - - select { - case <-timer.C: - http.Error(w, errTimedOut, http.StatusServiceUnavailable) - return - case <-ctx.Done(): - http.Error(w, errContextCanceled, http.StatusServiceUnavailable) - return - case tok := <-t.tokens: - defer func() { - t.tokens <- tok - }() - t.h.ServeHTTP(w, r) - } - return - default: - http.Error(w, errCapacityExceeded, http.StatusServiceUnavailable) - return - } -} diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/url_format.go b/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/url_format.go deleted file mode 100644 index 5749e4f32..000000000 --- a/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/url_format.go +++ /dev/null @@ -1,72 +0,0 @@ -package middleware - -import ( - "context" - "net/http" - "strings" - - "github.com/go-chi/chi" -) - -var ( - // URLFormatCtxKey is the context.Context key to store the URL format data - // for a request. - URLFormatCtxKey = &contextKey{"URLFormat"} -) - -// URLFormat is a middleware that parses the url extension from a request path and stores it -// on the context as a string under the key `middleware.URLFormatCtxKey`. The middleware will -// trim the suffix from the routing path and continue routing. -// -// Routers should not include a url parameter for the suffix when using this middleware. -// -// Sample usage.. for url paths: `/articles/1`, `/articles/1.json` and `/articles/1.xml` -// -// func routes() http.Handler { -// r := chi.NewRouter() -// r.Use(middleware.URLFormat) -// -// r.Get("/articles/{id}", ListArticles) -// -// return r -// } -// -// func ListArticles(w http.ResponseWriter, r *http.Request) { -// urlFormat, _ := r.Context().Value(middleware.URLFormatCtxKey).(string) -// -// switch urlFormat { -// case "json": -// render.JSON(w, r, articles) -// case "xml:" -// render.XML(w, r, articles) -// default: -// render.JSON(w, r, articles) -// } -// } -// -func URLFormat(next http.Handler) http.Handler { - fn := func(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() - - var format string - path := r.URL.Path - - if strings.Index(path, ".") > 0 { - base := strings.LastIndex(path, "/") - idx := strings.Index(path[base:], ".") - - if idx > 0 { - idx += base - format = path[idx+1:] - - rctx := chi.RouteContext(r.Context()) - rctx.RoutePath = path[:idx] - } - } - - r = r.WithContext(context.WithValue(ctx, URLFormatCtxKey, format)) - - next.ServeHTTP(w, r) - } - return http.HandlerFunc(fn) -} diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/value.go b/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/value.go deleted file mode 100644 index fbbd0393f..000000000 --- a/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/value.go +++ /dev/null @@ -1,17 +0,0 @@ -package middleware - -import ( - "context" - "net/http" -) - -// WithValue is a middleware that sets a given key/value in a context chain. -func WithValue(key interface{}, val interface{}) func(next http.Handler) http.Handler { - return func(next http.Handler) http.Handler { - fn := func(w http.ResponseWriter, r *http.Request) { - r = r.WithContext(context.WithValue(r.Context(), key, val)) - next.ServeHTTP(w, r) - } - return http.HandlerFunc(fn) - } -} diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/wrap_writer.go b/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/wrap_writer.go deleted file mode 100644 index e49fa5be4..000000000 --- a/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/wrap_writer.go +++ /dev/null @@ -1,154 +0,0 @@ -package middleware - -// The original work was derived from Goji's middleware, source: -// https://github.com/zenazn/goji/tree/master/web/middleware - -import ( - "bufio" - "io" - "net" - "net/http" -) - -// WrapResponseWriter is a proxy around an http.ResponseWriter that allows you to hook -// into various parts of the response process. -type WrapResponseWriter interface { - http.ResponseWriter - // Status returns the HTTP status of the request, or 0 if one has not - // yet been sent. - Status() int - // BytesWritten returns the total number of bytes sent to the client. - BytesWritten() int - // Tee causes the response body to be written to the given io.Writer in - // addition to proxying the writes through. Only one io.Writer can be - // tee'd to at once: setting a second one will overwrite the first. - // Writes will be sent to the proxy before being written to this - // io.Writer. It is illegal for the tee'd writer to be modified - // concurrently with writes. - Tee(io.Writer) - // Unwrap returns the original proxied target. - Unwrap() http.ResponseWriter -} - -// basicWriter wraps a http.ResponseWriter that implements the minimal -// http.ResponseWriter interface. -type basicWriter struct { - http.ResponseWriter - wroteHeader bool - code int - bytes int - tee io.Writer -} - -func (b *basicWriter) WriteHeader(code int) { - if !b.wroteHeader { - b.code = code - b.wroteHeader = true - b.ResponseWriter.WriteHeader(code) - } -} -func (b *basicWriter) Write(buf []byte) (int, error) { - b.WriteHeader(http.StatusOK) - n, err := b.ResponseWriter.Write(buf) - if b.tee != nil { - _, err2 := b.tee.Write(buf[:n]) - // Prefer errors generated by the proxied writer. - if err == nil { - err = err2 - } - } - b.bytes += n - return n, err -} -func (b *basicWriter) maybeWriteHeader() { - if !b.wroteHeader { - b.WriteHeader(http.StatusOK) - } -} -func (b *basicWriter) Status() int { - return b.code -} -func (b *basicWriter) BytesWritten() int { - return b.bytes -} -func (b *basicWriter) Tee(w io.Writer) { - b.tee = w -} -func (b *basicWriter) Unwrap() http.ResponseWriter { - return b.ResponseWriter -} - -type flushWriter struct { - basicWriter -} - -func (f *flushWriter) Flush() { - f.wroteHeader = true - - fl := f.basicWriter.ResponseWriter.(http.Flusher) - fl.Flush() -} - -var _ http.Flusher = &flushWriter{} - -// httpFancyWriter is a HTTP writer that additionally satisfies http.CloseNotifier, -// http.Flusher, http.Hijacker, and io.ReaderFrom. It exists for the common case -// of wrapping the http.ResponseWriter that package http gives you, in order to -// make the proxied object support the full method set of the proxied object. -type httpFancyWriter struct { - basicWriter -} - -func (f *httpFancyWriter) CloseNotify() <-chan bool { - cn := f.basicWriter.ResponseWriter.(http.CloseNotifier) - return cn.CloseNotify() -} -func (f *httpFancyWriter) Flush() { - f.wroteHeader = true - - fl := f.basicWriter.ResponseWriter.(http.Flusher) - fl.Flush() -} -func (f *httpFancyWriter) Hijack() (net.Conn, *bufio.ReadWriter, error) { - hj := f.basicWriter.ResponseWriter.(http.Hijacker) - return hj.Hijack() -} -func (f *httpFancyWriter) ReadFrom(r io.Reader) (int64, error) { - if f.basicWriter.tee != nil { - n, err := io.Copy(&f.basicWriter, r) - f.basicWriter.bytes += int(n) - return n, err - } - rf := f.basicWriter.ResponseWriter.(io.ReaderFrom) - f.basicWriter.maybeWriteHeader() - n, err := rf.ReadFrom(r) - f.basicWriter.bytes += int(n) - return n, err -} - -var _ http.CloseNotifier = &httpFancyWriter{} -var _ http.Flusher = &httpFancyWriter{} -var _ http.Hijacker = &httpFancyWriter{} -var _ io.ReaderFrom = &httpFancyWriter{} - -// http2FancyWriter is a HTTP2 writer that additionally satisfies http.CloseNotifier, -// http.Flusher, and io.ReaderFrom. It exists for the common case -// of wrapping the http.ResponseWriter that package http gives you, in order to -// make the proxied object support the full method set of the proxied object. -type http2FancyWriter struct { - basicWriter -} - -func (f *http2FancyWriter) CloseNotify() <-chan bool { - cn := f.basicWriter.ResponseWriter.(http.CloseNotifier) - return cn.CloseNotify() -} -func (f *http2FancyWriter) Flush() { - f.wroteHeader = true - - fl := f.basicWriter.ResponseWriter.(http.Flusher) - fl.Flush() -} - -var _ http.CloseNotifier = &http2FancyWriter{} -var _ http.Flusher = &http2FancyWriter{} diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/wrap_writer17.go b/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/wrap_writer17.go deleted file mode 100644 index c60df6086..000000000 --- a/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/wrap_writer17.go +++ /dev/null @@ -1,34 +0,0 @@ -// +build go1.7,!go1.8 - -package middleware - -import ( - "io" - "net/http" -) - -// NewWrapResponseWriter wraps an http.ResponseWriter, returning a proxy that allows you to -// hook into various parts of the response process. -func NewWrapResponseWriter(w http.ResponseWriter, protoMajor int) WrapResponseWriter { - _, cn := w.(http.CloseNotifier) - _, fl := w.(http.Flusher) - - bw := basicWriter{ResponseWriter: w} - - if protoMajor == 2 { - if cn && fl { - return &http2FancyWriter{bw} - } - } else { - _, hj := w.(http.Hijacker) - _, rf := w.(io.ReaderFrom) - if cn && fl && hj && rf { - return &httpFancyWriter{bw} - } - } - if fl { - return &flushWriter{bw} - } - - return &bw -} diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/wrap_writer18.go b/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/wrap_writer18.go deleted file mode 100644 index 115c2d4f4..000000000 --- a/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/wrap_writer18.go +++ /dev/null @@ -1,41 +0,0 @@ -// +build go1.8 appengine - -package middleware - -import ( - "io" - "net/http" -) - -// NewWrapResponseWriter wraps an http.ResponseWriter, returning a proxy that allows you to -// hook into various parts of the response process. -func NewWrapResponseWriter(w http.ResponseWriter, protoMajor int) WrapResponseWriter { - _, cn := w.(http.CloseNotifier) - _, fl := w.(http.Flusher) - - bw := basicWriter{ResponseWriter: w} - - if protoMajor == 2 { - _, ps := w.(http.Pusher) - if cn && fl && ps { - return &http2FancyWriter{bw} - } - } else { - _, hj := w.(http.Hijacker) - _, rf := w.(io.ReaderFrom) - if cn && fl && hj && rf { - return &httpFancyWriter{bw} - } - } - if fl { - return &flushWriter{bw} - } - - return &bw -} - -func (f *http2FancyWriter) Push(target string, opts *http.PushOptions) error { - return f.basicWriter.ResponseWriter.(http.Pusher).Push(target, opts) -} - -var _ http.Pusher = &http2FancyWriter{} diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/mux.go b/aux/server-discovery/vendor/github.com/go-chi/chi/mux.go deleted file mode 100644 index 84a2424a1..000000000 --- a/aux/server-discovery/vendor/github.com/go-chi/chi/mux.go +++ /dev/null @@ -1,459 +0,0 @@ -package chi - -import ( - "context" - "fmt" - "net/http" - "strings" - "sync" -) - -var _ Router = &Mux{} - -// Mux is a simple HTTP route multiplexer that parses a request path, -// records any URL params, and executes an end handler. It implements -// the http.Handler interface and is friendly with the standard library. -// -// Mux is designed to be fast, minimal and offer a powerful API for building -// modular and composable HTTP services with a large set of handlers. It's -// particularly useful for writing large REST API services that break a handler -// into many smaller parts composed of middlewares and end handlers. -type Mux struct { - // The radix trie router - tree *node - - // The middleware stack - middlewares []func(http.Handler) http.Handler - - // Controls the behaviour of middleware chain generation when a mux - // is registered as an inline group inside another mux. - inline bool - parent *Mux - - // The computed mux handler made of the chained middleware stack and - // the tree router - handler http.Handler - - // Routing context pool - pool *sync.Pool - - // Custom route not found handler - notFoundHandler http.HandlerFunc - - // Custom method not allowed handler - methodNotAllowedHandler http.HandlerFunc -} - -// NewMux returns a newly initialized Mux object that implements the Router -// interface. -func NewMux() *Mux { - mux := &Mux{tree: &node{}, pool: &sync.Pool{}} - mux.pool.New = func() interface{} { - return NewRouteContext() - } - return mux -} - -// ServeHTTP is the single method of the http.Handler interface that makes -// Mux interoperable with the standard library. It uses a sync.Pool to get and -// reuse routing contexts for each request. -func (mx *Mux) ServeHTTP(w http.ResponseWriter, r *http.Request) { - // Ensure the mux has some routes defined on the mux - if mx.handler == nil { - panic("chi: attempting to route to a mux with no handlers.") - } - - // Check if a routing context already exists from a parent router. - rctx, _ := r.Context().Value(RouteCtxKey).(*Context) - if rctx != nil { - mx.handler.ServeHTTP(w, r) - return - } - - // Fetch a RouteContext object from the sync pool, and call the computed - // mx.handler that is comprised of mx.middlewares + mx.routeHTTP. - // Once the request is finished, reset the routing context and put it back - // into the pool for reuse from another request. - rctx = mx.pool.Get().(*Context) - rctx.Reset() - rctx.Routes = mx - r = r.WithContext(context.WithValue(r.Context(), RouteCtxKey, rctx)) - mx.handler.ServeHTTP(w, r) - mx.pool.Put(rctx) -} - -// Use appends a middleware handler to the Mux middleware stack. -// -// The middleware stack for any Mux will execute before searching for a matching -// route to a specific handler, which provides opportunity to respond early, -// change the course of the request execution, or set request-scoped values for -// the next http.Handler. -func (mx *Mux) Use(middlewares ...func(http.Handler) http.Handler) { - if mx.handler != nil { - panic("chi: all middlewares must be defined before routes on a mux") - } - mx.middlewares = append(mx.middlewares, middlewares...) -} - -// Handle adds the route `pattern` that matches any http method to -// execute the `handler` http.Handler. -func (mx *Mux) Handle(pattern string, handler http.Handler) { - mx.handle(mALL, pattern, handler) -} - -// HandleFunc adds the route `pattern` that matches any http method to -// execute the `handlerFn` http.HandlerFunc. -func (mx *Mux) HandleFunc(pattern string, handlerFn http.HandlerFunc) { - mx.handle(mALL, pattern, handlerFn) -} - -// Method adds the route `pattern` that matches `method` http method to -// execute the `handler` http.Handler. -func (mx *Mux) Method(method, pattern string, handler http.Handler) { - m, ok := methodMap[strings.ToUpper(method)] - if !ok { - panic(fmt.Sprintf("chi: '%s' http method is not supported.", method)) - } - mx.handle(m, pattern, handler) -} - -// MethodFunc adds the route `pattern` that matches `method` http method to -// execute the `handlerFn` http.HandlerFunc. -func (mx *Mux) MethodFunc(method, pattern string, handlerFn http.HandlerFunc) { - mx.Method(method, pattern, handlerFn) -} - -// Connect adds the route `pattern` that matches a CONNECT http method to -// execute the `handlerFn` http.HandlerFunc. -func (mx *Mux) Connect(pattern string, handlerFn http.HandlerFunc) { - mx.handle(mCONNECT, pattern, handlerFn) -} - -// Delete adds the route `pattern` that matches a DELETE http method to -// execute the `handlerFn` http.HandlerFunc. -func (mx *Mux) Delete(pattern string, handlerFn http.HandlerFunc) { - mx.handle(mDELETE, pattern, handlerFn) -} - -// Get adds the route `pattern` that matches a GET http method to -// execute the `handlerFn` http.HandlerFunc. -func (mx *Mux) Get(pattern string, handlerFn http.HandlerFunc) { - mx.handle(mGET, pattern, handlerFn) -} - -// Head adds the route `pattern` that matches a HEAD http method to -// execute the `handlerFn` http.HandlerFunc. -func (mx *Mux) Head(pattern string, handlerFn http.HandlerFunc) { - mx.handle(mHEAD, pattern, handlerFn) -} - -// Options adds the route `pattern` that matches a OPTIONS http method to -// execute the `handlerFn` http.HandlerFunc. -func (mx *Mux) Options(pattern string, handlerFn http.HandlerFunc) { - mx.handle(mOPTIONS, pattern, handlerFn) -} - -// Patch adds the route `pattern` that matches a PATCH http method to -// execute the `handlerFn` http.HandlerFunc. -func (mx *Mux) Patch(pattern string, handlerFn http.HandlerFunc) { - mx.handle(mPATCH, pattern, handlerFn) -} - -// Post adds the route `pattern` that matches a POST http method to -// execute the `handlerFn` http.HandlerFunc. -func (mx *Mux) Post(pattern string, handlerFn http.HandlerFunc) { - mx.handle(mPOST, pattern, handlerFn) -} - -// Put adds the route `pattern` that matches a PUT http method to -// execute the `handlerFn` http.HandlerFunc. -func (mx *Mux) Put(pattern string, handlerFn http.HandlerFunc) { - mx.handle(mPUT, pattern, handlerFn) -} - -// Trace adds the route `pattern` that matches a TRACE http method to -// execute the `handlerFn` http.HandlerFunc. -func (mx *Mux) Trace(pattern string, handlerFn http.HandlerFunc) { - mx.handle(mTRACE, pattern, handlerFn) -} - -// NotFound sets a custom http.HandlerFunc for routing paths that could -// not be found. The default 404 handler is `http.NotFound`. -func (mx *Mux) NotFound(handlerFn http.HandlerFunc) { - // Build NotFound handler chain - m := mx - hFn := handlerFn - if mx.inline && mx.parent != nil { - m = mx.parent - hFn = Chain(mx.middlewares...).HandlerFunc(hFn).ServeHTTP - } - - // Update the notFoundHandler from this point forward - m.notFoundHandler = hFn - m.updateSubRoutes(func(subMux *Mux) { - if subMux.notFoundHandler == nil { - subMux.NotFound(hFn) - } - }) -} - -// MethodNotAllowed sets a custom http.HandlerFunc for routing paths where the -// method is unresolved. The default handler returns a 405 with an empty body. -func (mx *Mux) MethodNotAllowed(handlerFn http.HandlerFunc) { - // Build MethodNotAllowed handler chain - m := mx - hFn := handlerFn - if mx.inline && mx.parent != nil { - m = mx.parent - hFn = Chain(mx.middlewares...).HandlerFunc(hFn).ServeHTTP - } - - // Update the methodNotAllowedHandler from this point forward - m.methodNotAllowedHandler = hFn - m.updateSubRoutes(func(subMux *Mux) { - if subMux.methodNotAllowedHandler == nil { - subMux.MethodNotAllowed(hFn) - } - }) -} - -// With adds inline middlewares for an endpoint handler. -func (mx *Mux) With(middlewares ...func(http.Handler) http.Handler) Router { - // Similarly as in handle(), we must build the mux handler once further - // middleware registration isn't allowed for this stack, like now. - if !mx.inline && mx.handler == nil { - mx.buildRouteHandler() - } - - // Copy middlewares from parent inline muxs - var mws Middlewares - if mx.inline { - mws = make(Middlewares, len(mx.middlewares)) - copy(mws, mx.middlewares) - } - mws = append(mws, middlewares...) - - im := &Mux{pool: mx.pool, inline: true, parent: mx, tree: mx.tree, middlewares: mws} - - return im -} - -// Group creates a new inline-Mux with a fresh middleware stack. It's useful -// for a group of handlers along the same routing path that use an additional -// set of middlewares. See _examples/. -func (mx *Mux) Group(fn func(r Router)) Router { - im := mx.With().(*Mux) - if fn != nil { - fn(im) - } - return im -} - -// Route creates a new Mux with a fresh middleware stack and mounts it -// along the `pattern` as a subrouter. Effectively, this is a short-hand -// call to Mount. See _examples/. -func (mx *Mux) Route(pattern string, fn func(r Router)) Router { - subRouter := NewRouter() - if fn != nil { - fn(subRouter) - } - mx.Mount(pattern, subRouter) - return subRouter -} - -// Mount attaches another http.Handler or chi Router as a subrouter along a routing -// path. It's very useful to split up a large API as many independent routers and -// compose them as a single service using Mount. See _examples/. -// -// Note that Mount() simply sets a wildcard along the `pattern` that will continue -// routing at the `handler`, which in most cases is another chi.Router. As a result, -// if you define two Mount() routes on the exact same pattern the mount will panic. -func (mx *Mux) Mount(pattern string, handler http.Handler) { - // Provide runtime safety for ensuring a pattern isn't mounted on an existing - // routing pattern. - if mx.tree.findPattern(pattern+"*") || mx.tree.findPattern(pattern+"/*") { - panic(fmt.Sprintf("chi: attempting to Mount() a handler on an existing path, '%s'", pattern)) - } - - // Assign sub-Router's with the parent not found & method not allowed handler if not specified. - subr, ok := handler.(*Mux) - if ok && subr.notFoundHandler == nil && mx.notFoundHandler != nil { - subr.NotFound(mx.notFoundHandler) - } - if ok && subr.methodNotAllowedHandler == nil && mx.methodNotAllowedHandler != nil { - subr.MethodNotAllowed(mx.methodNotAllowedHandler) - } - - // Wrap the sub-router in a handlerFunc to scope the request path for routing. - mountHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - rctx := RouteContext(r.Context()) - rctx.RoutePath = mx.nextRoutePath(rctx) - handler.ServeHTTP(w, r) - }) - - if pattern == "" || pattern[len(pattern)-1] != '/' { - mx.handle(mALL|mSTUB, pattern, mountHandler) - mx.handle(mALL|mSTUB, pattern+"/", mountHandler) - pattern += "/" - } - - method := mALL - subroutes, _ := handler.(Routes) - if subroutes != nil { - method |= mSTUB - } - n := mx.handle(method, pattern+"*", mountHandler) - - if subroutes != nil { - n.subroutes = subroutes - } -} - -// Routes returns a slice of routing information from the tree, -// useful for traversing available routes of a router. -func (mx *Mux) Routes() []Route { - return mx.tree.routes() -} - -// Middlewares returns a slice of middleware handler functions. -func (mx *Mux) Middlewares() Middlewares { - return mx.middlewares -} - -// Match searches the routing tree for a handler that matches the method/path. -// It's similar to routing a http request, but without executing the handler -// thereafter. -// -// Note: the *Context state is updated during execution, so manage -// the state carefully or make a NewRouteContext(). -func (mx *Mux) Match(rctx *Context, method, path string) bool { - m, ok := methodMap[method] - if !ok { - return false - } - - node, _, h := mx.tree.FindRoute(rctx, m, path) - - if node != nil && node.subroutes != nil { - rctx.RoutePath = mx.nextRoutePath(rctx) - return node.subroutes.Match(rctx, method, rctx.RoutePath) - } - - return h != nil -} - -// NotFoundHandler returns the default Mux 404 responder whenever a route -// cannot be found. -func (mx *Mux) NotFoundHandler() http.HandlerFunc { - if mx.notFoundHandler != nil { - return mx.notFoundHandler - } - return http.NotFound -} - -// MethodNotAllowedHandler returns the default Mux 405 responder whenever -// a method cannot be resolved for a route. -func (mx *Mux) MethodNotAllowedHandler() http.HandlerFunc { - if mx.methodNotAllowedHandler != nil { - return mx.methodNotAllowedHandler - } - return methodNotAllowedHandler -} - -// buildRouteHandler builds the single mux handler that is a chain of the middleware -// stack, as defined by calls to Use(), and the tree router (Mux) itself. After this -// point, no other middlewares can be registered on this Mux's stack. But you can still -// compose additional middlewares via Group()'s or using a chained middleware handler. -func (mx *Mux) buildRouteHandler() { - mx.handler = chain(mx.middlewares, http.HandlerFunc(mx.routeHTTP)) -} - -// handle registers a http.Handler in the routing tree for a particular http method -// and routing pattern. -func (mx *Mux) handle(method methodTyp, pattern string, handler http.Handler) *node { - if len(pattern) == 0 || pattern[0] != '/' { - panic(fmt.Sprintf("chi: routing pattern must begin with '/' in '%s'", pattern)) - } - - // Build the final routing handler for this Mux. - if !mx.inline && mx.handler == nil { - mx.buildRouteHandler() - } - - // Build endpoint handler with inline middlewares for the route - var h http.Handler - if mx.inline { - mx.handler = http.HandlerFunc(mx.routeHTTP) - h = Chain(mx.middlewares...).Handler(handler) - } else { - h = handler - } - - // Add the endpoint to the tree and return the node - return mx.tree.InsertRoute(method, pattern, h) -} - -// routeHTTP routes a http.Request through the Mux routing tree to serve -// the matching handler for a particular http method. -func (mx *Mux) routeHTTP(w http.ResponseWriter, r *http.Request) { - // Grab the route context object - rctx := r.Context().Value(RouteCtxKey).(*Context) - - // The request routing path - routePath := rctx.RoutePath - if routePath == "" { - if r.URL.RawPath != "" { - routePath = r.URL.RawPath - } else { - routePath = r.URL.Path - } - } - - // Check if method is supported by chi - if rctx.RouteMethod == "" { - rctx.RouteMethod = r.Method - } - method, ok := methodMap[rctx.RouteMethod] - if !ok { - mx.MethodNotAllowedHandler().ServeHTTP(w, r) - return - } - - // Find the route - if _, _, h := mx.tree.FindRoute(rctx, method, routePath); h != nil { - h.ServeHTTP(w, r) - return - } - if rctx.methodNotAllowed { - mx.MethodNotAllowedHandler().ServeHTTP(w, r) - } else { - mx.NotFoundHandler().ServeHTTP(w, r) - } -} - -func (mx *Mux) nextRoutePath(rctx *Context) string { - routePath := "/" - nx := len(rctx.routeParams.Keys) - 1 // index of last param in list - if nx >= 0 && rctx.routeParams.Keys[nx] == "*" && len(rctx.routeParams.Values) > nx { - routePath += rctx.routeParams.Values[nx] - } - return routePath -} - -// Recursively update data on child routers. -func (mx *Mux) updateSubRoutes(fn func(subMux *Mux)) { - for _, r := range mx.tree.routes() { - subMux, ok := r.SubRoutes.(*Mux) - if !ok { - continue - } - fn(subMux) - } -} - -// methodNotAllowedHandler is a helper function to respond with a 405, -// method not allowed. -func methodNotAllowedHandler(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(405) - w.Write(nil) -} diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/tree.go b/aux/server-discovery/vendor/github.com/go-chi/chi/tree.go deleted file mode 100644 index d7f1dd291..000000000 --- a/aux/server-discovery/vendor/github.com/go-chi/chi/tree.go +++ /dev/null @@ -1,844 +0,0 @@ -package chi - -// Radix tree implementation below is a based on the original work by -// Armon Dadgar in https://github.com/armon/go-radix/blob/master/radix.go -// (MIT licensed). It's been heavily modified for use as a HTTP routing tree. - -import ( - "fmt" - "math" - "net/http" - "regexp" - "sort" - "strconv" - "strings" -) - -type methodTyp int - -const ( - mSTUB methodTyp = 1 << iota - mCONNECT - mDELETE - mGET - mHEAD - mOPTIONS - mPATCH - mPOST - mPUT - mTRACE -) - -var mALL = mCONNECT | mDELETE | mGET | mHEAD | - mOPTIONS | mPATCH | mPOST | mPUT | mTRACE - -var methodMap = map[string]methodTyp{ - http.MethodConnect: mCONNECT, - http.MethodDelete: mDELETE, - http.MethodGet: mGET, - http.MethodHead: mHEAD, - http.MethodOptions: mOPTIONS, - http.MethodPatch: mPATCH, - http.MethodPost: mPOST, - http.MethodPut: mPUT, - http.MethodTrace: mTRACE, -} - -// RegisterMethod adds support for custom HTTP method handlers, available -// via Router#Method and Router#MethodFunc -func RegisterMethod(method string) { - if method == "" { - return - } - method = strings.ToUpper(method) - if _, ok := methodMap[method]; ok { - return - } - n := len(methodMap) - if n > strconv.IntSize { - panic(fmt.Sprintf("chi: max number of methods reached (%d)", strconv.IntSize)) - } - mt := methodTyp(math.Exp2(float64(n))) - methodMap[method] = mt - mALL |= mt -} - -type nodeTyp uint8 - -const ( - ntStatic nodeTyp = iota // /home - ntRegexp // /{id:[0-9]+} - ntParam // /{user} - ntCatchAll // /api/v1/* -) - -type node struct { - // node type: static, regexp, param, catchAll - typ nodeTyp - - // first byte of the prefix - label byte - - // first byte of the child prefix - tail byte - - // prefix is the common prefix we ignore - prefix string - - // regexp matcher for regexp nodes - rex *regexp.Regexp - - // HTTP handler endpoints on the leaf node - endpoints endpoints - - // subroutes on the leaf node - subroutes Routes - - // child nodes should be stored in-order for iteration, - // in groups of the node type. - children [ntCatchAll + 1]nodes -} - -// endpoints is a mapping of http method constants to handlers -// for a given route. -type endpoints map[methodTyp]*endpoint - -type endpoint struct { - // endpoint handler - handler http.Handler - - // pattern is the routing pattern for handler nodes - pattern string - - // parameter keys recorded on handler nodes - paramKeys []string -} - -func (s endpoints) Value(method methodTyp) *endpoint { - mh, ok := s[method] - if !ok { - mh = &endpoint{} - s[method] = mh - } - return mh -} - -func (n *node) InsertRoute(method methodTyp, pattern string, handler http.Handler) *node { - var parent *node - search := pattern - - for { - // Handle key exhaustion - if len(search) == 0 { - // Insert or update the node's leaf handler - n.setEndpoint(method, handler, pattern) - return n - } - - // We're going to be searching for a wild node next, - // in this case, we need to get the tail - var label = search[0] - var segTail byte - var segEndIdx int - var segTyp nodeTyp - var segRexpat string - if label == '{' || label == '*' { - segTyp, _, segRexpat, segTail, _, segEndIdx = patNextSegment(search) - } - - var prefix string - if segTyp == ntRegexp { - prefix = segRexpat - } - - // Look for the edge to attach to - parent = n - n = n.getEdge(segTyp, label, segTail, prefix) - - // No edge, create one - if n == nil { - child := &node{label: label, tail: segTail, prefix: search} - hn := parent.addChild(child, search) - hn.setEndpoint(method, handler, pattern) - - return hn - } - - // Found an edge to match the pattern - - if n.typ > ntStatic { - // We found a param node, trim the param from the search path and continue. - // This param/wild pattern segment would already be on the tree from a previous - // call to addChild when creating a new node. - search = search[segEndIdx:] - continue - } - - // Static nodes fall below here. - // Determine longest prefix of the search key on match. - commonPrefix := longestPrefix(search, n.prefix) - if commonPrefix == len(n.prefix) { - // the common prefix is as long as the current node's prefix we're attempting to insert. - // keep the search going. - search = search[commonPrefix:] - continue - } - - // Split the node - child := &node{ - typ: ntStatic, - prefix: search[:commonPrefix], - } - parent.replaceChild(search[0], segTail, child) - - // Restore the existing node - n.label = n.prefix[commonPrefix] - n.prefix = n.prefix[commonPrefix:] - child.addChild(n, n.prefix) - - // If the new key is a subset, set the method/handler on this node and finish. - search = search[commonPrefix:] - if len(search) == 0 { - child.setEndpoint(method, handler, pattern) - return child - } - - // Create a new edge for the node - subchild := &node{ - typ: ntStatic, - label: search[0], - prefix: search, - } - hn := child.addChild(subchild, search) - hn.setEndpoint(method, handler, pattern) - return hn - } -} - -// addChild appends the new `child` node to the tree using the `pattern` as the trie key. -// For a URL router like chi's, we split the static, param, regexp and wildcard segments -// into different nodes. In addition, addChild will recursively call itself until every -// pattern segment is added to the url pattern tree as individual nodes, depending on type. -func (n *node) addChild(child *node, prefix string) *node { - search := prefix - - // handler leaf node added to the tree is the child. - // this may be overridden later down the flow - hn := child - - // Parse next segment - segTyp, _, segRexpat, segTail, segStartIdx, segEndIdx := patNextSegment(search) - - // Add child depending on next up segment - switch segTyp { - - case ntStatic: - // Search prefix is all static (that is, has no params in path) - // noop - - default: - // Search prefix contains a param, regexp or wildcard - - if segTyp == ntRegexp { - rex, err := regexp.Compile(segRexpat) - if err != nil { - panic(fmt.Sprintf("chi: invalid regexp pattern '%s' in route param", segRexpat)) - } - child.prefix = segRexpat - child.rex = rex - } - - if segStartIdx == 0 { - // Route starts with a param - child.typ = segTyp - - if segTyp == ntCatchAll { - segStartIdx = -1 - } else { - segStartIdx = segEndIdx - } - if segStartIdx < 0 { - segStartIdx = len(search) - } - child.tail = segTail // for params, we set the tail - - if segStartIdx != len(search) { - // add static edge for the remaining part, split the end. - // its not possible to have adjacent param nodes, so its certainly - // going to be a static node next. - - search = search[segStartIdx:] // advance search position - - nn := &node{ - typ: ntStatic, - label: search[0], - prefix: search, - } - hn = child.addChild(nn, search) - } - - } else if segStartIdx > 0 { - // Route has some param - - // starts with a static segment - child.typ = ntStatic - child.prefix = search[:segStartIdx] - child.rex = nil - - // add the param edge node - search = search[segStartIdx:] - - nn := &node{ - typ: segTyp, - label: search[0], - tail: segTail, - } - hn = child.addChild(nn, search) - - } - } - - n.children[child.typ] = append(n.children[child.typ], child) - n.children[child.typ].Sort() - return hn -} - -func (n *node) replaceChild(label, tail byte, child *node) { - for i := 0; i < len(n.children[child.typ]); i++ { - if n.children[child.typ][i].label == label && n.children[child.typ][i].tail == tail { - n.children[child.typ][i] = child - n.children[child.typ][i].label = label - n.children[child.typ][i].tail = tail - return - } - } - panic("chi: replacing missing child") -} - -func (n *node) getEdge(ntyp nodeTyp, label, tail byte, prefix string) *node { - nds := n.children[ntyp] - for i := 0; i < len(nds); i++ { - if nds[i].label == label && nds[i].tail == tail { - if ntyp == ntRegexp && nds[i].prefix != prefix { - continue - } - return nds[i] - } - } - return nil -} - -func (n *node) setEndpoint(method methodTyp, handler http.Handler, pattern string) { - // Set the handler for the method type on the node - if n.endpoints == nil { - n.endpoints = make(endpoints, 0) - } - - paramKeys := patParamKeys(pattern) - - if method&mSTUB == mSTUB { - n.endpoints.Value(mSTUB).handler = handler - } - if method&mALL == mALL { - h := n.endpoints.Value(mALL) - h.handler = handler - h.pattern = pattern - h.paramKeys = paramKeys - for _, m := range methodMap { - h := n.endpoints.Value(m) - h.handler = handler - h.pattern = pattern - h.paramKeys = paramKeys - } - } else { - h := n.endpoints.Value(method) - h.handler = handler - h.pattern = pattern - h.paramKeys = paramKeys - } -} - -func (n *node) FindRoute(rctx *Context, method methodTyp, path string) (*node, endpoints, http.Handler) { - // Reset the context routing pattern and params - rctx.routePattern = "" - rctx.routeParams.Keys = rctx.routeParams.Keys[:0] - rctx.routeParams.Values = rctx.routeParams.Values[:0] - - // Find the routing handlers for the path - rn := n.findRoute(rctx, method, path) - if rn == nil { - return nil, nil, nil - } - - // Record the routing params in the request lifecycle - rctx.URLParams.Keys = append(rctx.URLParams.Keys, rctx.routeParams.Keys...) - rctx.URLParams.Values = append(rctx.URLParams.Values, rctx.routeParams.Values...) - - // Record the routing pattern in the request lifecycle - if rn.endpoints[method].pattern != "" { - rctx.routePattern = rn.endpoints[method].pattern - rctx.RoutePatterns = append(rctx.RoutePatterns, rctx.routePattern) - } - - return rn, rn.endpoints, rn.endpoints[method].handler -} - -// Recursive edge traversal by checking all nodeTyp groups along the way. -// It's like searching through a multi-dimensional radix trie. -func (n *node) findRoute(rctx *Context, method methodTyp, path string) *node { - nn := n - search := path - - for t, nds := range nn.children { - ntyp := nodeTyp(t) - if len(nds) == 0 { - continue - } - - var xn *node - xsearch := search - - var label byte - if search != "" { - label = search[0] - } - - switch ntyp { - case ntStatic: - xn = nds.findEdge(label) - if xn == nil || !strings.HasPrefix(xsearch, xn.prefix) { - continue - } - xsearch = xsearch[len(xn.prefix):] - - case ntParam, ntRegexp: - // short-circuit and return no matching route for empty param values - if xsearch == "" { - continue - } - - // serially loop through each node grouped by the tail delimiter - for idx := 0; idx < len(nds); idx++ { - xn = nds[idx] - - // label for param nodes is the delimiter byte - p := strings.IndexByte(xsearch, xn.tail) - - if p < 0 { - if xn.tail == '/' { - p = len(xsearch) - } else { - continue - } - } - - if ntyp == ntRegexp && xn.rex != nil { - if xn.rex.Match([]byte(xsearch[:p])) == false { - continue - } - } else if strings.IndexByte(xsearch[:p], '/') != -1 { - // avoid a match across path segments - continue - } - - rctx.routeParams.Values = append(rctx.routeParams.Values, xsearch[:p]) - xsearch = xsearch[p:] - break - } - - default: - // catch-all nodes - rctx.routeParams.Values = append(rctx.routeParams.Values, search) - xn = nds[0] - xsearch = "" - } - - if xn == nil { - continue - } - - // did we find it yet? - if len(xsearch) == 0 { - if xn.isLeaf() { - h, _ := xn.endpoints[method] - if h != nil && h.handler != nil { - rctx.routeParams.Keys = append(rctx.routeParams.Keys, h.paramKeys...) - return xn - } - - // flag that the routing context found a route, but not a corresponding - // supported method - rctx.methodNotAllowed = true - } - } - - // recursively find the next node.. - fin := xn.findRoute(rctx, method, xsearch) - if fin != nil { - return fin - } - - // Did not find final handler, let's remove the param here if it was set - if xn.typ > ntStatic { - if len(rctx.routeParams.Values) > 0 { - rctx.routeParams.Values = rctx.routeParams.Values[:len(rctx.routeParams.Values)-1] - } - } - - } - - return nil -} - -func (n *node) findEdge(ntyp nodeTyp, label byte) *node { - nds := n.children[ntyp] - num := len(nds) - idx := 0 - - switch ntyp { - case ntStatic, ntParam, ntRegexp: - i, j := 0, num-1 - for i <= j { - idx = i + (j-i)/2 - if label > nds[idx].label { - i = idx + 1 - } else if label < nds[idx].label { - j = idx - 1 - } else { - i = num // breaks cond - } - } - if nds[idx].label != label { - return nil - } - return nds[idx] - - default: // catch all - return nds[idx] - } -} - -func (n *node) isEmpty() bool { - for _, nds := range n.children { - if len(nds) > 0 { - return false - } - } - return true -} - -func (n *node) isLeaf() bool { - return n.endpoints != nil -} - -func (n *node) findPattern(pattern string) bool { - nn := n - for _, nds := range nn.children { - if len(nds) == 0 { - continue - } - - n = nn.findEdge(nds[0].typ, pattern[0]) - if n == nil { - continue - } - - var idx int - var xpattern string - - switch n.typ { - case ntStatic: - idx = longestPrefix(pattern, n.prefix) - if idx < len(n.prefix) { - continue - } - - case ntParam, ntRegexp: - idx = strings.IndexByte(pattern, '}') + 1 - - case ntCatchAll: - idx = longestPrefix(pattern, "*") - - default: - panic("chi: unknown node type") - } - - xpattern = pattern[idx:] - if len(xpattern) == 0 { - return true - } - - return n.findPattern(xpattern) - } - return false -} - -func (n *node) routes() []Route { - rts := []Route{} - - n.walk(func(eps endpoints, subroutes Routes) bool { - if eps[mSTUB] != nil && eps[mSTUB].handler != nil && subroutes == nil { - return false - } - - // Group methodHandlers by unique patterns - pats := make(map[string]endpoints, 0) - - for mt, h := range eps { - if h.pattern == "" { - continue - } - p, ok := pats[h.pattern] - if !ok { - p = endpoints{} - pats[h.pattern] = p - } - p[mt] = h - } - - for p, mh := range pats { - hs := make(map[string]http.Handler, 0) - if mh[mALL] != nil && mh[mALL].handler != nil { - hs["*"] = mh[mALL].handler - } - - for mt, h := range mh { - if h.handler == nil { - continue - } - m := methodTypString(mt) - if m == "" { - continue - } - hs[m] = h.handler - } - - rt := Route{p, hs, subroutes} - rts = append(rts, rt) - } - - return false - }) - - return rts -} - -func (n *node) walk(fn func(eps endpoints, subroutes Routes) bool) bool { - // Visit the leaf values if any - if (n.endpoints != nil || n.subroutes != nil) && fn(n.endpoints, n.subroutes) { - return true - } - - // Recurse on the children - for _, ns := range n.children { - for _, cn := range ns { - if cn.walk(fn) { - return true - } - } - } - return false -} - -// patNextSegment returns the next segment details from a pattern: -// node type, param key, regexp string, param tail byte, param starting index, param ending index -func patNextSegment(pattern string) (nodeTyp, string, string, byte, int, int) { - ps := strings.Index(pattern, "{") - ws := strings.Index(pattern, "*") - - if ps < 0 && ws < 0 { - return ntStatic, "", "", 0, 0, len(pattern) // we return the entire thing - } - - // Sanity check - if ps >= 0 && ws >= 0 && ws < ps { - panic("chi: wildcard '*' must be the last pattern in a route, otherwise use a '{param}'") - } - - var tail byte = '/' // Default endpoint tail to / byte - - if ps >= 0 { - // Param/Regexp pattern is next - nt := ntParam - - // Read to closing } taking into account opens and closes in curl count (cc) - cc := 0 - pe := ps - for i, c := range pattern[ps:] { - if c == '{' { - cc++ - } else if c == '}' { - cc-- - if cc == 0 { - pe = ps + i - break - } - } - } - if pe == ps { - panic("chi: route param closing delimiter '}' is missing") - } - - key := pattern[ps+1 : pe] - pe++ // set end to next position - - if pe < len(pattern) { - tail = pattern[pe] - } - - var rexpat string - if idx := strings.Index(key, ":"); idx >= 0 { - nt = ntRegexp - rexpat = key[idx+1:] - key = key[:idx] - } - - if len(rexpat) > 0 { - if rexpat[0] != '^' { - rexpat = "^" + rexpat - } - if rexpat[len(rexpat)-1] != '$' { - rexpat = rexpat + "$" - } - } - - return nt, key, rexpat, tail, ps, pe - } - - // Wildcard pattern as finale - // TODO: should we panic if there is stuff after the * ??? - return ntCatchAll, "*", "", 0, ws, len(pattern) -} - -func patParamKeys(pattern string) []string { - pat := pattern - paramKeys := []string{} - for { - ptyp, paramKey, _, _, _, e := patNextSegment(pat) - if ptyp == ntStatic { - return paramKeys - } - for i := 0; i < len(paramKeys); i++ { - if paramKeys[i] == paramKey { - panic(fmt.Sprintf("chi: routing pattern '%s' contains duplicate param key, '%s'", pattern, paramKey)) - } - } - paramKeys = append(paramKeys, paramKey) - pat = pat[e:] - } -} - -// longestPrefix finds the length of the shared prefix -// of two strings -func longestPrefix(k1, k2 string) int { - max := len(k1) - if l := len(k2); l < max { - max = l - } - var i int - for i = 0; i < max; i++ { - if k1[i] != k2[i] { - break - } - } - return i -} - -func methodTypString(method methodTyp) string { - for s, t := range methodMap { - if method == t { - return s - } - } - return "" -} - -type nodes []*node - -// Sort the list of nodes by label -func (ns nodes) Sort() { sort.Sort(ns); ns.tailSort() } -func (ns nodes) Len() int { return len(ns) } -func (ns nodes) Swap(i, j int) { ns[i], ns[j] = ns[j], ns[i] } -func (ns nodes) Less(i, j int) bool { return ns[i].label < ns[j].label } - -// tailSort pushes nodes with '/' as the tail to the end of the list for param nodes. -// The list order determines the traversal order. -func (ns nodes) tailSort() { - for i := len(ns) - 1; i >= 0; i-- { - if ns[i].typ > ntStatic && ns[i].tail == '/' { - ns.Swap(i, len(ns)-1) - return - } - } -} - -func (ns nodes) findEdge(label byte) *node { - num := len(ns) - idx := 0 - i, j := 0, num-1 - for i <= j { - idx = i + (j-i)/2 - if label > ns[idx].label { - i = idx + 1 - } else if label < ns[idx].label { - j = idx - 1 - } else { - i = num // breaks cond - } - } - if ns[idx].label != label { - return nil - } - return ns[idx] -} - -// Route describes the details of a routing handler. -type Route struct { - Pattern string - Handlers map[string]http.Handler - SubRoutes Routes -} - -// WalkFunc is the type of the function called for each method and route visited by Walk. -type WalkFunc func(method string, route string, handler http.Handler, middlewares ...func(http.Handler) http.Handler) error - -// Walk walks any router tree that implements Routes interface. -func Walk(r Routes, walkFn WalkFunc) error { - return walk(r, walkFn, "") -} - -func walk(r Routes, walkFn WalkFunc, parentRoute string, parentMw ...func(http.Handler) http.Handler) error { - for _, route := range r.Routes() { - mws := make([]func(http.Handler) http.Handler, len(parentMw)) - copy(mws, parentMw) - mws = append(mws, r.Middlewares()...) - - if route.SubRoutes != nil { - if err := walk(route.SubRoutes, walkFn, parentRoute+route.Pattern, mws...); err != nil { - return err - } - continue - } - - for method, handler := range route.Handlers { - if method == "*" { - // Ignore a "catchAll" method, since we pass down all the specific methods for each route. - continue - } - - fullRoute := parentRoute + route.Pattern - - if chain, ok := handler.(*ChainHandler); ok { - if err := walkFn(method, fullRoute, chain.Endpoint, append(mws, chain.Middlewares...)...); err != nil { - return err - } - } else { - if err := walkFn(method, fullRoute, handler, mws...); err != nil { - return err - } - } - } - } - - return nil -} diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/v5/.gitignore b/aux/server-discovery/vendor/github.com/go-chi/chi/v5/.gitignore deleted file mode 100644 index ba22c99a9..000000000 --- a/aux/server-discovery/vendor/github.com/go-chi/chi/v5/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -.idea -*.sw? -.vscode diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/content_charset.go b/aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/content_charset.go deleted file mode 100644 index 07b5ce6f6..000000000 --- a/aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/content_charset.go +++ /dev/null @@ -1,51 +0,0 @@ -package middleware - -import ( - "net/http" - "strings" -) - -// ContentCharset generates a handler that writes a 415 Unsupported Media Type response if none of the charsets match. -// An empty charset will allow requests with no Content-Type header or no specified charset. -func ContentCharset(charsets ...string) func(next http.Handler) http.Handler { - for i, c := range charsets { - charsets[i] = strings.ToLower(c) - } - - return func(next http.Handler) http.Handler { - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if !contentEncoding(r.Header.Get("Content-Type"), charsets...) { - w.WriteHeader(http.StatusUnsupportedMediaType) - return - } - - next.ServeHTTP(w, r) - }) - } -} - -// Check the content encoding against a list of acceptable values. -func contentEncoding(ce string, charsets ...string) bool { - _, ce = split(strings.ToLower(ce), ";") - _, ce = split(ce, "charset=") - ce, _ = split(ce, ";") - for _, c := range charsets { - if ce == c { - return true - } - } - - return false -} - -// Split a string in two parts, cleaning any whitespace. -func split(str, sep string) (string, string) { - var a, b string - var parts = strings.SplitN(str, sep, 2) - a = strings.TrimSpace(parts[0]) - if len(parts) == 2 { - b = strings.TrimSpace(parts[1]) - } - - return a, b -} diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/nocache.go b/aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/nocache.go deleted file mode 100644 index 2412829e1..000000000 --- a/aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/nocache.go +++ /dev/null @@ -1,58 +0,0 @@ -package middleware - -// Ported from Goji's middleware, source: -// https://github.com/zenazn/goji/tree/master/web/middleware - -import ( - "net/http" - "time" -) - -// Unix epoch time -var epoch = time.Unix(0, 0).Format(time.RFC1123) - -// Taken from https://github.com/mytrile/nocache -var noCacheHeaders = map[string]string{ - "Expires": epoch, - "Cache-Control": "no-cache, no-store, no-transform, must-revalidate, private, max-age=0", - "Pragma": "no-cache", - "X-Accel-Expires": "0", -} - -var etagHeaders = []string{ - "ETag", - "If-Modified-Since", - "If-Match", - "If-None-Match", - "If-Range", - "If-Unmodified-Since", -} - -// NoCache is a simple piece of middleware that sets a number of HTTP headers to prevent -// a router (or subrouter) from being cached by an upstream proxy and/or client. -// -// As per http://wiki.nginx.org/HttpProxyModule - NoCache sets: -// Expires: Thu, 01 Jan 1970 00:00:00 UTC -// Cache-Control: no-cache, private, max-age=0 -// X-Accel-Expires: 0 -// Pragma: no-cache (for HTTP/1.0 proxies/clients) -func NoCache(h http.Handler) http.Handler { - fn := func(w http.ResponseWriter, r *http.Request) { - - // Delete any ETag headers that may have been set - for _, v := range etagHeaders { - if r.Header.Get(v) != "" { - r.Header.Del(v) - } - } - - // Set our NoCache headers - for k, v := range noCacheHeaders { - w.Header().Set(k, v) - } - - h.ServeHTTP(w, r) - } - - return http.HandlerFunc(fn) -} diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/timeout.go b/aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/timeout.go deleted file mode 100644 index 8e373536c..000000000 --- a/aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/timeout.go +++ /dev/null @@ -1,49 +0,0 @@ -package middleware - -import ( - "context" - "net/http" - "time" -) - -// Timeout is a middleware that cancels ctx after a given timeout and return -// a 504 Gateway Timeout error to the client. -// -// It's required that you select the ctx.Done() channel to check for the signal -// if the context has reached its deadline and return, otherwise the timeout -// signal will be just ignored. -// -// ie. a route/handler may look like: -// -// r.Get("/long", func(w http.ResponseWriter, r *http.Request) { -// ctx := r.Context() -// processTime := time.Duration(rand.Intn(4)+1) * time.Second -// -// select { -// case <-ctx.Done(): -// return -// -// case <-time.After(processTime): -// // The above channel simulates some hard work. -// } -// -// w.Write([]byte("done")) -// }) -// -func Timeout(timeout time.Duration) func(next http.Handler) http.Handler { - return func(next http.Handler) http.Handler { - fn := func(w http.ResponseWriter, r *http.Request) { - ctx, cancel := context.WithTimeout(r.Context(), timeout) - defer func() { - cancel() - if ctx.Err() == context.DeadlineExceeded { - w.WriteHeader(http.StatusGatewayTimeout) - } - }() - - r = r.WithContext(ctx) - next.ServeHTTP(w, r) - } - return http.HandlerFunc(fn) - } -} diff --git a/aux/server-discovery/vendor/github.com/spf13/cast/.travis.yml b/aux/server-discovery/vendor/github.com/spf13/cast/.travis.yml deleted file mode 100644 index 6420d1c27..000000000 --- a/aux/server-discovery/vendor/github.com/spf13/cast/.travis.yml +++ /dev/null @@ -1,15 +0,0 @@ -language: go -env: - - GO111MODULE=on -sudo: required -go: - - "1.11.x" - - tip -os: - - linux -matrix: - allow_failures: - - go: tip - fast_finish: true -script: - - make check diff --git a/aux/server-discovery/vendor/github.com/spf13/cobra/.travis.yml b/aux/server-discovery/vendor/github.com/spf13/cobra/.travis.yml deleted file mode 100644 index 5afcb2096..000000000 --- a/aux/server-discovery/vendor/github.com/spf13/cobra/.travis.yml +++ /dev/null @@ -1,21 +0,0 @@ -language: go - -matrix: - include: - - go: 1.9.4 - - go: 1.10.0 - - go: tip - allow_failures: - - go: tip - -before_install: - - mkdir -p bin - - curl -Lso bin/shellcheck https://github.com/caarlos0/shellcheck-docker/releases/download/v0.4.3/shellcheck - - chmod +x bin/shellcheck -script: - - PATH=$PATH:$PWD/bin go test -v ./... - - go build - - diff -u <(echo -n) <(gofmt -d -s .) - - if [ -z $NOVET ]; then - diff -u <(echo -n) <(go tool vet . 2>&1 | grep -vE 'ExampleCommand|bash_completions.*Fprint'); - fi diff --git a/aux/server-discovery/vendor/github.com/spf13/cobra/zsh_completions.go b/aux/server-discovery/vendor/github.com/spf13/cobra/zsh_completions.go deleted file mode 100644 index 889c22e27..000000000 --- a/aux/server-discovery/vendor/github.com/spf13/cobra/zsh_completions.go +++ /dev/null @@ -1,126 +0,0 @@ -package cobra - -import ( - "bytes" - "fmt" - "io" - "os" - "strings" -) - -// GenZshCompletionFile generates zsh completion file. -func (c *Command) GenZshCompletionFile(filename string) error { - outFile, err := os.Create(filename) - if err != nil { - return err - } - defer outFile.Close() - - return c.GenZshCompletion(outFile) -} - -// GenZshCompletion generates a zsh completion file and writes to the passed writer. -func (c *Command) GenZshCompletion(w io.Writer) error { - buf := new(bytes.Buffer) - - writeHeader(buf, c) - maxDepth := maxDepth(c) - writeLevelMapping(buf, maxDepth) - writeLevelCases(buf, maxDepth, c) - - _, err := buf.WriteTo(w) - return err -} - -func writeHeader(w io.Writer, cmd *Command) { - fmt.Fprintf(w, "#compdef %s\n\n", cmd.Name()) -} - -func maxDepth(c *Command) int { - if len(c.Commands()) == 0 { - return 0 - } - maxDepthSub := 0 - for _, s := range c.Commands() { - subDepth := maxDepth(s) - if subDepth > maxDepthSub { - maxDepthSub = subDepth - } - } - return 1 + maxDepthSub -} - -func writeLevelMapping(w io.Writer, numLevels int) { - fmt.Fprintln(w, `_arguments \`) - for i := 1; i <= numLevels; i++ { - fmt.Fprintf(w, ` '%d: :->level%d' \`, i, i) - fmt.Fprintln(w) - } - fmt.Fprintf(w, ` '%d: :%s'`, numLevels+1, "_files") - fmt.Fprintln(w) -} - -func writeLevelCases(w io.Writer, maxDepth int, root *Command) { - fmt.Fprintln(w, "case $state in") - defer fmt.Fprintln(w, "esac") - - for i := 1; i <= maxDepth; i++ { - fmt.Fprintf(w, " level%d)\n", i) - writeLevel(w, root, i) - fmt.Fprintln(w, " ;;") - } - fmt.Fprintln(w, " *)") - fmt.Fprintln(w, " _arguments '*: :_files'") - fmt.Fprintln(w, " ;;") -} - -func writeLevel(w io.Writer, root *Command, i int) { - fmt.Fprintf(w, " case $words[%d] in\n", i) - defer fmt.Fprintln(w, " esac") - - commands := filterByLevel(root, i) - byParent := groupByParent(commands) - - for p, c := range byParent { - names := names(c) - fmt.Fprintf(w, " %s)\n", p) - fmt.Fprintf(w, " _arguments '%d: :(%s)'\n", i, strings.Join(names, " ")) - fmt.Fprintln(w, " ;;") - } - fmt.Fprintln(w, " *)") - fmt.Fprintln(w, " _arguments '*: :_files'") - fmt.Fprintln(w, " ;;") - -} - -func filterByLevel(c *Command, l int) []*Command { - cs := make([]*Command, 0) - if l == 0 { - cs = append(cs, c) - return cs - } - for _, s := range c.Commands() { - cs = append(cs, filterByLevel(s, l-1)...) - } - return cs -} - -func groupByParent(commands []*Command) map[string][]*Command { - m := make(map[string][]*Command) - for _, c := range commands { - parent := c.Parent() - if parent == nil { - continue - } - m[parent.Name()] = append(m[parent.Name()], c) - } - return m -} - -func names(commands []*Command) []string { - ns := make([]string, len(commands)) - for i, c := range commands { - ns[i] = c.Name() - } - return ns -} diff --git a/aux/server-discovery/vendor/go.uber.org/atomic/.travis.yml b/aux/server-discovery/vendor/go.uber.org/atomic/.travis.yml deleted file mode 100644 index 13d0a4f25..000000000 --- a/aux/server-discovery/vendor/go.uber.org/atomic/.travis.yml +++ /dev/null @@ -1,27 +0,0 @@ -sudo: false -language: go -go_import_path: go.uber.org/atomic - -env: - global: - - GO111MODULE=on - -matrix: - include: - - go: oldstable - - go: stable - env: LINT=1 - -cache: - directories: - - vendor - -before_install: - - go version - -script: - - test -z "$LINT" || make lint - - make cover - -after_success: - - bash <(curl -s https://codecov.io/bash) diff --git a/aux/server-discovery/vendor/go.uber.org/multierr/.travis.yml b/aux/server-discovery/vendor/go.uber.org/multierr/.travis.yml deleted file mode 100644 index 8636ab42a..000000000 --- a/aux/server-discovery/vendor/go.uber.org/multierr/.travis.yml +++ /dev/null @@ -1,23 +0,0 @@ -sudo: false -language: go -go_import_path: go.uber.org/multierr - -env: - global: - - GO111MODULE=on - -go: - - oldstable - - stable - -before_install: -- go version - -script: -- | - set -e - make lint - make cover - -after_success: -- bash <(curl -s https://codecov.io/bash) diff --git a/aux/server-discovery/vendor/go.uber.org/zap/stacktrace.go b/aux/server-discovery/vendor/go.uber.org/zap/stacktrace.go deleted file mode 100644 index 0cf8c1ddf..000000000 --- a/aux/server-discovery/vendor/go.uber.org/zap/stacktrace.go +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright (c) 2016 Uber Technologies, Inc. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -package zap - -import ( - "runtime" - "sync" - - "go.uber.org/zap/internal/bufferpool" -) - -var ( - _stacktracePool = sync.Pool{ - New: func() interface{} { - return newProgramCounters(64) - }, - } -) - -func takeStacktrace(skip int) string { - buffer := bufferpool.Get() - defer buffer.Free() - programCounters := _stacktracePool.Get().(*programCounters) - defer _stacktracePool.Put(programCounters) - - var numFrames int - for { - // Skip the call to runtime.Callers and takeStacktrace so that the - // program counters start at the caller of takeStacktrace. - numFrames = runtime.Callers(skip+2, programCounters.pcs) - if numFrames < len(programCounters.pcs) { - break - } - // Don't put the too-short counter slice back into the pool; this lets - // the pool adjust if we consistently take deep stacktraces. - programCounters = newProgramCounters(len(programCounters.pcs) * 2) - } - - i := 0 - frames := runtime.CallersFrames(programCounters.pcs[:numFrames]) - - // Note: On the last iteration, frames.Next() returns false, with a valid - // frame, but we ignore this frame. The last frame is a a runtime frame which - // adds noise, since it's only either runtime.main or runtime.goexit. - for frame, more := frames.Next(); more; frame, more = frames.Next() { - if i != 0 { - buffer.AppendByte('\n') - } - i++ - buffer.AppendString(frame.Function) - buffer.AppendByte('\n') - buffer.AppendByte('\t') - buffer.AppendString(frame.File) - buffer.AppendByte(':') - buffer.AppendInt(int64(frame.Line)) - } - - return buffer.String() -} - -type programCounters struct { - pcs []uintptr -} - -func newProgramCounters(size int) *programCounters { - return &programCounters{make([]uintptr, size)} -} diff --git a/aux/server-discovery/vendor/golang.org/x/net/AUTHORS b/aux/server-discovery/vendor/golang.org/x/net/AUTHORS deleted file mode 100644 index 15167cd74..000000000 --- a/aux/server-discovery/vendor/golang.org/x/net/AUTHORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code refers to The Go Authors for copyright purposes. -# The master list of authors is in the main Go distribution, -# visible at http://tip.golang.org/AUTHORS. diff --git a/aux/server-discovery/vendor/golang.org/x/net/CONTRIBUTORS b/aux/server-discovery/vendor/golang.org/x/net/CONTRIBUTORS deleted file mode 100644 index 1c4577e96..000000000 --- a/aux/server-discovery/vendor/golang.org/x/net/CONTRIBUTORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code was written by the Go contributors. -# The master list of contributors is in the main Go distribution, -# visible at http://tip.golang.org/CONTRIBUTORS. diff --git a/aux/server-discovery/vendor/golang.org/x/text/AUTHORS b/aux/server-discovery/vendor/golang.org/x/text/AUTHORS deleted file mode 100644 index 15167cd74..000000000 --- a/aux/server-discovery/vendor/golang.org/x/text/AUTHORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code refers to The Go Authors for copyright purposes. -# The master list of authors is in the main Go distribution, -# visible at http://tip.golang.org/AUTHORS. diff --git a/aux/server-discovery/vendor/golang.org/x/text/CONTRIBUTORS b/aux/server-discovery/vendor/golang.org/x/text/CONTRIBUTORS deleted file mode 100644 index 1c4577e96..000000000 --- a/aux/server-discovery/vendor/golang.org/x/text/CONTRIBUTORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code was written by the Go contributors. -# The master list of contributors is in the main Go distribution, -# visible at http://tip.golang.org/CONTRIBUTORS. diff --git a/aux/server-discovery/vendor/golang.org/x/text/language/go1_1.go b/aux/server-discovery/vendor/golang.org/x/text/language/go1_1.go deleted file mode 100644 index c7435583b..000000000 --- a/aux/server-discovery/vendor/golang.org/x/text/language/go1_1.go +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build !go1.2 -// +build !go1.2 - -package language - -import "sort" - -func sortStable(s sort.Interface) { - ss := stableSort{ - s: s, - pos: make([]int, s.Len()), - } - for i := range ss.pos { - ss.pos[i] = i - } - sort.Sort(&ss) -} - -type stableSort struct { - s sort.Interface - pos []int -} - -func (s *stableSort) Len() int { - return len(s.pos) -} - -func (s *stableSort) Less(i, j int) bool { - return s.s.Less(i, j) || !s.s.Less(j, i) && s.pos[i] < s.pos[j] -} - -func (s *stableSort) Swap(i, j int) { - s.s.Swap(i, j) - s.pos[i], s.pos[j] = s.pos[j], s.pos[i] -} diff --git a/aux/server-discovery/vendor/golang.org/x/text/language/go1_2.go b/aux/server-discovery/vendor/golang.org/x/text/language/go1_2.go deleted file mode 100644 index 77aaaa299..000000000 --- a/aux/server-discovery/vendor/golang.org/x/text/language/go1_2.go +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build go1.2 -// +build go1.2 - -package language - -import "sort" - -var sortStable = sort.Stable diff --git a/aux/server-discovery/.editorconfig b/extra/server-discovery/.editorconfig similarity index 100% rename from aux/server-discovery/.editorconfig rename to extra/server-discovery/.editorconfig diff --git a/aux/server-discovery/.gitignore b/extra/server-discovery/.gitignore similarity index 100% rename from aux/server-discovery/.gitignore rename to extra/server-discovery/.gitignore diff --git a/aux/server-discovery/Dockerfile b/extra/server-discovery/Dockerfile similarity index 100% rename from aux/server-discovery/Dockerfile rename to extra/server-discovery/Dockerfile diff --git a/aux/server-discovery/Dockerfile.snapshot b/extra/server-discovery/Dockerfile.snapshot similarity index 100% rename from aux/server-discovery/Dockerfile.snapshot rename to extra/server-discovery/Dockerfile.snapshot diff --git a/aux/server-discovery/Makefile b/extra/server-discovery/Makefile similarity index 97% rename from aux/server-discovery/Makefile rename to extra/server-discovery/Makefile index 9ff4005ba..f50b467e9 100644 --- a/aux/server-discovery/Makefile +++ b/extra/server-discovery/Makefile @@ -17,7 +17,7 @@ RELEASE_NAME = $(BUILD_NAME).tar.gz RELEASE_EXTRA_FILES ?= README.md LICENSE CONTRIBUTING.md DCO .env.example RELEASE_PKEY ?= .upload-rsa -LDFLAGS_VERSION = -X github.com/cortezaproject/corteza-server/pkg/version.Version=$(BUILD_VERSION) +LDFLAGS_VERSION = -X github.com/cortezaproject/corteza/server/pkg/version.Version=$(BUILD_VERSION) LDFLAGS_EXTRA ?= LDFLAGS = -ldflags "$(LDFLAGS_VERSION) $(LDFLAGS_EXTRA)" diff --git a/aux/server-discovery/Makefile.inc b/extra/server-discovery/Makefile.inc similarity index 100% rename from aux/server-discovery/Makefile.inc rename to extra/server-discovery/Makefile.inc diff --git a/aux/server-discovery/app/app.go b/extra/server-discovery/app/app.go similarity index 94% rename from aux/server-discovery/app/app.go rename to extra/server-discovery/app/app.go index 540cf4b94..7a69a3b8b 100644 --- a/aux/server-discovery/app/app.go +++ b/extra/server-discovery/app/app.go @@ -2,7 +2,7 @@ package app import ( "context" - "github.com/cortezaproject/corteza-server-discovery/pkg/options" + "github.com/cortezaproject/corteza/extra/server-discovery/pkg/options" "github.com/cortezaproject/corteza/server/pkg/logger" "github.com/davecgh/go-spew/spew" "github.com/elastic/go-elasticsearch/v7/esutil" diff --git a/aux/server-discovery/app/boot_levels.go b/extra/server-discovery/app/boot_levels.go similarity index 89% rename from aux/server-discovery/app/boot_levels.go rename to extra/server-discovery/app/boot_levels.go index b85c1086e..c9b57229f 100644 --- a/aux/server-discovery/app/boot_levels.go +++ b/extra/server-discovery/app/boot_levels.go @@ -3,10 +3,10 @@ package app import ( "context" "fmt" - "github.com/cortezaproject/corteza-server-discovery/indexer" - "github.com/cortezaproject/corteza-server-discovery/pkg/auth" - "github.com/cortezaproject/corteza-server-discovery/pkg/healthcheck" - "github.com/cortezaproject/corteza-server-discovery/searcher" + "github.com/cortezaproject/corteza/extra/server-discovery/indexer" + "github.com/cortezaproject/corteza/extra/server-discovery/pkg/auth" + "github.com/cortezaproject/corteza/extra/server-discovery/pkg/healthcheck" + "github.com/cortezaproject/corteza/extra/server-discovery/searcher" ) const ( diff --git a/aux/server-discovery/app/servers.go b/extra/server-discovery/app/servers.go similarity index 88% rename from aux/server-discovery/app/servers.go rename to extra/server-discovery/app/servers.go index ae2ce4517..22c930ee0 100644 --- a/aux/server-discovery/app/servers.go +++ b/extra/server-discovery/app/servers.go @@ -1,7 +1,7 @@ package app import ( - searcherRest "github.com/cortezaproject/corteza-server-discovery/searcher/rest" + searcherRest "github.com/cortezaproject/corteza/extra/server-discovery/searcher/rest" "github.com/cortezaproject/corteza/server/pkg/options" "github.com/go-chi/chi/v5" "go.uber.org/zap" diff --git a/aux/server-discovery/docker-compose.yaml b/extra/server-discovery/docker-compose.yaml similarity index 100% rename from aux/server-discovery/docker-compose.yaml rename to extra/server-discovery/docker-compose.yaml diff --git a/extra/server-discovery/go.mod b/extra/server-discovery/go.mod new file mode 100644 index 000000000..47891f84e --- /dev/null +++ b/extra/server-discovery/go.mod @@ -0,0 +1,55 @@ +module github.com/cortezaproject/corteza/extra/server-discovery + +go 1.18 + +require ( + github.com/cortezaproject/corteza/server v0.0.0-00010101000000-000000000000 + github.com/davecgh/go-spew v1.1.1 + github.com/elastic/go-elasticsearch/v7 v7.12.0 + github.com/go-chi/chi/v5 v5.0.7 + github.com/go-chi/cors v1.2.1 + github.com/go-chi/jwtauth v1.2.0 + github.com/go-oauth2/oauth2/v4 v4.4.3 + github.com/jmoiron/sqlx v1.3.5 + github.com/lestrrat-go/jwx v1.2.23 + github.com/microcosm-cc/bluemonday v1.0.18 + github.com/spf13/cast v1.4.1 + github.com/stretchr/testify v1.7.1 + go.uber.org/atomic v1.9.0 + go.uber.org/zap v1.21.0 +) + +require ( + github.com/PaesslerAG/gval v1.2.1 // indirect + github.com/SentimensRG/ctx v0.0.0-20180729130232-0bfd988c655d // indirect + github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d // indirect + github.com/aymerick/douceur v0.2.0 // indirect + github.com/cortezaproject/corteza-locale v0.0.0-20221108130701-3981db126651 // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.0-20210816181553-5444fa50b93d // indirect + github.com/goccy/go-json v0.9.6 // indirect + github.com/golang-jwt/jwt v3.2.2+incompatible // indirect + github.com/google/uuid v1.1.2 // indirect + github.com/gorilla/css v1.0.0 // indirect + github.com/inconshreveable/mousetrap v1.0.0 // indirect + github.com/joho/godotenv v1.4.0 // indirect + github.com/lestrrat-go/backoff/v2 v2.0.8 // indirect + github.com/lestrrat-go/blackmagic v1.0.0 // indirect + github.com/lestrrat-go/httpcc v1.0.1 // indirect + github.com/lestrrat-go/iter v1.0.1 // indirect + github.com/lestrrat-go/option v1.0.0 // indirect + github.com/lestrrat-go/strftime v1.0.6 // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/shopspring/decimal v1.3.1 // indirect + github.com/spf13/cobra v1.4.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + go.uber.org/multierr v1.7.0 // indirect + golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 // indirect + golang.org/x/net v0.2.0 // indirect + golang.org/x/text v0.4.0 // indirect + gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect + moul.io/zapfilter v1.7.0 // indirect +) + +replace github.com/cortezaproject/corteza/server => ../../server diff --git a/extra/server-discovery/go.sum b/extra/server-discovery/go.sum new file mode 100644 index 000000000..e899060d8 --- /dev/null +++ b/extra/server-discovery/go.sum @@ -0,0 +1,293 @@ +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/PaesslerAG/gval v1.2.1 h1:Ggwtej1xCyt1994VuDCSjycybIDo3duDCDghK/xc/A0= +github.com/PaesslerAG/gval v1.2.1/go.mod h1:XRFLwvmkTEdYziLdaCeCa5ImcGVrfQbeNUbVR+C6xac= +github.com/PaesslerAG/jsonpath v0.1.0/go.mod h1:4BzmtoM/PI8fPO4aQGIusjGxGir2BzcV0grWtFzq1Y8= +github.com/PaesslerAG/jsonpath v0.1.1 h1:c1/AToHQMVsduPAa4Vh6xp2U0evy4t8SWp8imEsylIk= +github.com/SentimensRG/ctx v0.0.0-20180729130232-0bfd988c655d h1:CbB/Ef3TyBvSSJx2HDSUiw49ONTpaX6BGiI0jJEX6b8= +github.com/SentimensRG/ctx v0.0.0-20180729130232-0bfd988c655d/go.mod h1:cfn0Ycx1ASzCkl8+04zI4hrclf9YQ1QfncxzFiNtQLo= +github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= +github.com/andybalholm/brotli v1.0.0/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y= +github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d h1:Byv0BzEl3/e6D5CLfI0j/7hiIEtvGVFPCZ7Ei2oq8iQ= +github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= +github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk= +github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4= +github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= +github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/cortezaproject/corteza-locale v0.0.0-20221108130701-3981db126651 h1:gLeXW6H7chSMkod/FyK0fCssykvdNhrvc0+0SghrBNo= +github.com/cortezaproject/corteza-locale v0.0.0-20221108130701-3981db126651/go.mod h1:wsI1UftEdBqTuEDKBZmx2LfNu/kZun5pRbCAi420JCg= +github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.0-20210816181553-5444fa50b93d h1:1iy2qD6JEhHKKhUOA9IWs7mjco7lnw2qx8FsRI2wirE= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.0-20210816181553-5444fa50b93d/go.mod h1:tmAIfUFEirG/Y8jhZ9M+h36obRZAk/1fcSpXwAVlfqE= +github.com/elastic/go-elasticsearch/v7 v7.12.0 h1:j4tvcMrZJLp39L2NYvBb7f+lHKPqPHSL3nvB8+/DV+s= +github.com/elastic/go-elasticsearch/v7 v7.12.0/go.mod h1:OJ4wdbtDNk5g503kvlHLyErCgQwwzmDtaFC4XyOxXA4= +github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= +github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc= +github.com/go-chi/chi v1.5.1/go.mod h1:REp24E+25iKvxgeTfHmdUoL5x15kBiDBlnIl5bCwe2k= +github.com/go-chi/chi v3.3.4+incompatible h1:X+OApYAmoQS6jr1WoUgW+t5Ry5RYGXq2A//WAL5xdAU= +github.com/go-chi/chi/v5 v5.0.7 h1:rDTPXLDHGATaeHvVlLcR4Qe0zftYethFucbjVQ1PxU8= +github.com/go-chi/chi/v5 v5.0.7/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8= +github.com/go-chi/cors v1.2.1 h1:xEC8UT3Rlp2QuWNEr4Fs/c2EAGVKBwy/1vHx3bppil4= +github.com/go-chi/cors v1.2.1/go.mod h1:sSbTewc+6wYHBBCW7ytsFSn836hqM7JxpglAy2Vzc58= +github.com/go-chi/jwtauth v1.2.0 h1:Z116SPpevIABBYsv8ih/AHYBHmd4EufKSKsLUnWdrTM= +github.com/go-chi/jwtauth v1.2.0/go.mod h1:NTUpKoTQV6o25UwYE6w/VaLUu83hzrVKYTVo+lE6qDA= +github.com/go-oauth2/oauth2/v4 v4.4.3 h1:IiU3iAK5NEeZ4mUf5HV9tN7iNlx4AGUkIJ5M1C4ARxY= +github.com/go-oauth2/oauth2/v4 v4.4.3/go.mod h1:NR9Hugz5/Qe2OGxoPBhsTRNjnm/amC+z9+XTwt63rhs= +github.com/go-session/session v3.1.2+incompatible/go.mod h1:8B3iivBQjrz/JtC68Np2T1yBBLxTan3mn/3OM0CyRt0= +github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/goccy/go-json v0.3.5/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/goccy/go-json v0.9.6 h1:5/4CtRQdtsX0sal8fdVhTaiMN01Ri8BExZZ8iRmHQ6E= +github.com/goccy/go-json v0.9.6/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/golang-jwt/jwt v3.2.1+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= +github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY= +github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= +github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/css v1.0.0 h1:BQqNyPTi50JCFMTw/b67hByjMVXZRwGha6wxVGkeihY= +github.com/gorilla/css v1.0.0/go.mod h1:Dn721qIggHpt4+EFCcTLTU/vk5ySda2ReITrtgBl60c= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA= +github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/jmoiron/sqlx v1.3.5 h1:vFFPA71p1o5gAeqtEAwLU4dnX2napprKtHr7PYIcN3g= +github.com/jmoiron/sqlx v1.3.5/go.mod h1:nRVWtLre0KfCLJvgxzCsLVMogSvQ1zNJtpYr2Ccp0mQ= +github.com/joho/godotenv v1.4.0 h1:3l4+N6zfMWnkbPEXKng2o2/MR5mSwTrBih4ZEkkz1lg= +github.com/joho/godotenv v1.4.0/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= +github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= +github.com/klauspost/compress v1.10.4/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.10.10/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/lestrrat-go/backoff/v2 v2.0.7/go.mod h1:rHP/q/r9aT27n24JQLa7JhSQZCKBBOiM/uP402WwN8Y= +github.com/lestrrat-go/backoff/v2 v2.0.8 h1:oNb5E5isby2kiro9AgdHLv5N5tint1AnDVVf2E2un5A= +github.com/lestrrat-go/backoff/v2 v2.0.8/go.mod h1:rHP/q/r9aT27n24JQLa7JhSQZCKBBOiM/uP402WwN8Y= +github.com/lestrrat-go/blackmagic v1.0.0 h1:XzdxDbuQTz0RZZEmdU7cnQxUtFUzgCSPq8RCz4BxIi4= +github.com/lestrrat-go/blackmagic v1.0.0/go.mod h1:TNgH//0vYSs8VXDCfkZLgIrVTTXQELZffUV0tz3MtdQ= +github.com/lestrrat-go/codegen v1.0.0/go.mod h1:JhJw6OQAuPEfVKUCLItpaVLumDGWQznd1VaXrBk9TdM= +github.com/lestrrat-go/envload v0.0.0-20180220234015-a3eb8ddeffcc h1:RKf14vYWi2ttpEmkA4aQ3j4u9dStX2t4M8UM6qqNsG8= +github.com/lestrrat-go/envload v0.0.0-20180220234015-a3eb8ddeffcc/go.mod h1:kopuH9ugFRkIXf3YoqHKyrJ9YfUFsckUU9S7B+XP+is= +github.com/lestrrat-go/httpcc v1.0.0/go.mod h1:tGS/u00Vh5N6FHNkExqGGNId8e0Big+++0Gf8MBnAvE= +github.com/lestrrat-go/httpcc v1.0.1 h1:ydWCStUeJLkpYyjLDHihupbn2tYmZ7m22BGkcvZZrIE= +github.com/lestrrat-go/httpcc v1.0.1/go.mod h1:qiltp3Mt56+55GPVCbTdM9MlqhvzyuL6W/NMDA8vA5E= +github.com/lestrrat-go/iter v1.0.0/go.mod h1:zIdgO1mRKhn8l9vrZJZz9TUMMFbQbLeTsbqPDrJ/OJc= +github.com/lestrrat-go/iter v1.0.1 h1:q8faalr2dY6o8bV45uwrxq12bRa1ezKrB6oM9FUgN4A= +github.com/lestrrat-go/iter v1.0.1/go.mod h1:zIdgO1mRKhn8l9vrZJZz9TUMMFbQbLeTsbqPDrJ/OJc= +github.com/lestrrat-go/jwx v1.1.0/go.mod h1:vn9FzD6gJtKkgYs7RTKV7CjWtEka8F/voUollhnn4QE= +github.com/lestrrat-go/jwx v1.2.23 h1:8oP5fY1yzCRraUNNyfAVdOkLCqY7xMZz11lVcvHqC1Y= +github.com/lestrrat-go/jwx v1.2.23/go.mod h1:sAXjRwzSvCN6soO4RLoWWm1bVPpb8iOuv0IYfH8OWd8= +github.com/lestrrat-go/option v0.0.0-20210103042652-6f1ecfceda35/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I= +github.com/lestrrat-go/option v1.0.0 h1:WqAWL8kh8VcSoD6xjSH34/1m8yxluXQbDeKNfvFeEO4= +github.com/lestrrat-go/option v1.0.0/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I= +github.com/lestrrat-go/pdebug/v3 v3.0.1/go.mod h1:za+m+Ve24yCxTEhR59N7UlnJomWwCiIqbJRmKeiADU4= +github.com/lestrrat-go/strftime v1.0.6 h1:CFGsDEt1pOpFNU+TJB0nhz9jl+K0hZSLE205AhTIGQQ= +github.com/lestrrat-go/strftime v1.0.6/go.mod h1:f7jQKgV5nnJpYgdEasS+/y7EsTb8ykN2z68n3TtcTaw= +github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= +github.com/microcosm-cc/bluemonday v1.0.18 h1:6HcxvXDAi3ARt3slx6nTesbvorIc3QeTzBNRvWktHBo= +github.com/microcosm-cc/bluemonday v1.0.18/go.mod h1:Z0r70sCuXHig8YpBzCc5eGHAap2K7e/u082ZUpDRRqM= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.13.0/go.mod h1:+REjRxOmWfHCjfv9TTWB1jD1Frx4XydAD3zm1lskyM0= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/pkg/diff v0.0.0-20200914180035-5b29258ca4f7/go.mod h1:zO8QMzTeZd5cpnIkz/Gn6iK0jDfGicM1nynOkkPIl28= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw= +github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= +github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5gKV8= +github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/spf13/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA= +github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cobra v1.4.0 h1:y+wJpx64xcgO1V+RcnwW0LEHxTKRi2ZDPSBjWnrg88Q= +github.com/spf13/cobra v1.4.0/go.mod h1:Wo4iy3BUC+X2Fybo0PDqwJIv3dNRiZLHQymsfxlB84g= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/tailscale/depaware v0.0.0-20210622194025-720c4b409502/go.mod h1:p9lPsd+cx33L3H9nNoecRRxPssFKUwwI50I3pZ0yT+8= +github.com/tidwall/btree v0.0.0-20191029221954-400434d76274/go.mod h1:huei1BkDWJ3/sLXmO+bsCNELL+Bp2Kks9OLyQFkzvA8= +github.com/tidwall/buntdb v1.1.2/go.mod h1:xAzi36Hir4FarpSHyfuZ6JzPJdjRZ8QlLZSntE2mqlI= +github.com/tidwall/gjson v1.3.4/go.mod h1:P256ACg0Mn+j1RXIDXoss50DeIABTYK1PULOJHhxOls= +github.com/tidwall/gjson v1.12.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/grect v0.0.0-20161006141115-ba9a043346eb/go.mod h1:lKYYLFIr9OIgdgrtgkZ9zgRxRdvPYsExnYBsEAd8W5M= +github.com/tidwall/match v1.0.1/go.mod h1:LujAq0jyVjBy028G1WhWfIzbpQfMO8bBZ6Tyb0+pL9E= +github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= +github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/rtree v0.0.0-20180113144539-6cd427091e0e/go.mod h1:/h+UnNGt0IhNNJLkGikcdcJqm66zGD/uJGMRxK/9+Ao= +github.com/tidwall/tinyqueue v0.0.0-20180302190814-1e39f5511563/go.mod h1:mLqSmt7Dv/CNneF2wfcChfN1rvapyQr01LGKnKex0DQ= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasthttp v1.14.0/go.mod h1:ol1PCaL0dX20wC0htZ7sYCsvCYmrouYra0zHzaclZhE= +github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= +github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= +github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= +github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI= +github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg= +github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM= +github.com/yudai/pp v2.0.1+incompatible/go.mod h1:PuxR/8QJ7cyCkFp/aUDS+JY727OFEZkTdatxwunjIkc= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/atomic v1.8.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= +go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI= +go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/multierr v1.7.0 h1:zaiO/rmgFjbmCXdSYJWQcdvOCsthmdaHfr3Gm2Kx4Ec= +go.uber.org/multierr v1.7.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= +go.uber.org/zap v1.20.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= +go.uber.org/zap v1.21.0 h1:WefMeulhovoZ2sYXz7st6K0sLj7bBhpiFaud4r4zST8= +go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201217014255-9d1352758620/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 h1:kUhD7nTDoI3fVd9G4ORWrbV5NY0liEs/Jg2pv5f+bBA= +golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.2.0 h1:sZfSu1wtKLGlWI4ZZayP0ck9Y73K1ynO6gqzTdBVdPU= +golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.4.0 h1:BrVqGRd7+k1DiOgtnFvAkoQEWQvBc25ouMJM6429SFg= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200918232735-d647fc253266/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= +golang.org/x/tools v0.0.0-20201211185031-d93e913c1a58/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210114065538-d78b04bdf963/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +moul.io/zapfilter v1.7.0 h1:7aFrG4N72bDH9a2BtYUuUaDS981Dxu3qybWfeqaeBDU= +moul.io/zapfilter v1.7.0/go.mod h1:M+N2s+qZiA+bzRoyKMVRxyuERijS2ovi2pnMyiOGMvc= diff --git a/aux/server-discovery/indexer/internal.go b/extra/server-discovery/indexer/internal.go similarity index 100% rename from aux/server-discovery/indexer/internal.go rename to extra/server-discovery/indexer/internal.go diff --git a/aux/server-discovery/indexer/service.go b/extra/server-discovery/indexer/service.go similarity index 87% rename from aux/server-discovery/indexer/service.go rename to extra/server-discovery/indexer/service.go index c5c715691..6e655556d 100644 --- a/aux/server-discovery/indexer/service.go +++ b/extra/server-discovery/indexer/service.go @@ -3,11 +3,11 @@ package indexer import ( "context" "fmt" - "github.com/cortezaproject/corteza-server-discovery/pkg/api" - "github.com/cortezaproject/corteza-server-discovery/pkg/es" - "github.com/cortezaproject/corteza-server-discovery/pkg/es/mapping" - "github.com/cortezaproject/corteza-server-discovery/pkg/es/reindex" - "github.com/cortezaproject/corteza-server-discovery/pkg/options" + "github.com/cortezaproject/corteza/extra/server-discovery/pkg/api" + "github.com/cortezaproject/corteza/extra/server-discovery/pkg/es" + "github.com/cortezaproject/corteza/extra/server-discovery/pkg/es/mapping" + "github.com/cortezaproject/corteza/extra/server-discovery/pkg/es/reindex" + "github.com/cortezaproject/corteza/extra/server-discovery/pkg/options" "github.com/elastic/go-elasticsearch/v7" "github.com/elastic/go-elasticsearch/v7/esutil" "go.uber.org/zap" diff --git a/aux/server-discovery/main.go b/extra/server-discovery/main.go similarity index 83% rename from aux/server-discovery/main.go rename to extra/server-discovery/main.go index 17a5c2dda..25e0e90b7 100644 --- a/aux/server-discovery/main.go +++ b/extra/server-discovery/main.go @@ -1,8 +1,8 @@ package main import ( - "github.com/cortezaproject/corteza-server-discovery/app" - "github.com/cortezaproject/corteza-server-discovery/pkg/api/server" + "github.com/cortezaproject/corteza/extra/server-discovery/app" + "github.com/cortezaproject/corteza/extra/server-discovery/pkg/api/server" "github.com/cortezaproject/corteza/server/pkg/cli" "github.com/davecgh/go-spew/spew" "github.com/elastic/go-elasticsearch/v7/esutil" diff --git a/aux/server-discovery/pkg/api/client.go b/extra/server-discovery/pkg/api/client.go similarity index 98% rename from aux/server-discovery/pkg/api/client.go rename to extra/server-discovery/pkg/api/client.go index ef14b6780..2cfb0fcc0 100644 --- a/aux/server-discovery/pkg/api/client.go +++ b/extra/server-discovery/pkg/api/client.go @@ -3,7 +3,7 @@ package api import ( "encoding/json" "fmt" - "github.com/cortezaproject/corteza-server-discovery/pkg/options" + "github.com/cortezaproject/corteza/extra/server-discovery/pkg/options" "net/http" "net/url" "strings" diff --git a/aux/server-discovery/pkg/api/server/cors.go b/extra/server-discovery/pkg/api/server/cors.go similarity index 100% rename from aux/server-discovery/pkg/api/server/cors.go rename to extra/server-discovery/pkg/api/server/cors.go diff --git a/aux/server-discovery/pkg/api/server/demux.go b/extra/server-discovery/pkg/api/server/demux.go similarity index 100% rename from aux/server-discovery/pkg/api/server/demux.go rename to extra/server-discovery/pkg/api/server/demux.go diff --git a/aux/server-discovery/pkg/api/server/handlers.go b/extra/server-discovery/pkg/api/server/handlers.go similarity index 92% rename from aux/server-discovery/pkg/api/server/handlers.go rename to extra/server-discovery/pkg/api/server/handlers.go index 8239aac03..b95ffefb4 100644 --- a/aux/server-discovery/pkg/api/server/handlers.go +++ b/extra/server-discovery/pkg/api/server/handlers.go @@ -1,9 +1,9 @@ package server import ( - "github.com/cortezaproject/corteza-server-discovery/pkg/auth" - "github.com/cortezaproject/corteza-server-discovery/pkg/healthcheck" - "github.com/cortezaproject/corteza-server-discovery/pkg/options" + "github.com/cortezaproject/corteza/extra/server-discovery/pkg/auth" + "github.com/cortezaproject/corteza/extra/server-discovery/pkg/healthcheck" + "github.com/cortezaproject/corteza/extra/server-discovery/pkg/options" "github.com/cortezaproject/corteza/server/pkg/api" "github.com/cortezaproject/corteza/server/pkg/version" "github.com/go-chi/chi/v5" diff --git a/aux/server-discovery/pkg/api/server/logger.go b/extra/server-discovery/pkg/api/server/logger.go similarity index 100% rename from aux/server-discovery/pkg/api/server/logger.go rename to extra/server-discovery/pkg/api/server/logger.go diff --git a/aux/server-discovery/pkg/api/server/middleware.go b/extra/server-discovery/pkg/api/server/middleware.go similarity index 100% rename from aux/server-discovery/pkg/api/server/middleware.go rename to extra/server-discovery/pkg/api/server/middleware.go diff --git a/aux/server-discovery/pkg/api/server/server.go b/extra/server-discovery/pkg/api/server/server.go similarity index 97% rename from aux/server-discovery/pkg/api/server/server.go rename to extra/server-discovery/pkg/api/server/server.go index 95fe50d39..e9e1fe24b 100644 --- a/aux/server-discovery/pkg/api/server/server.go +++ b/extra/server-discovery/pkg/api/server/server.go @@ -5,7 +5,7 @@ import ( "net" "net/http" - "github.com/cortezaproject/corteza-server-discovery/pkg/options" + "github.com/cortezaproject/corteza/extra/server-discovery/pkg/options" "github.com/go-chi/chi/v5" "go.uber.org/zap" ) diff --git a/aux/server-discovery/pkg/api/server/waitfor.go b/extra/server-discovery/pkg/api/server/waitfor.go similarity index 100% rename from aux/server-discovery/pkg/api/server/waitfor.go rename to extra/server-discovery/pkg/api/server/waitfor.go diff --git a/aux/server-discovery/pkg/auth/identity.go b/extra/server-discovery/pkg/auth/identity.go similarity index 100% rename from aux/server-discovery/pkg/auth/identity.go rename to extra/server-discovery/pkg/auth/identity.go diff --git a/aux/server-discovery/pkg/auth/identity_context.go b/extra/server-discovery/pkg/auth/identity_context.go similarity index 100% rename from aux/server-discovery/pkg/auth/identity_context.go rename to extra/server-discovery/pkg/auth/identity_context.go diff --git a/aux/server-discovery/pkg/auth/interfaces.go b/extra/server-discovery/pkg/auth/interfaces.go similarity index 100% rename from aux/server-discovery/pkg/auth/interfaces.go rename to extra/server-discovery/pkg/auth/interfaces.go diff --git a/aux/server-discovery/pkg/auth/token_issuer.go b/extra/server-discovery/pkg/auth/token_issuer.go similarity index 100% rename from aux/server-discovery/pkg/auth/token_issuer.go rename to extra/server-discovery/pkg/auth/token_issuer.go diff --git a/aux/server-discovery/pkg/auth/token_middleware.go b/extra/server-discovery/pkg/auth/token_middleware.go similarity index 100% rename from aux/server-discovery/pkg/auth/token_middleware.go rename to extra/server-discovery/pkg/auth/token_middleware.go diff --git a/aux/server-discovery/pkg/es/es.go b/extra/server-discovery/pkg/es/es.go similarity index 96% rename from aux/server-discovery/pkg/es/es.go rename to extra/server-discovery/pkg/es/es.go index a13d6a7f2..717f641b7 100644 --- a/aux/server-discovery/pkg/es/es.go +++ b/extra/server-discovery/pkg/es/es.go @@ -4,7 +4,7 @@ import ( "context" "encoding/json" "fmt" - "github.com/cortezaproject/corteza-server-discovery/pkg/options" + "github.com/cortezaproject/corteza/extra/server-discovery/pkg/options" "github.com/elastic/go-elasticsearch/v7" "github.com/elastic/go-elasticsearch/v7/esapi" "github.com/elastic/go-elasticsearch/v7/esutil" diff --git a/aux/server-discovery/pkg/es/mapping/mapping.go b/extra/server-discovery/pkg/es/mapping/mapping.go similarity index 98% rename from aux/server-discovery/pkg/es/mapping/mapping.go rename to extra/server-discovery/pkg/es/mapping/mapping.go index 7788c3778..e1019e722 100644 --- a/aux/server-discovery/pkg/es/mapping/mapping.go +++ b/extra/server-discovery/pkg/es/mapping/mapping.go @@ -5,7 +5,7 @@ import ( "context" "encoding/json" "fmt" - "github.com/cortezaproject/corteza-server-discovery/pkg/es/reindex" + "github.com/cortezaproject/corteza/extra/server-discovery/pkg/es/reindex" "github.com/elastic/go-elasticsearch/v7" "github.com/elastic/go-elasticsearch/v7/esapi" "github.com/elastic/go-elasticsearch/v7/esutil" diff --git a/aux/server-discovery/pkg/es/mapping/mapping_test.go b/extra/server-discovery/pkg/es/mapping/mapping_test.go similarity index 100% rename from aux/server-discovery/pkg/es/mapping/mapping_test.go rename to extra/server-discovery/pkg/es/mapping/mapping_test.go diff --git a/aux/server-discovery/pkg/es/reindex/reindex.go b/extra/server-discovery/pkg/es/reindex/reindex.go similarity index 99% rename from aux/server-discovery/pkg/es/reindex/reindex.go rename to extra/server-discovery/pkg/es/reindex/reindex.go index fa9c28660..f81681e28 100644 --- a/aux/server-discovery/pkg/es/reindex/reindex.go +++ b/extra/server-discovery/pkg/es/reindex/reindex.go @@ -5,7 +5,7 @@ import ( "context" "encoding/json" "fmt" - "github.com/cortezaproject/corteza-server-discovery/pkg/options" + "github.com/cortezaproject/corteza/extra/server-discovery/pkg/options" "github.com/davecgh/go-spew/spew" "github.com/elastic/go-elasticsearch/v7" "github.com/elastic/go-elasticsearch/v7/esutil" diff --git a/aux/server-discovery/pkg/healthcheck/check.go b/extra/server-discovery/pkg/healthcheck/check.go similarity index 100% rename from aux/server-discovery/pkg/healthcheck/check.go rename to extra/server-discovery/pkg/healthcheck/check.go diff --git a/aux/server-discovery/pkg/healthcheck/check_test.go b/extra/server-discovery/pkg/healthcheck/check_test.go similarity index 100% rename from aux/server-discovery/pkg/healthcheck/check_test.go rename to extra/server-discovery/pkg/healthcheck/check_test.go diff --git a/aux/server-discovery/pkg/healthcheck/http_handler.go b/extra/server-discovery/pkg/healthcheck/http_handler.go similarity index 100% rename from aux/server-discovery/pkg/healthcheck/http_handler.go rename to extra/server-discovery/pkg/healthcheck/http_handler.go diff --git a/aux/server-discovery/pkg/options/HttpServer.go b/extra/server-discovery/pkg/options/HttpServer.go similarity index 100% rename from aux/server-discovery/pkg/options/HttpServer.go rename to extra/server-discovery/pkg/options/HttpServer.go diff --git a/aux/server-discovery/pkg/options/corteza.go b/extra/server-discovery/pkg/options/corteza.go similarity index 100% rename from aux/server-discovery/pkg/options/corteza.go rename to extra/server-discovery/pkg/options/corteza.go diff --git a/aux/server-discovery/pkg/options/environment.go b/extra/server-discovery/pkg/options/environment.go similarity index 100% rename from aux/server-discovery/pkg/options/environment.go rename to extra/server-discovery/pkg/options/environment.go diff --git a/aux/server-discovery/pkg/options/es.go b/extra/server-discovery/pkg/options/es.go similarity index 100% rename from aux/server-discovery/pkg/options/es.go rename to extra/server-discovery/pkg/options/es.go diff --git a/aux/server-discovery/pkg/options/helpers.go b/extra/server-discovery/pkg/options/helpers.go similarity index 100% rename from aux/server-discovery/pkg/options/helpers.go rename to extra/server-discovery/pkg/options/helpers.go diff --git a/aux/server-discovery/pkg/options/indexer.go b/extra/server-discovery/pkg/options/indexer.go similarity index 100% rename from aux/server-discovery/pkg/options/indexer.go rename to extra/server-discovery/pkg/options/indexer.go diff --git a/aux/server-discovery/pkg/options/options.go b/extra/server-discovery/pkg/options/options.go similarity index 100% rename from aux/server-discovery/pkg/options/options.go rename to extra/server-discovery/pkg/options/options.go diff --git a/aux/server-discovery/pkg/options/searcher.go b/extra/server-discovery/pkg/options/searcher.go similarity index 100% rename from aux/server-discovery/pkg/options/searcher.go rename to extra/server-discovery/pkg/options/searcher.go diff --git a/aux/server-discovery/pkg/options/waitFor.go b/extra/server-discovery/pkg/options/waitFor.go similarity index 100% rename from aux/server-discovery/pkg/options/waitFor.go rename to extra/server-discovery/pkg/options/waitFor.go diff --git a/aux/server-discovery/searcher/healthcheck.go b/extra/server-discovery/searcher/healthcheck.go similarity index 100% rename from aux/server-discovery/searcher/healthcheck.go rename to extra/server-discovery/searcher/healthcheck.go diff --git a/aux/server-discovery/searcher/rest/conv.go b/extra/server-discovery/searcher/rest/conv.go similarity index 100% rename from aux/server-discovery/searcher/rest/conv.go rename to extra/server-discovery/searcher/rest/conv.go diff --git a/aux/server-discovery/searcher/rest/es.go b/extra/server-discovery/searcher/rest/es.go similarity index 100% rename from aux/server-discovery/searcher/rest/es.go rename to extra/server-discovery/searcher/rest/es.go diff --git a/aux/server-discovery/searcher/rest/handlers/search.go b/extra/server-discovery/searcher/rest/handlers/search.go similarity index 92% rename from aux/server-discovery/searcher/rest/handlers/search.go rename to extra/server-discovery/searcher/rest/handlers/search.go index ce35effb3..ef1ab89e5 100644 --- a/aux/server-discovery/searcher/rest/handlers/search.go +++ b/extra/server-discovery/searcher/rest/handlers/search.go @@ -2,7 +2,7 @@ package handlers import ( "context" - "github.com/cortezaproject/corteza-server-discovery/searcher/rest/request" + "github.com/cortezaproject/corteza/extra/server-discovery/searcher/rest/request" "github.com/cortezaproject/corteza/server/pkg/api" "github.com/go-chi/chi/v5" "net/http" diff --git a/aux/server-discovery/searcher/rest/request/request.go b/extra/server-discovery/searcher/rest/request/request.go similarity index 100% rename from aux/server-discovery/searcher/rest/request/request.go rename to extra/server-discovery/searcher/rest/request/request.go diff --git a/aux/server-discovery/searcher/rest/router.go b/extra/server-discovery/searcher/rest/router.go similarity index 62% rename from aux/server-discovery/searcher/rest/router.go rename to extra/server-discovery/searcher/rest/router.go index c063bada7..5c1e02dfe 100644 --- a/aux/server-discovery/searcher/rest/router.go +++ b/extra/server-discovery/searcher/rest/router.go @@ -1,8 +1,8 @@ package rest import ( - "github.com/cortezaproject/corteza-server-discovery/pkg/auth" - "github.com/cortezaproject/corteza-server-discovery/searcher/rest/handlers" + "github.com/cortezaproject/corteza/extra/server-discovery/pkg/auth" + "github.com/cortezaproject/corteza/extra/server-discovery/searcher/rest/handlers" "github.com/go-chi/chi/v5" ) diff --git a/aux/server-discovery/searcher/rest/search.go b/extra/server-discovery/searcher/rest/search.go similarity index 98% rename from aux/server-discovery/searcher/rest/search.go rename to extra/server-discovery/searcher/rest/search.go index 84a3453b7..80c9569d8 100644 --- a/aux/server-discovery/searcher/rest/search.go +++ b/extra/server-discovery/searcher/rest/search.go @@ -4,8 +4,8 @@ import ( "context" "encoding/json" "fmt" - "github.com/cortezaproject/corteza-server-discovery/searcher" - "github.com/cortezaproject/corteza-server-discovery/searcher/rest/request" + "github.com/cortezaproject/corteza/extra/server-discovery/searcher" + "github.com/cortezaproject/corteza/extra/server-discovery/searcher/rest/request" "github.com/jmoiron/sqlx/types" "net/http" ) diff --git a/aux/server-discovery/searcher/service.go b/extra/server-discovery/searcher/service.go similarity index 89% rename from aux/server-discovery/searcher/service.go rename to extra/server-discovery/searcher/service.go index 2b55f7eb2..e1ca4a580 100644 --- a/aux/server-discovery/searcher/service.go +++ b/extra/server-discovery/searcher/service.go @@ -4,9 +4,9 @@ import ( "context" "encoding/json" "fmt" - "github.com/cortezaproject/corteza-server-discovery/pkg/api" - "github.com/cortezaproject/corteza-server-discovery/pkg/es" - "github.com/cortezaproject/corteza-server-discovery/pkg/options" + "github.com/cortezaproject/corteza/extra/server-discovery/pkg/api" + "github.com/cortezaproject/corteza/extra/server-discovery/pkg/es" + "github.com/cortezaproject/corteza/extra/server-discovery/pkg/options" "github.com/elastic/go-elasticsearch/v7" "github.com/elastic/go-elasticsearch/v7/esapi" "github.com/elastic/go-elasticsearch/v7/esutil" diff --git a/extra/server-discovery/vendor/github.com/PaesslerAG/gval/.gitignore b/extra/server-discovery/vendor/github.com/PaesslerAG/gval/.gitignore new file mode 100644 index 000000000..98576e300 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/PaesslerAG/gval/.gitignore @@ -0,0 +1,30 @@ +# 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 +coverage.out + +manual_test.go +*.out +*.err + +.vscode \ No newline at end of file diff --git a/extra/server-discovery/vendor/github.com/PaesslerAG/gval/.travis.yml b/extra/server-discovery/vendor/github.com/PaesslerAG/gval/.travis.yml new file mode 100644 index 000000000..fdacb5857 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/PaesslerAG/gval/.travis.yml @@ -0,0 +1,12 @@ +language: go + +before_install: + - go get golang.org/x/tools/cmd/cover + - go get github.com/mattn/goveralls + +script: +- go test -bench=. -benchmem -timeout 9m -coverprofile coverage.out +- $HOME/gopath/bin/goveralls -coverprofile=coverage.out -service=travis-ci -repotoken=$COVERALLS_TOKEN +- go test -bench=Random -benchtime 3m -timeout 9m -benchmem -coverprofile coverage.out + +go: "1.15" diff --git a/extra/server-discovery/vendor/github.com/PaesslerAG/gval/LICENSE b/extra/server-discovery/vendor/github.com/PaesslerAG/gval/LICENSE new file mode 100644 index 000000000..0716dbca1 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/PaesslerAG/gval/LICENSE @@ -0,0 +1,12 @@ +Copyright (c) 2017, Paessler AG +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/extra/server-discovery/vendor/github.com/PaesslerAG/gval/README.md b/extra/server-discovery/vendor/github.com/PaesslerAG/gval/README.md new file mode 100644 index 000000000..d7aff3f11 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/PaesslerAG/gval/README.md @@ -0,0 +1,163 @@ +# Gval + +[![Go Reference](https://pkg.go.dev/badge/github.com/PaesslerAG/gval.svg)](https://pkg.go.dev/github.com/PaesslerAG/gval) +[![Build Status](https://api.travis-ci.org/PaesslerAG/gval.svg?branch=master)](https://travis-ci.org/PaesslerAG/gval) +[![Coverage Status](https://coveralls.io/repos/github/PaesslerAG/gval/badge.svg?branch=master)](https://coveralls.io/github/PaesslerAG/gval?branch=master) +[![Go Report Card](https://goreportcard.com/badge/github.com/PaesslerAG/gval)](https://goreportcard.com/report/github.com/PaesslerAG/gval) + +Gval (Go eVALuate) provides support for evaluating arbitrary expressions, in particular Go-like expressions. + +![gopher](./prtg-batmin-gopher.png) + +## Evaluate + +Gval can evaluate expressions with parameters, arimethetic, logical, and string operations: + +- basic expression: [10 > 0](https://pkg.go.dev/github.com/PaesslerAG/gval/#example-Evaluate-Basic) +- parameterized expression: [foo > 0](https://pkg.go.dev/github.com/PaesslerAG/gval/#example-Evaluate-Parameter) +- nested parameterized expression: [foo.bar > 0](https://pkg.go.dev/github.com/PaesslerAG/gval/#example-Evaluate-NestedParameter) +- arithmetic expression: [(requests_made * requests_succeeded / 100) >= 90](https://pkg.go.dev/github.com/PaesslerAG/gval/#example-Evaluate-Arithmetic) +- string expression: [http_response_body == "service is ok"](https://pkg.go.dev/github.com/PaesslerAG/gval/#example-Evaluate-String) +- float64 expression: [(mem_used / total_mem) * 100](https://pkg.go.dev/github.com/PaesslerAG/gval/#example-Evaluate-Float64) + +It can easily be extended with custom functions or operators: + +- custom date comparator: [date(\`2014-01-02\`) > date(\`2014-01-01 23:59:59\`)](https://pkg.go.dev/github.com/PaesslerAG/gval/#example-Evaluate-DateComparison) +- string length: [strlen("someReallyLongInputString") <= 16](https://pkg.go.dev/github.com/PaesslerAG/gval/#example-Evaluate-Strlen) + +You can parse gval.Expressions once and re-use them multiple times. Parsing is the compute-intensive phase of the process, so if you intend to use the same expression with different parameters, just parse it once: + +- [Parsing and Evaluation](https://pkg.go.dev/github.com/PaesslerAG/gval/#example-Evaluable) + +The normal Go-standard order of operators is respected. When writing an expression, be sure that you either order the operators correctly, or use parentheses to clarify which portions of an expression should be run first. + +Strings, numbers, and booleans can be used like in Go: + +- [(7 < "47" == true ? "hello world!\n\u263a") + \` more text\`](https://pkg.go.dev/github.com/PaesslerAG/gval/#example-Evaluate-Encoding) + +## Parameter + +Variables can be accessed via string literals. They can be used for values with string keys if the parameter is a `map[string]interface{}` or `map[interface{}]interface{}` and for fields or methods if the parameter is a struct. + +- [foo > 0](https://pkg.go.dev/github.com/PaesslerAG/gval/#example-Evaluate-Parameter) + +### Bracket Selector + +Map and array elements and Struct Field can be accessed via `[]`. + +- [foo[0]](https://pkg.go.dev/github.com/PaesslerAG/gval/#example-Evaluate-Array) +- [foo["b" + "a" + "r"]](https://pkg.go.dev/github.com/PaesslerAG/gval/#example-Evaluate-ExampleEvaluate_ComplexAccessor) + +### Dot Selector + +A nested variable with a name containing only letters and underscores can be accessed via a dot selector. + +- [foo.bar > 0](https://pkg.go.dev/github.com/PaesslerAG/gval/#example-Evaluate-NestedParameter) + +### Custom Selector + +Parameter names like `response-time` will be interpreted as `response` minus `time`. While gval doesn't support these parameter names directly, you can easily access them via a custom extension like [JSON Path](https://github.com/PaesslerAG/jsonpath): + +- [$["response-time"]](https://pkg.go.dev/github.com/PaesslerAG/gval/#example-Evaluate-Jsonpath) + +Jsonpath is also suitable for accessing array elements. + +### Fields and Methods + +If you have structs in your parameters, you can access their fields and methods in the usual way: + +- [foo.Hello + foo.World()](https://pkg.go.dev/github.com/PaesslerAG/gval/#example-Evaluate-FlatAccessor) + +It also works if the parameter is a struct directly +[Hello + World()](https://pkg.go.dev/github.com/PaesslerAG/gval/#example-Evaluate-Accessor) +or if the fields are nested +[foo.Hello + foo.World()](https://pkg.go.dev/github.com/PaesslerAG/gval/#example-Evaluate-NestedAccessor) + +This may be convenient but note that using accessors on strucs makes the expression about four times slower than just using a parameter (consult the benchmarks for more precise measurements on your system). If there are functions you want to use, it's faster (and probably cleaner) to define them as functions (see the Evaluate section). These approaches use no reflection, and are designed to be fast and clean. + +## Default Language + +The default language is in serveral sub languages like text, arithmetic or propositional logic defined. See [Godoc](https://pkg.go.dev/github.com/PaesslerAG/gval/#Gval) for details. All sub languages are merged into gval.Full which contains the following elements: + +- Modifiers: `+` `-` `/` `*` `&` `|` `^` `**` `%` `>>` `<<` +- Comparators: `>` `>=` `<` `<=` `==` `!=` `=~` `!~` +- Logical ops: `||` `&&` +- Numeric constants, as 64-bit floating point (`12345.678`) +- String constants (double quotes: `"foobar"`) +- Date function 'Date(x)', using any permutation of RFC3339, ISO8601, ruby date, or unix date +- Boolean constants: `true` `false` +- Parentheses to control order of evaluation `(` `)` +- Json Arrays : `[1, 2, "foo"]` +- Json Objects : `{"a":1, "b":2, "c":"foo"}` +- Prefixes: `!` `-` `~` +- Ternary conditional: `?` `:` +- Null coalescence: `??` + +## Customize + +Gval is completly customizable. Every constant, function or operator can be defined separately and existing expression languages can be reused: + +- [foo.Hello + foo.World()](https://pkg.go.dev/github.com/PaesslerAG/gval/#example-Language) + +For details see [Godoc](https://pkg.go.dev/github.com/PaesslerAG/gval). + +### Implementing custom selector + +In a case you want to provide custom logic for selectors you can implement `SelectGVal(ctx context.Context, k string) (interface{}, error)` on your struct. +Function receives next part of the path and can return any type of var that is again evaluated through standard gval procedures. + +[Example Custom Selector](https://pkg.go.dev/github.com/PaesslerAG/gval/#example-custom-selector) + +### External gval Languages + +A list of external libraries for gval. Feel free to add your own library. + +- [gvalstrings](https://github.com/generikvault/gvalstrings) parse single quoted strings in gval. +- [jsonpath](https://github.com/PaesslerAG/jsonpath) full support for jsonpath in gval. + +## Performance + +The library is built with the intention of being quick but has not been aggressively profiled and optimized. For most applications, though, it is completely fine. +If performance is an issue, make sure to create your expression language with all functions, constants and operators only once. Evaluating an expression like gval.Evaluate("expression, const1, func1, func2, ...) creates a new gval.Language everytime it is called and slows execution. + +The library comes with a bunch of benchmarks to measure the performance of parsing and evaluating expressions. You can run them with `go test -bench=.`. + +For a very rough idea of performance, here are the results from a benchmark run on a Dell Latitude E7470 Win 10 i5-6300U. + +``` text +BenchmarkGval/const_evaluation-4 500000000 3.57 ns/op +BenchmarkGval/const_parsing-4 1000000 1144 ns/op +BenchmarkGval/single_parameter_evaluation-4 10000000 165 ns/op +BenchmarkGval/single_parameter_parsing-4 1000000 1648 ns/op +BenchmarkGval/parameter_evaluation-4 5000000 352 ns/op +BenchmarkGval/parameter_parsing-4 500000 2773 ns/op +BenchmarkGval/common_evaluation-4 3000000 434 ns/op +BenchmarkGval/common_parsing-4 300000 4419 ns/op +BenchmarkGval/complex_evaluation-4 100000000 11.6 ns/op +BenchmarkGval/complex_parsing-4 100000 17936 ns/op +BenchmarkGval/literal_evaluation-4 300000000 3.84 ns/op +BenchmarkGval/literal_parsing-4 500000 2559 ns/op +BenchmarkGval/modifier_evaluation-4 500000000 3.54 ns/op +BenchmarkGval/modifier_parsing-4 500000 3755 ns/op +BenchmarkGval/regex_evaluation-4 50000 21347 ns/op +BenchmarkGval/regex_parsing-4 200000 6480 ns/op +BenchmarkGval/constant_regex_evaluation-4 1000000 1000 ns/op +BenchmarkGval/constant_regex_parsing-4 200000 9417 ns/op +BenchmarkGval/accessors_evaluation-4 3000000 417 ns/op +BenchmarkGval/accessors_parsing-4 1000000 1778 ns/op +BenchmarkGval/accessors_method_evaluation-4 1000000 1931 ns/op +BenchmarkGval/accessors_method_parsing-4 1000000 1729 ns/op +BenchmarkGval/accessors_method_parameter_evaluation-4 1000000 2162 ns/op +BenchmarkGval/accessors_method_parameter_parsing-4 500000 2618 ns/op +BenchmarkGval/nested_accessors_evaluation-4 2000000 681 ns/op +BenchmarkGval/nested_accessors_parsing-4 1000000 2115 ns/op +BenchmarkRandom-4 500000 3631 ns/op +ok +``` + +## API Breaks + +Gval is designed with easy expandability in mind and API breaks will be avoided if possible. If API breaks are unavoidable they wil be explicitly stated via an increased major version number. + +------------------------------------- +Credits to Reene French for the gophers. diff --git a/extra/server-discovery/vendor/github.com/PaesslerAG/gval/evaluable.go b/extra/server-discovery/vendor/github.com/PaesslerAG/gval/evaluable.go new file mode 100644 index 000000000..dedcc3b48 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/PaesslerAG/gval/evaluable.go @@ -0,0 +1,348 @@ +package gval + +import ( + "context" + "fmt" + "reflect" + "regexp" + "strconv" + "strings" +) + +// Selector allows for custom variable selection from structs +// +// Return value is again handled with variable() until end of the given path +type Selector interface { + SelectGVal(c context.Context, key string) (interface{}, error) +} + +// Evaluable evaluates given parameter +type Evaluable func(c context.Context, parameter interface{}) (interface{}, error) + +//EvalInt evaluates given parameter to an int +func (e Evaluable) EvalInt(c context.Context, parameter interface{}) (int, error) { + v, err := e(c, parameter) + if err != nil { + return 0, err + } + + f, ok := convertToFloat(v) + if !ok { + return 0, fmt.Errorf("expected number but got %v (%T)", v, v) + } + return int(f), nil +} + +//EvalFloat64 evaluates given parameter to a float64 +func (e Evaluable) EvalFloat64(c context.Context, parameter interface{}) (float64, error) { + v, err := e(c, parameter) + if err != nil { + return 0, err + } + + f, ok := convertToFloat(v) + if !ok { + return 0, fmt.Errorf("expected number but got %v (%T)", v, v) + } + return f, nil +} + +//EvalBool evaluates given parameter to a bool +func (e Evaluable) EvalBool(c context.Context, parameter interface{}) (bool, error) { + v, err := e(c, parameter) + if err != nil { + return false, err + } + + b, ok := convertToBool(v) + if !ok { + return false, fmt.Errorf("expected bool but got %v (%T)", v, v) + } + return b, nil +} + +//EvalString evaluates given parameter to a string +func (e Evaluable) EvalString(c context.Context, parameter interface{}) (string, error) { + o, err := e(c, parameter) + if err != nil { + return "", err + } + return fmt.Sprintf("%v", o), nil +} + +//Const Evaluable represents given constant +func (*Parser) Const(value interface{}) Evaluable { + return constant(value) +} + +//go:noinline +func constant(value interface{}) Evaluable { + return func(c context.Context, v interface{}) (interface{}, error) { + return value, nil + } +} + +//Var Evaluable represents value at given path. +//It supports with default language VariableSelector: +// map[interface{}]interface{}, +// map[string]interface{} and +// []interface{} and via reflect +// struct fields, +// struct methods, +// slices and +// map with int or string key. +func (p *Parser) Var(path ...Evaluable) Evaluable { + if p.selector == nil { + return variable(path) + } + return p.selector(path) +} + +// Evaluables is a slice of Evaluable. +type Evaluables []Evaluable + +// EvalStrings evaluates given parameter to a string slice +func (evs Evaluables) EvalStrings(c context.Context, parameter interface{}) ([]string, error) { + strs := make([]string, len(evs)) + for i, p := range evs { + k, err := p.EvalString(c, parameter) + if err != nil { + return nil, err + } + strs[i] = k + } + return strs, nil +} + +func variable(path Evaluables) Evaluable { + return func(c context.Context, v interface{}) (interface{}, error) { + keys, err := path.EvalStrings(c, v) + if err != nil { + return nil, err + } + for i, k := range keys { + switch o := v.(type) { + case Selector: + v, err = o.SelectGVal(c, k) + if err != nil { + return nil, fmt.Errorf("failed to select '%s' on %T: %w", k, o, err) + } + continue + case map[interface{}]interface{}: + v = o[k] + continue + case map[string]interface{}: + v = o[k] + continue + case []interface{}: + if i, err := strconv.Atoi(k); err == nil && i >= 0 && len(o) > i { + v = o[i] + continue + } + default: + var ok bool + v, ok = reflectSelect(k, o) + if !ok { + return nil, fmt.Errorf("unknown parameter %s", strings.Join(keys[:i+1], ".")) + } + } + } + return v, nil + } +} + +func reflectSelect(key string, value interface{}) (selection interface{}, ok bool) { + vv := reflect.ValueOf(value) + vvElem := resolvePotentialPointer(vv) + + switch vvElem.Kind() { + case reflect.Map: + mapKey, ok := reflectConvertTo(vv.Type().Key().Kind(), key) + if !ok { + return nil, false + } + + vvElem = vv.MapIndex(reflect.ValueOf(mapKey)) + vvElem = resolvePotentialPointer(vvElem) + + if vvElem.IsValid() { + return vvElem.Interface(), true + } + case reflect.Slice: + if i, err := strconv.Atoi(key); err == nil && i >= 0 && vv.Len() > i { + vvElem = resolvePotentialPointer(vv.Index(i)) + return vvElem.Interface(), true + } + case reflect.Struct: + field := vvElem.FieldByName(key) + if field.IsValid() { + return field.Interface(), true + } + + method := vv.MethodByName(key) + if method.IsValid() { + return method.Interface(), true + } + } + return nil, false +} + +func resolvePotentialPointer(value reflect.Value) reflect.Value { + if value.Kind() == reflect.Ptr { + return value.Elem() + } + return value +} + +func reflectConvertTo(k reflect.Kind, value string) (interface{}, bool) { + switch k { + case reflect.String: + return value, true + case reflect.Int: + if i, err := strconv.Atoi(value); err == nil { + return i, true + } + } + return nil, false +} + +func (*Parser) callFunc(fun function, args ...Evaluable) Evaluable { + return func(c context.Context, v interface{}) (ret interface{}, err error) { + a := make([]interface{}, len(args)) + for i, arg := range args { + ai, err := arg(c, v) + if err != nil { + return nil, err + } + a[i] = ai + } + return fun(c, a...) + } +} + +func (*Parser) callEvaluable(fullname string, fun Evaluable, args ...Evaluable) Evaluable { + return func(c context.Context, v interface{}) (ret interface{}, err error) { + f, err := fun(c, v) + + if err != nil { + return nil, fmt.Errorf("could not call function: %v", err) + } + + defer func() { + if r := recover(); r != nil { + err = fmt.Errorf("failed to execute function '%s': %s", fullname, r) + ret = nil + } + }() + + ff := reflect.ValueOf(f) + + if ff.Kind() != reflect.Func { + return nil, fmt.Errorf("could not call '%s' type %T", fullname, f) + } + + a := make([]reflect.Value, len(args)) + for i := range args { + arg, err := args[i](c, v) + if err != nil { + return nil, err + } + a[i] = reflect.ValueOf(arg) + } + + rr := ff.Call(a) + + r := make([]interface{}, len(rr)) + for i, e := range rr { + r[i] = e.Interface() + } + + errorInterface := reflect.TypeOf((*error)(nil)).Elem() + if len(r) > 0 && ff.Type().Out(len(r)-1).Implements(errorInterface) { + if r[len(r)-1] != nil { + err = r[len(r)-1].(error) + } + r = r[0 : len(r)-1] + } + + switch len(r) { + case 0: + return err, nil + case 1: + return r[0], err + default: + return r, err + } + } +} + +//IsConst returns if the Evaluable is a Parser.Const() value +func (e Evaluable) IsConst() bool { + pc := reflect.ValueOf(constant(nil)).Pointer() + pe := reflect.ValueOf(e).Pointer() + return pc == pe +} + +func regEx(a, b Evaluable) (Evaluable, error) { + if !b.IsConst() { + return func(c context.Context, o interface{}) (interface{}, error) { + a, err := a.EvalString(c, o) + if err != nil { + return nil, err + } + b, err := b.EvalString(c, o) + if err != nil { + return nil, err + } + matched, err := regexp.MatchString(b, a) + return matched, err + }, nil + } + s, err := b.EvalString(context.TODO(), nil) + if err != nil { + return nil, err + } + regex, err := regexp.Compile(s) + if err != nil { + return nil, err + } + return func(c context.Context, v interface{}) (interface{}, error) { + s, err := a.EvalString(c, v) + if err != nil { + return nil, err + } + return regex.MatchString(s), nil + }, nil +} + +func notRegEx(a, b Evaluable) (Evaluable, error) { + if !b.IsConst() { + return func(c context.Context, o interface{}) (interface{}, error) { + a, err := a.EvalString(c, o) + if err != nil { + return nil, err + } + b, err := b.EvalString(c, o) + if err != nil { + return nil, err + } + matched, err := regexp.MatchString(b, a) + return !matched, err + }, nil + } + s, err := b.EvalString(context.TODO(), nil) + if err != nil { + return nil, err + } + regex, err := regexp.Compile(s) + if err != nil { + return nil, err + } + return func(c context.Context, v interface{}) (interface{}, error) { + s, err := a.EvalString(c, v) + if err != nil { + return nil, err + } + return !regex.MatchString(s), nil + }, nil +} diff --git a/extra/server-discovery/vendor/github.com/PaesslerAG/gval/functions.go b/extra/server-discovery/vendor/github.com/PaesslerAG/gval/functions.go new file mode 100644 index 000000000..a3460c9a3 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/PaesslerAG/gval/functions.go @@ -0,0 +1,126 @@ +package gval + +import ( + "context" + "fmt" + "reflect" +) + +type function func(ctx context.Context, arguments ...interface{}) (interface{}, error) + +func toFunc(f interface{}) function { + if f, ok := f.(func(arguments ...interface{}) (interface{}, error)); ok { + return function(func(ctx context.Context, arguments ...interface{}) (interface{}, error) { + var v interface{} + errCh := make(chan error) + go func() { + defer func() { + if recovered := recover(); recovered != nil { + errCh <- fmt.Errorf("%v", recovered) + } + }() + result, err := f(arguments...) + v = result + errCh <- err + }() + + select { + case <-ctx.Done(): + return nil, ctx.Err() + case err := <-errCh: + return v, err + } + }) + } + if f, ok := f.(func(ctx context.Context, arguments ...interface{}) (interface{}, error)); ok { + return function(f) + } + + fun := reflect.ValueOf(f) + t := fun.Type() + return func(ctx context.Context, args ...interface{}) (interface{}, error) { + var v interface{} + errCh := make(chan error) + go func() { + defer func() { + if recovered := recover(); recovered != nil { + errCh <- fmt.Errorf("%v", recovered) + } + }() + in, err := createCallArguments(ctx, t, args) + if err != nil { + errCh <- err + return + } + out := fun.Call(in) + + r := make([]interface{}, len(out)) + for i, e := range out { + r[i] = e.Interface() + } + + err = nil + errorInterface := reflect.TypeOf((*error)(nil)).Elem() + if len(r) > 0 && t.Out(len(r)-1).Implements(errorInterface) { + if r[len(r)-1] != nil { + err = r[len(r)-1].(error) + } + r = r[0 : len(r)-1] + } + + switch len(r) { + case 0: + v = nil + case 1: + v = r[0] + default: + v = r + } + errCh <- err + }() + + select { + case <-ctx.Done(): + return nil, ctx.Err() + case err := <-errCh: + return v, err + } + } +} + +func createCallArguments(ctx context.Context, t reflect.Type, args []interface{}) ([]reflect.Value, error) { + variadic := t.IsVariadic() + numIn := t.NumIn() + + // if first argument is a context, use the given execution context + if numIn > 0 { + thisFun := reflect.ValueOf(createCallArguments) + thisT := thisFun.Type() + if t.In(0) == thisT.In(0) { + args = append([]interface{}{ctx}, args...) + } + } + + if (!variadic && len(args) != numIn) || (variadic && len(args) < numIn-1) { + return nil, fmt.Errorf("invalid number of parameters") + } + + in := make([]reflect.Value, len(args)) + var inType reflect.Type + for i, arg := range args { + if !variadic || i < numIn-1 { + inType = t.In(i) + } else if i == numIn-1 { + inType = t.In(numIn - 1).Elem() + } + argVal := reflect.ValueOf(arg) + if arg == nil { + argVal = reflect.ValueOf(reflect.Interface) + } else if !argVal.Type().AssignableTo(inType) { + return nil, fmt.Errorf("expected type %s for parameter %d but got %T", + inType.String(), i, arg) + } + in[i] = argVal + } + return in, nil +} diff --git a/extra/server-discovery/vendor/github.com/PaesslerAG/gval/gval.go b/extra/server-discovery/vendor/github.com/PaesslerAG/gval/gval.go new file mode 100644 index 000000000..affa02c81 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/PaesslerAG/gval/gval.go @@ -0,0 +1,327 @@ +// Package gval provides a generic expression language. +// All functions, infix and prefix operators can be replaced by composing languages into a new one. +// +// The package contains concrete expression languages for common application in text, arithmetic, decimal arithmetic, propositional logic and so on. +// They can be used as basis for a custom expression language or to evaluate expressions directly. +package gval + +import ( + "context" + "fmt" + "math" + "reflect" + "text/scanner" + "time" + + "github.com/shopspring/decimal" +) + +//Evaluate given parameter with given expression in gval full language +func Evaluate(expression string, parameter interface{}, opts ...Language) (interface{}, error) { + return EvaluateWithContext(context.Background(), expression, parameter, opts...) +} + +//Evaluate given parameter with given expression in gval full language using a context +func EvaluateWithContext(c context.Context, expression string, parameter interface{}, opts ...Language) (interface{}, error) { + l := full + if len(opts) > 0 { + l = NewLanguage(append([]Language{l}, opts...)...) + } + return l.EvaluateWithContext(c, expression, parameter) +} + +// Full is the union of Arithmetic, Bitmask, Text, PropositionalLogic, and Json +// Operator in: a in b is true iff value a is an element of array b +// Operator ??: a ?? b returns a if a is not false or nil, otherwise n +// Operator ?: a ? b : c returns b if bool a is true, otherwise b +// +// Function Date: Date(a) parses string a. a must match RFC3339, ISO8601, ruby date, or unix date +func Full(extensions ...Language) Language { + if len(extensions) == 0 { + return full + } + return NewLanguage(append([]Language{full}, extensions...)...) +} + +// Arithmetic contains base, plus(+), minus(-), divide(/), power(**), negative(-) +// and numerical order (<=,<,>,>=) +// +// Arithmetic operators expect float64 operands. +// Called with unfitting input, they try to convert the input to float64. +// They can parse strings and convert any type of int or float. +func Arithmetic() Language { + return arithmetic +} + +// DecimalArithmetic contains base, plus(+), minus(-), divide(/), power(**), negative(-) +// and numerical order (<=,<,>,>=) +// +// DecimalArithmetic operators expect decimal.Decimal operands (github.com/shopspring/decimal) +// and are used to calculate money/decimal rather than floating point calculations. +// Called with unfitting input, they try to convert the input to decimal.Decimal. +// They can parse strings and convert any type of int or float. +func DecimalArithmetic() Language { + return decimalArithmetic +} + +// Bitmask contains base, bitwise and(&), bitwise or(|) and bitwise not(^). +// +// Bitmask operators expect float64 operands. +// Called with unfitting input they try to convert the input to float64. +// They can parse strings and convert any type of int or float. +func Bitmask() Language { + return bitmask +} + +// Text contains base, lexical order on strings (<=,<,>,>=), +// regex match (=~) and regex not match (!~) +func Text() Language { + return text +} + +// PropositionalLogic contains base, not(!), and (&&), or (||) and Base. +// +// Propositional operator expect bool operands. +// Called with unfitting input they try to convert the input to bool. +// Numbers other than 0 and the strings "TRUE" and "true" are interpreted as true. +// 0 and the strings "FALSE" and "false" are interpreted as false. +func PropositionalLogic() Language { + return propositionalLogic +} + +// JSON contains json objects ({string:expression,...}) +// and json arrays ([expression, ...]) +func JSON() Language { + return ljson +} + +// Parentheses contains support for parentheses. +func Parentheses() Language { + return parentheses +} + +// Ident contains support for variables and functions. +func Ident() Language { + return ident +} + +// Base contains equal (==) and not equal (!=), perentheses and general support for variables, constants and functions +// It contains true, false, (floating point) number, string ("" or ``) and char ('') constants +func Base() Language { + return base +} + +var full = NewLanguage(arithmetic, bitmask, text, propositionalLogic, ljson, + + InfixOperator("in", inArray), + + InfixShortCircuit("??", func(a interface{}) (interface{}, bool) { + v := reflect.ValueOf(a) + return a, a != nil && !v.IsZero() + }), + InfixOperator("??", func(a, b interface{}) (interface{}, error) { + if v := reflect.ValueOf(a); a == nil || v.IsZero() { + return b, nil + } + return a, nil + }), + + PostfixOperator("?", parseIf), + + Function("date", func(arguments ...interface{}) (interface{}, error) { + if len(arguments) != 1 { + return nil, fmt.Errorf("date() expects exactly one string argument") + } + s, ok := arguments[0].(string) + if !ok { + return nil, fmt.Errorf("date() expects exactly one string argument") + } + for _, format := range [...]string{ + time.ANSIC, + time.UnixDate, + time.RubyDate, + time.Kitchen, + time.RFC3339, + time.RFC3339Nano, + "2006-01-02", // RFC 3339 + "2006-01-02 15:04", // RFC 3339 with minutes + "2006-01-02 15:04:05", // RFC 3339 with seconds + "2006-01-02 15:04:05-07:00", // RFC 3339 with seconds and timezone + "2006-01-02T15Z0700", // ISO8601 with hour + "2006-01-02T15:04Z0700", // ISO8601 with minutes + "2006-01-02T15:04:05Z0700", // ISO8601 with seconds + "2006-01-02T15:04:05.999999999Z0700", // ISO8601 with nanoseconds + } { + ret, err := time.ParseInLocation(format, s, time.Local) + if err == nil { + return ret, nil + } + } + return nil, fmt.Errorf("date() could not parse %s", s) + }), +) + +var ljson = NewLanguage( + PrefixExtension('[', parseJSONArray), + PrefixExtension('{', parseJSONObject), +) + +var arithmetic = NewLanguage( + InfixNumberOperator("+", func(a, b float64) (interface{}, error) { return a + b, nil }), + InfixNumberOperator("-", func(a, b float64) (interface{}, error) { return a - b, nil }), + InfixNumberOperator("*", func(a, b float64) (interface{}, error) { return a * b, nil }), + InfixNumberOperator("/", func(a, b float64) (interface{}, error) { return a / b, nil }), + InfixNumberOperator("%", func(a, b float64) (interface{}, error) { return math.Mod(a, b), nil }), + InfixNumberOperator("**", func(a, b float64) (interface{}, error) { return math.Pow(a, b), nil }), + + InfixNumberOperator(">", func(a, b float64) (interface{}, error) { return a > b, nil }), + InfixNumberOperator(">=", func(a, b float64) (interface{}, error) { return a >= b, nil }), + InfixNumberOperator("<", func(a, b float64) (interface{}, error) { return a < b, nil }), + InfixNumberOperator("<=", func(a, b float64) (interface{}, error) { return a <= b, nil }), + + InfixNumberOperator("==", func(a, b float64) (interface{}, error) { return a == b, nil }), + InfixNumberOperator("!=", func(a, b float64) (interface{}, error) { return a != b, nil }), + + base, +) + +var decimalArithmetic = NewLanguage( + InfixDecimalOperator("+", func(a, b decimal.Decimal) (interface{}, error) { return a.Add(b), nil }), + InfixDecimalOperator("-", func(a, b decimal.Decimal) (interface{}, error) { return a.Sub(b), nil }), + InfixDecimalOperator("*", func(a, b decimal.Decimal) (interface{}, error) { return a.Mul(b), nil }), + InfixDecimalOperator("/", func(a, b decimal.Decimal) (interface{}, error) { return a.Div(b), nil }), + InfixDecimalOperator("%", func(a, b decimal.Decimal) (interface{}, error) { return a.Mod(b), nil }), + InfixDecimalOperator("**", func(a, b decimal.Decimal) (interface{}, error) { return a.Pow(b), nil }), + + InfixDecimalOperator(">", func(a, b decimal.Decimal) (interface{}, error) { return a.GreaterThan(b), nil }), + InfixDecimalOperator(">=", func(a, b decimal.Decimal) (interface{}, error) { return a.GreaterThanOrEqual(b), nil }), + InfixDecimalOperator("<", func(a, b decimal.Decimal) (interface{}, error) { return a.LessThan(b), nil }), + InfixDecimalOperator("<=", func(a, b decimal.Decimal) (interface{}, error) { return a.LessThanOrEqual(b), nil }), + + InfixDecimalOperator("==", func(a, b decimal.Decimal) (interface{}, error) { return a.Equal(b), nil }), + InfixDecimalOperator("!=", func(a, b decimal.Decimal) (interface{}, error) { return !a.Equal(b), nil }), + base, + //Base is before these overrides so that the Base options are overridden + PrefixExtension(scanner.Int, parseDecimal), + PrefixExtension(scanner.Float, parseDecimal), + PrefixOperator("-", func(c context.Context, v interface{}) (interface{}, error) { + i, ok := convertToFloat(v) + if !ok { + return nil, fmt.Errorf("unexpected %v(%T) expected number", v, v) + } + return decimal.NewFromFloat(i).Neg(), nil + }), +) + +var bitmask = NewLanguage( + InfixNumberOperator("^", func(a, b float64) (interface{}, error) { return float64(int64(a) ^ int64(b)), nil }), + InfixNumberOperator("&", func(a, b float64) (interface{}, error) { return float64(int64(a) & int64(b)), nil }), + InfixNumberOperator("|", func(a, b float64) (interface{}, error) { return float64(int64(a) | int64(b)), nil }), + InfixNumberOperator("<<", func(a, b float64) (interface{}, error) { return float64(int64(a) << uint64(b)), nil }), + InfixNumberOperator(">>", func(a, b float64) (interface{}, error) { return float64(int64(a) >> uint64(b)), nil }), + + PrefixOperator("~", func(c context.Context, v interface{}) (interface{}, error) { + i, ok := convertToFloat(v) + if !ok { + return nil, fmt.Errorf("unexpected %T expected number", v) + } + return float64(^int64(i)), nil + }), +) + +var text = NewLanguage( + InfixTextOperator("+", func(a, b string) (interface{}, error) { return fmt.Sprintf("%v%v", a, b), nil }), + + InfixTextOperator("<", func(a, b string) (interface{}, error) { return a < b, nil }), + InfixTextOperator("<=", func(a, b string) (interface{}, error) { return a <= b, nil }), + InfixTextOperator(">", func(a, b string) (interface{}, error) { return a > b, nil }), + InfixTextOperator(">=", func(a, b string) (interface{}, error) { return a >= b, nil }), + + InfixEvalOperator("=~", regEx), + InfixEvalOperator("!~", notRegEx), + base, +) + +var propositionalLogic = NewLanguage( + PrefixOperator("!", func(c context.Context, v interface{}) (interface{}, error) { + b, ok := convertToBool(v) + if !ok { + return nil, fmt.Errorf("unexpected %T expected bool", v) + } + return !b, nil + }), + + InfixShortCircuit("&&", func(a interface{}) (interface{}, bool) { return false, a == false }), + InfixBoolOperator("&&", func(a, b bool) (interface{}, error) { return a && b, nil }), + InfixShortCircuit("||", func(a interface{}) (interface{}, bool) { return true, a == true }), + InfixBoolOperator("||", func(a, b bool) (interface{}, error) { return a || b, nil }), + + InfixBoolOperator("==", func(a, b bool) (interface{}, error) { return a == b, nil }), + InfixBoolOperator("!=", func(a, b bool) (interface{}, error) { return a != b, nil }), + + base, +) + +var parentheses = NewLanguage( + PrefixExtension('(', parseParentheses), +) + +var ident = NewLanguage( + PrefixMetaPrefix(scanner.Ident, parseIdent), +) + +var base = NewLanguage( + PrefixExtension(scanner.Int, parseNumber), + PrefixExtension(scanner.Float, parseNumber), + PrefixOperator("-", func(c context.Context, v interface{}) (interface{}, error) { + i, ok := convertToFloat(v) + if !ok { + return nil, fmt.Errorf("unexpected %v(%T) expected number", v, v) + } + return -i, nil + }), + + PrefixExtension(scanner.String, parseString), + PrefixExtension(scanner.Char, parseString), + PrefixExtension(scanner.RawString, parseString), + + Constant("true", true), + Constant("false", false), + + InfixOperator("==", func(a, b interface{}) (interface{}, error) { return reflect.DeepEqual(a, b), nil }), + InfixOperator("!=", func(a, b interface{}) (interface{}, error) { return !reflect.DeepEqual(a, b), nil }), + parentheses, + + Precedence("??", 0), + + Precedence("||", 20), + Precedence("&&", 21), + + Precedence("==", 40), + Precedence("!=", 40), + Precedence(">", 40), + Precedence(">=", 40), + Precedence("<", 40), + Precedence("<=", 40), + Precedence("=~", 40), + Precedence("!~", 40), + Precedence("in", 40), + + Precedence("^", 60), + Precedence("&", 60), + Precedence("|", 60), + + Precedence("<<", 90), + Precedence(">>", 90), + + Precedence("+", 120), + Precedence("-", 120), + + Precedence("*", 150), + Precedence("/", 150), + Precedence("%", 150), + + Precedence("**", 200), + + ident, +) diff --git a/extra/server-discovery/vendor/github.com/PaesslerAG/gval/language.go b/extra/server-discovery/vendor/github.com/PaesslerAG/gval/language.go new file mode 100644 index 000000000..b6844a68e --- /dev/null +++ b/extra/server-discovery/vendor/github.com/PaesslerAG/gval/language.go @@ -0,0 +1,281 @@ +package gval + +import ( + "context" + "fmt" + "text/scanner" + "unicode" + + "github.com/shopspring/decimal" +) + +// Language is an expression language +type Language struct { + prefixes map[interface{}]extension + operators map[string]operator + operatorSymbols map[rune]struct{} + init extension + def extension + selector func(Evaluables) Evaluable +} + +// NewLanguage returns the union of given Languages as new Language. +func NewLanguage(bases ...Language) Language { + l := newLanguage() + for _, base := range bases { + for i, e := range base.prefixes { + l.prefixes[i] = e + } + for i, e := range base.operators { + l.operators[i] = e.merge(l.operators[i]) + l.operators[i].initiate(i) + } + for i := range base.operatorSymbols { + l.operatorSymbols[i] = struct{}{} + } + if base.init != nil { + l.init = base.init + } + if base.def != nil { + l.def = base.def + } + if base.selector != nil { + l.selector = base.selector + } + } + return l +} + +func newLanguage() Language { + return Language{ + prefixes: map[interface{}]extension{}, + operators: map[string]operator{}, + operatorSymbols: map[rune]struct{}{}, + } +} + +// NewEvaluable returns an Evaluable for given expression in the specified language +func (l Language) NewEvaluable(expression string) (Evaluable, error) { + return l.NewEvaluableWithContext(context.Background(), expression) +} + +// NewEvaluableWithContext returns an Evaluable for given expression in the specified language using context +func (l Language) NewEvaluableWithContext(c context.Context, expression string) (Evaluable, error) { + p := newParser(expression, l) + + eval, err := p.parse(c) + if err == nil && p.isCamouflaged() && p.lastScan != scanner.EOF { + err = p.camouflage + } + if err != nil { + pos := p.scanner.Pos() + return nil, fmt.Errorf("parsing error: %s - %d:%d %s", p.scanner.Position, pos.Line, pos.Column, err) + } + + return eval, nil +} + +// Evaluate given parameter with given expression +func (l Language) Evaluate(expression string, parameter interface{}) (interface{}, error) { + return l.EvaluateWithContext(context.Background(), expression, parameter) +} + +// Evaluate given parameter with given expression using context +func (l Language) EvaluateWithContext(c context.Context, expression string, parameter interface{}) (interface{}, error) { + eval, err := l.NewEvaluableWithContext(c, expression) + if err != nil { + return nil, err + } + v, err := eval(c, parameter) + if err != nil { + return nil, fmt.Errorf("can not evaluate %s: %v", expression, err) + } + return v, nil +} + +// Function returns a Language with given function. +// Function has no conversion for input types. +// +// If the function returns an error it must be the last return parameter. +// +// If the function has (without the error) more then one return parameter, +// it returns them as []interface{}. +func Function(name string, function interface{}) Language { + l := newLanguage() + l.prefixes[name] = func(c context.Context, p *Parser) (eval Evaluable, err error) { + args := []Evaluable{} + scan := p.Scan() + switch scan { + case '(': + args, err = p.parseArguments(c) + if err != nil { + return nil, err + } + default: + p.Camouflage("function call", '(') + } + return p.callFunc(toFunc(function), args...), nil + } + return l +} + +// Constant returns a Language with given constant +func Constant(name string, value interface{}) Language { + l := newLanguage() + l.prefixes[l.makePrefixKey(name)] = func(c context.Context, p *Parser) (eval Evaluable, err error) { + return p.Const(value), nil + } + return l +} + +// PrefixExtension extends a Language +func PrefixExtension(r rune, ext func(context.Context, *Parser) (Evaluable, error)) Language { + l := newLanguage() + l.prefixes[r] = ext + return l +} + +// Init is a language that does no parsing, but invokes the given function when +// parsing starts. It is incumbent upon the function to call ParseExpression to +// continue parsing. +// +// This function can be used to customize the parser settings, such as +// whitespace or ident behavior. +func Init(ext func(context.Context, *Parser) (Evaluable, error)) Language { + l := newLanguage() + l.init = ext + return l +} + +// DefaultExtension is a language that runs the given function if no other +// prefix matches. +func DefaultExtension(ext func(context.Context, *Parser) (Evaluable, error)) Language { + l := newLanguage() + l.def = ext + return l +} + +// PrefixMetaPrefix chooses a Prefix to be executed +func PrefixMetaPrefix(r rune, ext func(context.Context, *Parser) (call string, alternative func() (Evaluable, error), err error)) Language { + l := newLanguage() + l.prefixes[r] = func(c context.Context, p *Parser) (Evaluable, error) { + call, alternative, err := ext(c, p) + if err != nil { + return nil, err + } + if prefix, ok := p.prefixes[l.makePrefixKey(call)]; ok { + return prefix(c, p) + } + return alternative() + } + return l +} + +//PrefixOperator returns a Language with given prefix +func PrefixOperator(name string, e Evaluable) Language { + l := newLanguage() + l.prefixes[l.makePrefixKey(name)] = func(c context.Context, p *Parser) (Evaluable, error) { + eval, err := p.ParseNextExpression(c) + if err != nil { + return nil, err + } + prefix := func(c context.Context, v interface{}) (interface{}, error) { + a, err := eval(c, v) + if err != nil { + return nil, err + } + return e(c, a) + } + if eval.IsConst() { + v, err := prefix(c, nil) + if err != nil { + return nil, err + } + prefix = p.Const(v) + } + return prefix, nil + } + return l +} + +// PostfixOperator extends a Language. +func PostfixOperator(name string, ext func(context.Context, *Parser, Evaluable) (Evaluable, error)) Language { + l := newLanguage() + l.operators[l.makeInfixKey(name)] = postfix{ + f: func(c context.Context, p *Parser, eval Evaluable, pre operatorPrecedence) (Evaluable, error) { + return ext(c, p, eval) + }, + } + return l +} + +// InfixOperator for two arbitrary values. +func InfixOperator(name string, f func(a, b interface{}) (interface{}, error)) Language { + return newLanguageOperator(name, &infix{arbitrary: f}) +} + +// InfixShortCircuit operator is called after the left operand is evaluated. +func InfixShortCircuit(name string, f func(a interface{}) (interface{}, bool)) Language { + return newLanguageOperator(name, &infix{shortCircuit: f}) +} + +// InfixTextOperator for two text values. +func InfixTextOperator(name string, f func(a, b string) (interface{}, error)) Language { + return newLanguageOperator(name, &infix{text: f}) +} + +// InfixNumberOperator for two number values. +func InfixNumberOperator(name string, f func(a, b float64) (interface{}, error)) Language { + return newLanguageOperator(name, &infix{number: f}) +} + +// InfixDecimalOperator for two decimal values. +func InfixDecimalOperator(name string, f func(a, b decimal.Decimal) (interface{}, error)) Language { + return newLanguageOperator(name, &infix{decimal: f}) +} + +// InfixBoolOperator for two bool values. +func InfixBoolOperator(name string, f func(a, b bool) (interface{}, error)) Language { + return newLanguageOperator(name, &infix{boolean: f}) +} + +// Precedence of operator. The Operator with higher operatorPrecedence is evaluated first. +func Precedence(name string, operatorPrecendence uint8) Language { + return newLanguageOperator(name, operatorPrecedence(operatorPrecendence)) +} + +// InfixEvalOperator operates on the raw operands. +// Therefore it cannot be combined with operators for other operand types. +func InfixEvalOperator(name string, f func(a, b Evaluable) (Evaluable, error)) Language { + return newLanguageOperator(name, directInfix{infixBuilder: f}) +} + +func newLanguageOperator(name string, op operator) Language { + op.initiate(name) + l := newLanguage() + l.operators[l.makeInfixKey(name)] = op + return l +} + +func (l *Language) makePrefixKey(key string) interface{} { + runes := []rune(key) + if len(runes) == 1 && !unicode.IsLetter(runes[0]) { + return runes[0] + } + return key +} + +func (l *Language) makeInfixKey(key string) string { + for _, r := range key { + l.operatorSymbols[r] = struct{}{} + } + return key +} + +// VariableSelector returns a Language which uses given variable selector. +// It must be combined with a Language that uses the vatiable selector. E.g. gval.Base(). +func VariableSelector(selector func(path Evaluables) Evaluable) Language { + l := newLanguage() + l.selector = selector + return l +} diff --git a/extra/server-discovery/vendor/github.com/PaesslerAG/gval/operator.go b/extra/server-discovery/vendor/github.com/PaesslerAG/gval/operator.go new file mode 100644 index 000000000..26a2a71a3 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/PaesslerAG/gval/operator.go @@ -0,0 +1,391 @@ +package gval + +import ( + "context" + "fmt" + "reflect" + "strconv" + "strings" + + "github.com/shopspring/decimal" +) + +type stage struct { + Evaluable + infixBuilder + operatorPrecedence +} + +type stageStack []stage //operatorPrecedence in stacktStage is continuously, monotone ascending + +func (s *stageStack) push(b stage) error { + for len(*s) > 0 && s.peek().operatorPrecedence >= b.operatorPrecedence { + a := s.pop() + eval, err := a.infixBuilder(a.Evaluable, b.Evaluable) + if err != nil { + return err + } + if a.IsConst() && b.IsConst() { + v, err := eval(nil, nil) + if err != nil { + return err + } + b.Evaluable = constant(v) + continue + } + b.Evaluable = eval + } + *s = append(*s, b) + return nil +} + +func (s *stageStack) peek() stage { + return (*s)[len(*s)-1] +} + +func (s *stageStack) pop() stage { + a := s.peek() + (*s) = (*s)[:len(*s)-1] + return a +} + +type infixBuilder func(a, b Evaluable) (Evaluable, error) + +func (l Language) isSymbolOperation(r rune) bool { + _, in := l.operatorSymbols[r] + return in +} + +func (l Language) isOperatorPrefix(op string) bool { + for k := range l.operators { + if strings.HasPrefix(k, op) { + return true + } + } + return false +} + +func (op *infix) initiate(name string) { + f := func(a, b interface{}) (interface{}, error) { + return nil, fmt.Errorf("invalid operation (%T) %s (%T)", a, name, b) + } + if op.arbitrary != nil { + f = op.arbitrary + } + for _, typeConvertion := range []bool{true, false} { + if op.text != nil && (!typeConvertion || op.arbitrary == nil) { + f = getStringOpFunc(op.text, f, typeConvertion) + } + if op.boolean != nil { + f = getBoolOpFunc(op.boolean, f, typeConvertion) + } + if op.number != nil { + f = getFloatOpFunc(op.number, f, typeConvertion) + } + if op.decimal != nil { + f = getDecimalOpFunc(op.decimal, f, typeConvertion) + } + } + if op.shortCircuit == nil { + op.builder = func(a, b Evaluable) (Evaluable, error) { + return func(c context.Context, x interface{}) (interface{}, error) { + a, err := a(c, x) + if err != nil { + return nil, err + } + b, err := b(c, x) + if err != nil { + return nil, err + } + return f(a, b) + }, nil + } + return + } + shortF := op.shortCircuit + op.builder = func(a, b Evaluable) (Evaluable, error) { + return func(c context.Context, x interface{}) (interface{}, error) { + a, err := a(c, x) + if err != nil { + return nil, err + } + if r, ok := shortF(a); ok { + return r, nil + } + b, err := b(c, x) + if err != nil { + return nil, err + } + return f(a, b) + }, nil + } +} + +type opFunc func(a, b interface{}) (interface{}, error) + +func getStringOpFunc(s func(a, b string) (interface{}, error), f opFunc, typeConversion bool) opFunc { + if typeConversion { + return func(a, b interface{}) (interface{}, error) { + if a != nil && b != nil { + return s(fmt.Sprintf("%v", a), fmt.Sprintf("%v", b)) + } + return f(a, b) + } + } + return func(a, b interface{}) (interface{}, error) { + s1, k := a.(string) + s2, l := b.(string) + if k && l { + return s(s1, s2) + } + return f(a, b) + } +} +func convertToBool(o interface{}) (bool, bool) { + if b, ok := o.(bool); ok { + return b, true + } + v := reflect.ValueOf(o) + for o != nil && v.Kind() == reflect.Ptr { + v = v.Elem() + if !v.IsValid() { + return false, false + } + o = v.Interface() + } + if o == false || o == nil || o == "false" || o == "FALSE" { + return false, true + } + if o == true || o == "true" || o == "TRUE" { + return true, true + } + if f, ok := convertToFloat(o); ok { + return f != 0., true + } + return false, false +} +func getBoolOpFunc(o func(a, b bool) (interface{}, error), f opFunc, typeConversion bool) opFunc { + if typeConversion { + return func(a, b interface{}) (interface{}, error) { + x, k := convertToBool(a) + y, l := convertToBool(b) + if k && l { + return o(x, y) + } + return f(a, b) + } + } + return func(a, b interface{}) (interface{}, error) { + x, k := a.(bool) + y, l := b.(bool) + if k && l { + return o(x, y) + } + return f(a, b) + } +} +func convertToFloat(o interface{}) (float64, bool) { + if i, ok := o.(float64); ok { + return i, true + } + v := reflect.ValueOf(o) + for o != nil && v.Kind() == reflect.Ptr { + v = v.Elem() + if !v.IsValid() { + return 0, false + } + o = v.Interface() + } + switch v.Kind() { + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return float64(v.Int()), true + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: + return float64(v.Uint()), true + case reflect.Float32, reflect.Float64: + return v.Float(), true + } + if s, ok := o.(string); ok { + f, err := strconv.ParseFloat(s, 64) + if err == nil { + return f, true + } + } + return 0, false +} +func getFloatOpFunc(o func(a, b float64) (interface{}, error), f opFunc, typeConversion bool) opFunc { + if typeConversion { + return func(a, b interface{}) (interface{}, error) { + x, k := convertToFloat(a) + y, l := convertToFloat(b) + if k && l { + return o(x, y) + } + + return f(a, b) + } + } + return func(a, b interface{}) (interface{}, error) { + x, k := a.(float64) + y, l := b.(float64) + if k && l { + return o(x, y) + } + + return f(a, b) + } +} +func convertToDecimal(o interface{}) (decimal.Decimal, bool) { + if i, ok := o.(decimal.Decimal); ok { + return i, true + } + if i, ok := o.(float64); ok { + return decimal.NewFromFloat(i), true + } + v := reflect.ValueOf(o) + for o != nil && v.Kind() == reflect.Ptr { + v = v.Elem() + if !v.IsValid() { + return decimal.Zero, false + } + o = v.Interface() + } + switch v.Kind() { + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return decimal.NewFromInt(v.Int()), true + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: + return decimal.NewFromFloat(float64(v.Uint())), true + case reflect.Float32, reflect.Float64: + return decimal.NewFromFloat(v.Float()), true + } + if s, ok := o.(string); ok { + f, err := strconv.ParseFloat(s, 64) + if err == nil { + return decimal.NewFromFloat(f), true + } + } + return decimal.Zero, false +} +func getDecimalOpFunc(o func(a, b decimal.Decimal) (interface{}, error), f opFunc, typeConversion bool) opFunc { + if typeConversion { + return func(a, b interface{}) (interface{}, error) { + x, k := convertToDecimal(a) + y, l := convertToDecimal(b) + if k && l { + return o(x, y) + } + + return f(a, b) + } + } + return func(a, b interface{}) (interface{}, error) { + x, k := a.(decimal.Decimal) + y, l := b.(decimal.Decimal) + if k && l { + return o(x, y) + } + + return f(a, b) + } +} + +type operator interface { + merge(operator) operator + precedence() operatorPrecedence + initiate(name string) +} + +type operatorPrecedence uint8 + +func (pre operatorPrecedence) merge(op operator) operator { + if op, ok := op.(operatorPrecedence); ok { + if op > pre { + return op + } + return pre + } + if op == nil { + return pre + } + return op.merge(pre) +} + +func (pre operatorPrecedence) precedence() operatorPrecedence { + return pre +} + +func (pre operatorPrecedence) initiate(name string) {} + +type infix struct { + operatorPrecedence + number func(a, b float64) (interface{}, error) + decimal func(a, b decimal.Decimal) (interface{}, error) + boolean func(a, b bool) (interface{}, error) + text func(a, b string) (interface{}, error) + arbitrary func(a, b interface{}) (interface{}, error) + shortCircuit func(a interface{}) (interface{}, bool) + builder infixBuilder +} + +func (op infix) merge(op2 operator) operator { + switch op2 := op2.(type) { + case *infix: + if op.number == nil { + op.number = op2.number + } + if op.decimal == nil { + op.decimal = op2.decimal + } + if op.boolean == nil { + op.boolean = op2.boolean + } + if op.text == nil { + op.text = op2.text + } + if op.arbitrary == nil { + op.arbitrary = op2.arbitrary + } + if op.shortCircuit == nil { + op.shortCircuit = op2.shortCircuit + } + } + if op2 != nil && op2.precedence() > op.operatorPrecedence { + op.operatorPrecedence = op2.precedence() + } + return &op +} + +type directInfix struct { + operatorPrecedence + infixBuilder +} + +func (op directInfix) merge(op2 operator) operator { + switch op2 := op2.(type) { + case operatorPrecedence: + op.operatorPrecedence = op2 + } + if op2 != nil && op2.precedence() > op.operatorPrecedence { + op.operatorPrecedence = op2.precedence() + } + return op +} + +type extension func(context.Context, *Parser) (Evaluable, error) + +type postfix struct { + operatorPrecedence + f func(context.Context, *Parser, Evaluable, operatorPrecedence) (Evaluable, error) +} + +func (op postfix) merge(op2 operator) operator { + switch op2 := op2.(type) { + case postfix: + if op2.f != nil { + op.f = op2.f + } + } + if op2 != nil && op2.precedence() > op.operatorPrecedence { + op.operatorPrecedence = op2.precedence() + } + return op +} diff --git a/extra/server-discovery/vendor/github.com/PaesslerAG/gval/parse.go b/extra/server-discovery/vendor/github.com/PaesslerAG/gval/parse.go new file mode 100644 index 000000000..789b62e35 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/PaesslerAG/gval/parse.go @@ -0,0 +1,347 @@ +package gval + +import ( + "context" + "fmt" + "reflect" + "strconv" + "text/scanner" + + "github.com/shopspring/decimal" +) + +//ParseExpression scans an expression into an Evaluable. +func (p *Parser) ParseExpression(c context.Context) (eval Evaluable, err error) { + stack := stageStack{} + for { + eval, err = p.ParseNextExpression(c) + if err != nil { + return nil, err + } + + if stage, err := p.parseOperator(c, &stack, eval); err != nil { + return nil, err + } else if err = stack.push(stage); err != nil { + return nil, err + } + + if stack.peek().infixBuilder == nil { + return stack.pop().Evaluable, nil + } + } +} + +//ParseNextExpression scans the expression ignoring following operators +func (p *Parser) ParseNextExpression(c context.Context) (eval Evaluable, err error) { + scan := p.Scan() + ex, ok := p.prefixes[scan] + if !ok { + if scan != scanner.EOF && p.def != nil { + return p.def(c, p) + } + return nil, p.Expected("extensions") + } + return ex(c, p) +} + +// ParseSublanguage sets the next language for this parser to parse and calls +// its initialization function, usually ParseExpression. +func (p *Parser) ParseSublanguage(c context.Context, l Language) (Evaluable, error) { + if p.isCamouflaged() { + panic("can not ParseSublanguage() on camouflaged Parser") + } + curLang := p.Language + curWhitespace := p.scanner.Whitespace + curMode := p.scanner.Mode + curIsIdentRune := p.scanner.IsIdentRune + + p.Language = l + p.resetScannerProperties() + + defer func() { + p.Language = curLang + p.scanner.Whitespace = curWhitespace + p.scanner.Mode = curMode + p.scanner.IsIdentRune = curIsIdentRune + }() + + return p.parse(c) +} + +func (p *Parser) parse(c context.Context) (Evaluable, error) { + if p.init != nil { + return p.init(c, p) + } + + return p.ParseExpression(c) +} + +func parseString(c context.Context, p *Parser) (Evaluable, error) { + s, err := strconv.Unquote(p.TokenText()) + if err != nil { + return nil, fmt.Errorf("could not parse string: %s", err) + } + return p.Const(s), nil +} + +func parseNumber(c context.Context, p *Parser) (Evaluable, error) { + n, err := strconv.ParseFloat(p.TokenText(), 64) + if err != nil { + return nil, err + } + return p.Const(n), nil +} + +func parseDecimal(c context.Context, p *Parser) (Evaluable, error) { + n, err := strconv.ParseFloat(p.TokenText(), 64) + if err != nil { + return nil, err + } + return p.Const(decimal.NewFromFloat(n)), nil +} + +func parseParentheses(c context.Context, p *Parser) (Evaluable, error) { + eval, err := p.ParseExpression(c) + if err != nil { + return nil, err + } + switch p.Scan() { + case ')': + return eval, nil + default: + return nil, p.Expected("parentheses", ')') + } +} + +func (p *Parser) parseOperator(c context.Context, stack *stageStack, eval Evaluable) (st stage, err error) { + for { + scan := p.Scan() + op := p.TokenText() + mustOp := false + if p.isSymbolOperation(scan) { + scan = p.Peek() + for p.isSymbolOperation(scan) && p.isOperatorPrefix(op+string(scan)) { + mustOp = true + op += string(scan) + p.Next() + scan = p.Peek() + } + } else if scan != scanner.Ident { + p.Camouflage("operator") + return stage{Evaluable: eval}, nil + } + switch operator := p.operators[op].(type) { + case *infix: + return stage{ + Evaluable: eval, + infixBuilder: operator.builder, + operatorPrecedence: operator.operatorPrecedence, + }, nil + case directInfix: + return stage{ + Evaluable: eval, + infixBuilder: operator.infixBuilder, + operatorPrecedence: operator.operatorPrecedence, + }, nil + case postfix: + if err = stack.push(stage{ + operatorPrecedence: operator.operatorPrecedence, + Evaluable: eval, + }); err != nil { + return stage{}, err + } + eval, err = operator.f(c, p, stack.pop().Evaluable, operator.operatorPrecedence) + if err != nil { + return + } + continue + } + + if !mustOp { + p.Camouflage("operator") + return stage{Evaluable: eval}, nil + } + return stage{}, fmt.Errorf("unknown operator %s", op) + } +} + +func parseIdent(c context.Context, p *Parser) (call string, alternative func() (Evaluable, error), err error) { + token := p.TokenText() + return token, + func() (Evaluable, error) { + fullname := token + + keys := []Evaluable{p.Const(token)} + for { + scan := p.Scan() + switch scan { + case '.': + scan = p.Scan() + switch scan { + case scanner.Ident: + token = p.TokenText() + keys = append(keys, p.Const(token)) + default: + return nil, p.Expected("field", scanner.Ident) + } + case '(': + args, err := p.parseArguments(c) + if err != nil { + return nil, err + } + return p.callEvaluable(fullname, p.Var(keys...), args...), nil + case '[': + key, err := p.ParseExpression(c) + if err != nil { + return nil, err + } + switch p.Scan() { + case ']': + keys = append(keys, key) + default: + return nil, p.Expected("array key", ']') + } + default: + p.Camouflage("variable", '.', '(', '[') + return p.Var(keys...), nil + } + } + }, nil + +} + +func (p *Parser) parseArguments(c context.Context) (args []Evaluable, err error) { + if p.Scan() == ')' { + return + } + p.Camouflage("scan arguments", ')') + for { + arg, err := p.ParseExpression(c) + args = append(args, arg) + if err != nil { + return nil, err + } + switch p.Scan() { + case ')': + return args, nil + case ',': + default: + return nil, p.Expected("arguments", ')', ',') + } + } +} + +func inArray(a, b interface{}) (interface{}, error) { + col, ok := b.([]interface{}) + if !ok { + return nil, fmt.Errorf("expected type []interface{} for in operator but got %T", b) + } + for _, value := range col { + if reflect.DeepEqual(a, value) { + return true, nil + } + } + return false, nil +} + +func parseIf(c context.Context, p *Parser, e Evaluable) (Evaluable, error) { + a, err := p.ParseExpression(c) + if err != nil { + return nil, err + } + b := p.Const(nil) + switch p.Scan() { + case ':': + b, err = p.ParseExpression(c) + if err != nil { + return nil, err + } + case scanner.EOF: + default: + return nil, p.Expected("<> ? <> : <>", ':', scanner.EOF) + } + return func(c context.Context, v interface{}) (interface{}, error) { + x, err := e(c, v) + if err != nil { + return nil, err + } + if valX := reflect.ValueOf(x); x == nil || valX.IsZero() { + return b(c, v) + } + return a(c, v) + }, nil +} + +func parseJSONArray(c context.Context, p *Parser) (Evaluable, error) { + evals := []Evaluable{} + for { + switch p.Scan() { + default: + p.Camouflage("array", ',', ']') + eval, err := p.ParseExpression(c) + if err != nil { + return nil, err + } + evals = append(evals, eval) + case ',': + case ']': + return func(c context.Context, v interface{}) (interface{}, error) { + vs := make([]interface{}, len(evals)) + for i, e := range evals { + eval, err := e(c, v) + if err != nil { + return nil, err + } + vs[i] = eval + } + + return vs, nil + }, nil + } + } +} + +func parseJSONObject(c context.Context, p *Parser) (Evaluable, error) { + type kv struct { + key Evaluable + value Evaluable + } + evals := []kv{} + for { + switch p.Scan() { + default: + p.Camouflage("object", ',', '}') + key, err := p.ParseExpression(c) + if err != nil { + return nil, err + } + if p.Scan() != ':' { + if err != nil { + return nil, p.Expected("object", ':') + } + } + value, err := p.ParseExpression(c) + if err != nil { + return nil, err + } + evals = append(evals, kv{key, value}) + case ',': + case '}': + return func(c context.Context, v interface{}) (interface{}, error) { + vs := map[string]interface{}{} + for _, e := range evals { + value, err := e.value(c, v) + if err != nil { + return nil, err + } + key, err := e.key.EvalString(c, v) + if err != nil { + return nil, err + } + vs[key] = value + } + return vs, nil + }, nil + } + } +} diff --git a/extra/server-discovery/vendor/github.com/PaesslerAG/gval/parser.go b/extra/server-discovery/vendor/github.com/PaesslerAG/gval/parser.go new file mode 100644 index 000000000..9b8d389aa --- /dev/null +++ b/extra/server-discovery/vendor/github.com/PaesslerAG/gval/parser.go @@ -0,0 +1,147 @@ +package gval + +import ( + "bytes" + "fmt" + "strings" + "text/scanner" + "unicode" +) + +//Parser parses expressions in a Language into an Evaluable +type Parser struct { + scanner scanner.Scanner + Language + lastScan rune + camouflage error +} + +func newParser(expression string, l Language) *Parser { + sc := scanner.Scanner{} + sc.Init(strings.NewReader(expression)) + sc.Error = func(*scanner.Scanner, string) {} + sc.Filename = expression + "\t" + p := &Parser{scanner: sc, Language: l} + p.resetScannerProperties() + return p +} + +func (p *Parser) resetScannerProperties() { + p.scanner.Whitespace = scanner.GoWhitespace + p.scanner.Mode = scanner.GoTokens + p.scanner.IsIdentRune = func(r rune, pos int) bool { + return unicode.IsLetter(r) || r == '_' || (pos > 0 && unicode.IsDigit(r)) + } +} + +// SetWhitespace sets the behavior of the whitespace matcher. The given +// characters must be less than or equal to 0x20 (' '). +func (p *Parser) SetWhitespace(chars ...rune) { + var mask uint64 + for _, char := range chars { + mask |= 1 << char + } + + p.scanner.Whitespace = mask +} + +// SetMode sets the tokens that the underlying scanner will match. +func (p *Parser) SetMode(mode uint) { + p.scanner.Mode = mode +} + +// SetIsIdentRuneFunc sets the function that matches ident characters in the +// underlying scanner. +func (p *Parser) SetIsIdentRuneFunc(fn func(ch rune, i int) bool) { + p.scanner.IsIdentRune = fn +} + +// Scan reads the next token or Unicode character from source and returns it. +// It only recognizes tokens t for which the respective Mode bit (1<<-t) is set. +// It returns scanner.EOF at the end of the source. +func (p *Parser) Scan() rune { + if p.isCamouflaged() { + p.camouflage = nil + return p.lastScan + } + p.camouflage = nil + p.lastScan = p.scanner.Scan() + return p.lastScan +} + +func (p *Parser) isCamouflaged() bool { + return p.camouflage != nil && p.camouflage != errCamouflageAfterNext +} + +// Camouflage rewind the last Scan(). The Parser holds the camouflage error until +// the next Scan() +// Do not call Rewind() on a camouflaged Parser +func (p *Parser) Camouflage(unit string, expected ...rune) { + if p.isCamouflaged() { + panic(fmt.Errorf("can only Camouflage() after Scan(): %v", p.camouflage)) + } + p.camouflage = p.Expected(unit, expected...) +} + +// Peek returns the next Unicode character in the source without advancing +// the scanner. It returns EOF if the scanner's position is at the last +// character of the source. +// Do not call Peek() on a camouflaged Parser +func (p *Parser) Peek() rune { + if p.isCamouflaged() { + panic("can not Peek() on camouflaged Parser") + } + return p.scanner.Peek() +} + +var errCamouflageAfterNext = fmt.Errorf("Camouflage() after Next()") + +// Next reads and returns the next Unicode character. +// It returns EOF at the end of the source. +// Do not call Next() on a camouflaged Parser +func (p *Parser) Next() rune { + if p.isCamouflaged() { + panic("can not Next() on camouflaged Parser") + } + p.camouflage = errCamouflageAfterNext + return p.scanner.Next() +} + +// TokenText returns the string corresponding to the most recently scanned token. +// Valid after calling Scan(). +func (p *Parser) TokenText() string { + return p.scanner.TokenText() +} + +//Expected returns an error signaling an unexpected Scan() result +func (p *Parser) Expected(unit string, expected ...rune) error { + return unexpectedRune{unit, expected, p.lastScan} +} + +type unexpectedRune struct { + unit string + expected []rune + got rune +} + +func (err unexpectedRune) Error() string { + exp := bytes.Buffer{} + runes := err.expected + switch len(runes) { + default: + for _, r := range runes[:len(runes)-2] { + exp.WriteString(scanner.TokenString(r)) + exp.WriteString(", ") + } + fallthrough + case 2: + exp.WriteString(scanner.TokenString(runes[len(runes)-2])) + exp.WriteString(" or ") + fallthrough + case 1: + exp.WriteString(scanner.TokenString(runes[len(runes)-1])) + case 0: + return fmt.Sprintf("unexpected %s while scanning %s", scanner.TokenString(err.got), err.unit) + } + return fmt.Sprintf("unexpected %s while scanning %s expected %s", scanner.TokenString(err.got), err.unit, exp.String()) +} diff --git a/extra/server-discovery/vendor/github.com/PaesslerAG/gval/prtg-batmin-gopher.png b/extra/server-discovery/vendor/github.com/PaesslerAG/gval/prtg-batmin-gopher.png new file mode 100644 index 0000000000000000000000000000000000000000..7c23b52b76e7fa16cfc1ceff7b906587880a4375 GIT binary patch literal 34696 zcmV*)KsCRKP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 zVoOIv0RI600RN!9r;`8x00(qQO+^Rd2^j<&C-W^TrvLze07*naRCwC#oppR%*O~Xf z=i=~)Sq7PzlGusENh#%q+N4csOIzA4?iLrzZ+T0*ZMWUDfu?P+O~Xzcjv;2YELn`h zaN)dv+!?abOVWL(&O!0EY{&4xqd6|IAp8Yi(^i zRrft%oNQZOD2S6k#VZ$M3>XuSAk%<3z&r$VfN4moff6JEDWxtYij)%Rg6m4Wza>%v zvhW*_NI-ZGOMnmpQT(kGe~aPoZ6U}42?TvW8*mWGZeR~^0FP90KpuSqCmOtC+_%6Z zd=w}tydroLfdMFhgGcye;o1Xuq)q_2(N22066p+aCV(*pOb}=U76U60ECc2ssg{zk zbfs_{7uS|Jwu@uCxQ>hK$O2g?3|#?20R%!QfC55z?-3N~18#v-?$F;LLC6A`Kv4yX zs-UV0il(4y3aTm)sz6ah9_UBV0&GXJ5!eju1$yxY_YjH$ca(cKfI46vuoPGb%mixj zNE0Z0rzkN+;Z9w^#v@7!hKRin*j9M$19}SIJ*F+E1I`fV1Q=z&sCcT@GGHx&)kx+^ zNu_k9=GZQ_ zEF}^bTo);Aq-*0kd0Z!lYiDq*433rZUUnMS%HTRVkQNAuqJXL^Xu67~tEhT`P>M(t zh_o5W6Ts7Wk|}Z2y$69sz=eg^5cpcyK<2dAU7U^_`L?T5zktCT&k@{%6Bwq3 z?$gk81w|DpJR?LU6v^VEC<>8Ch{lFm=FXkT{P|7HnmLWy+A7M*q6C9}Ow&M9RgVY) zkP^pnv2BNJHb)|nqPK5=*2A6b+jodvyZ5tq-yu3Wx=E+AfJ9N0qC~QQ?Z9ooAMhk1 z@Zu2Y6;GT|q)R!TWO*xav6M`6ELX|rZ1NdTs(^-OmS6^JFvATPf$9QLOoUJhgLG)| za{57d>n4drx(=?DBA@9amux4OY{Sa*;@W8xRic|3hEGG$K+{wztIAlmbUx>uw~AFO z7cp~s1JRN&ilz;b13B#e<>=QR`YpuJaaJ}@Z{GlW_B8YKGtcwnQ=8bedq44b%3He~ zkwgc8n}FZot<8WJmO!sq;v7X71(*-K3Bg;DEOl(xm(M!nGZt3f1z}+LD)2=b@kOSg z`zulPK!GTdW0d)q6bb_viF7RNT#Q_@olLBmbi55yw^(u3e6GCeaxS}k4NWr}G5v*Q zjq6VBy(NptgIY}-LqhX}M6_yrz;df~9E~2cmq+l0wPxb=iY=!_u0oUblTPOEF@Hl_^)8E*-Z4Z`Z7YXFzt%1G)+=pke zJLLp=#SrHx!UTa!fcF5GxsEK!Wo&Y(JhmlK^a%dQbONPwFhg}Hn!iAn7ihq|h;Utr zX{wxeRt?u(IfvC})!+;0;7qY(nJ5a9sIRA=zuvo!8-ITXJ9g~Dbv?rb-hR;k0N=&i zqdKMJdD#(DHS9z;z{&u))=DoW%`qpGR$N@bn|h z(NF|P*t~fsKl-oV^58>HVml6sXLx7Qe4f8SJO^)S;GX=tc z4}VD$p^C+rp*n z(_fT63E-Q+_ki?NljmhcoTJpTCg3B$yIeRT0 z(Ma*_8a%7YC-YgSHaVCjmvYbp4U{%sOtkiFbbt9PmM{RWl!O90AOE{0eCR!k2>A7v z_#V_SNJ&{mDQnMLMQ`r_yLRnIN)#bjf#-PoSTq{RPX&2i(!?1iWy*k00{_pk<=N?2 zUQNYw2(^Tgy7MS)I3FWaQ*hmQnGBLiKuSqCXz2q-RQ40cd!V$39u|yd;S;ij?^wk`LrEb~G`N#j;d_6^kjG zb{YQCCWNB%N+t|=qzMLeKJ)j>dHdVupcbrBQ-=aMltL7Nbiv6XtrXm6kKj=kU+ip~OJz%$WkM4k+JUUJ5PVNxatybt)C zW4jIMc%EF^Mi10dQnvMoo^}(Hj2VP z{~%xZ(s#M*?gxv$ZvA-U<_?(rK94pfPv!-}Fw)Gzvy@z$%h*OLmP5Ka;p(%A)T}}^ zB3{RzAr0V7=GR?0hj(2&Z)!**1fW1Zj@!Q-r~NUUu4j?41IYYf!GDcWr)7Ec8v&>W z!e4<>x&XEIJe1n=P$DxyH46lqWP@Fo(y|i1{Kb#b+dIG$Pi{n2l`=f{oPBuS)|2ak zlkCD53h zZ9(W^lu$iPcC9KURkf8=mX)&Z(Pzl#Erbwr@WQsAibf+$biH$06K9xeRssAw@Xxu7 zU6Sn2AZ37(h6{++twA*cXVkKzASHx?I$!*URh+%5dh+`;LIG*xv_44w*?+~}b1O2_ z145oUePt*^fsKqe;~ahvnK*<9Peb@CC*2{lW=$s+OR!<%HiQ?Kz6dX>wBuz%oMEJy z4g6S2Zpb9_dTKC-=BuH6#;XaI%`e2|pTW_PQgZEEX7jGM&qtl?02eAU-G#OJ``DYl zkBlEWwS*b94S;Lm_V2`Le+;4dP)g>2I&tZvXe#sP&E(nVw$j$#jiQJMURIvJOw>eu zS`ud%Y0d%u+jZq-saQ^A5;lR-d6dt1HAb*z!X5WYf$K`B zw|~d!V?q*mc@uiKA_w=NRxCmI%O^G#q@;0L9fuCJv2FWa6h-Jj6>vv18p)2AJf{_L zhFQ+82L8*=yE7C0SscfpwEhAjwdbHH24^JA*l--l>Xp@e;)6>ujmfC7g08{8ap=I; z2z9rho{n8DK*kT@c5g@c&qgUNn-FbJv5TYK~32c4I5vM>J1N9W%$8b!=V-$kyJtbs*qhg#r4W%YH{`pi&Dyz!r?CfE~#_cGI zP=Qk5&*OCjJuNms3#3u;c67g)&pM@v{tSvSrWU2$4eBrv2xKRPtQ?tq4u@af;BKGmWQ1ZWTL7f&I_kAmx!qr#3j=S!D zi0+;~gb-`+k}Tdmp5tG1;tV6r-vQsu7yQjsqmuF&uf`15omtO}6Nawvme+$Bp(19o>@D^ky0Q5D=ky)VlLg>n}zrU*wsIRkPrNGYX2n zYnfi${v9}N>u}m1Lnd3t^fDL~3fRw2Cv)pr$dsqH=hqz~@r4J8{^a$D@HjVl9hdp@ zo4EASbNT&EccQAQA9x4wH-=>m9Sbk2sy0kLdmr$ve8w(G3}n&FYATvuiy5jtLz;2I zbtQ9WmGJSuTjGTZj2i;mO|j?jx9CqkJw%!!q<~~V#b-$Z83z%bhQ9DU7^^;qHv4TT zrE?KR*DNT>Yk5TzXOCv1-+EA!zHpmDZk{jwA{^3XbBE4TY(!ek*}hUq+pA1;ST$ zI*Uv$WQ|cOiAN{=ptbcq1;)wO> zPw{xdKHhOJ__q5n(p(ID-^x4H$$<>2QBL`c*PJ2EBv4e-=FS@b;ut`>7Og!uk;%0o zMi~lHx|9T$v3SNes42Sw1@+YAXOJ!k6?MkzF)sW8O7+Mt zTh~nX*6kA**^;$uS5aCTMSA0I1zx_2mqym?lISFN8K#JP>@wC7Z*QK@S=*3d+-ZJ zoC1TRz&E5TFG>z(v2Bgg#*6Sro6eACl5kx~RfV6~Gb0mP+oZAw=!-vojI@!s_>5}i z)_;befA$MYnxRHGh>}_8^Zpa((8`IA4aX&W^ETYR^!Ui52$nBffN2`VPnO}8VI2FA z7or~uq|t%TAh|jf&y&wcqP1%XmM`GU=H}!fB`lm%N@cl!LhGB}_@m_P9*&+^6`?b| z>b-;mE9vctk;~iTQ+cKuj*GTr4x!Ioh%hI*-Kbz~>co2bFynF!cO|oDPanR{nT}VI z@it3DZzHXL%L6IbH*)z_t_g#UDRr zCYREoJbWItYWHg$q{$-*9YqdTKC>W|VoM z0s2Hc;tY<4X(-H@7NM-vH=*NVscqO!oZ-@5N|*BRc|=1ij;w23Nli_Z_ugCv7u%-$EF|m`={!D3#2iC z&r8Y0saPJ@H7IGg5Is;$YmTNHD?hhoqdKhQvjc#Ftav{X=?a<aU}XV z^=ON$nAloJVsGmn-#P~6QbQ2W3DGGmQv*oDKP;lzpXLK3GSZT!F&Tvskk#d0Wm zl#=@MQM5vq#xpo6_zZ=abzu}C&@|yC85|FUz_JIh-6X?DlA`EDgGTD#_q584#rh_o?rr9@H1geH2+j^nz+2a-fn!UWCfjC)dZ zTox>-4oD`Uth|9e)X-~@Q!ma4UNO?1N^@q-N%PM`G4Gd?-p`7d+O9T7nF(sN@ZX| zhsmssOpi}hW2ArhagUg?2+(2P0sklqDw?WCiPo+`s4t@$EH5I4OPgYMx~`m1*SgX| z4xh25L|3DD0gw}fD=8@r@cB<)L1jglpZ#(j$yAOFn+~ySPbaUrY!UCj;d~Y?tUq!C zlfQdJKp!S?#=`^wjzn5+;rqwGzT-H!a_HPP$FW3AwW@XraD6sqW9K1Kb2fUQ;tXk~ z2Cs|tRK0+PuTwmqcACOA&+fvJ=@ zZwD^SB=R79L~74IV?~=njJ3A0@(#J2Gj2K53+8bwX}0YW zi;Z*8ONp+PqHED11A!0%%N{(&ckQI$xXhec#W(-sDz1FHx*EY}3{Sh|c@t#v?NhsP>AF-_ zhWYA0zmX5V_d-llACf+b;uX=|ytS3jfB7~(`^7(S=uqGBuP+2nOANPnBE$i0P8q^? z0^_j|q%&DsTic6Guz`ceD>!wsVnG4kCtW!`lgOj{t2~3i8B7_>aqQdlbZ2nJ>5ru- zK0>}ZBR+H742jIHsc*b1359(8!^bY?^Z)Q#q7i>F-o@`ig?Kta@D1tgm-~wzjUK;UoqeIPR$@+b0ESvk-WDE@NX`l2Fw$uadwSgTR#F zMA8PlNxG*uLwdZMd_o}-TwF+Af8;`g$ql$}=9Juop{v~R&hz;9FTaJl+7cYsMM{aP z2;P3>*?jXquA;ua^tf7z%vj_fZJB^3BT-8H=*!2E07eK7HXo+1Z?I_0I1C)OzTwG8 z90ho{>&k{qGLIgpAy_*13}>bgK(2;%V^y}j9SC#Q(`7h>v_$imuJ2!(ihJE`o! zQ?oWLIEcRCie-G~Kd)x~oEl71=OgdGm@j?)4V0IMjvw}|3Y@+DKsMGu~_q)idVBW;Sv}7o=8v^pHWLRu#8NutuPJ+IlGUZ*u#YV3r^il6&ysr_w{Spf3SzwT)qh1&`vzC zC1mf|joX!A{KOHMm(4_!_>P}PTR=9M;n9aT;MgvTp-A9K;J9}0$xbfk z_gCRR6K6A}7>~3mLQ2WOgK_Nq`1Ux2Vo({qc%-@pbPfECO#U#ZG}^>*S+KB?<4-kv8CQC7HC?yKiuunvBHIDyS*F;u!avw!S|TOFi!ug*qJ|K?HOH zA3lrH+pi_?;Z=yJ$??c7{09DaEky)Q?AMmdSUmPj9AC*i?7WMWb5sQH04k0C4;${FTN4JImWjvOc1xwD^a+8*~ZpsMuMBcu)pa#lC{JN}Ej)y-)W ztt$anqRp!y`u*2Z`n$JbTr{I#W7AW$~y5Ain)~DdNq-6T#7oQgd@^NA|gJ5A3FyTIdQdZ=}PW> zxRrsyEQY^~K*=ofSsUAO4Lsk=F|&hARN|<>RgNu#xr~KBG7a5-CTw7;Fj;9+L_Y7Z zd2XX`=9CfiPd2_#5Rd1XJ}pdXxqn=bMN$3ujXI>XnO*k})Rw&g zRe6czypy2ThA>|<8+}0q!cYl){(RJ`6W0im2yVJ5keSvQsyP}OdW|ZReV=1#C*eCFZSj{`$CGKwI#uy|9Y_CeCnyBLNy7L&S4;N z2s`Is1hh9G`4P~6%qb?&L?41TI+m+gITwFP6N>f{nVDV!nC#l-Xef$c_wE7q?u$(z z-bEB*bWT&%>_jLS54?c26T@{Sx7@yu=9c(SypVSui9a&kGZJKMkSt=1S~=r-OoapI zAz7Wz+6cw;N^`u>Nw{C8mQhkG8RZ?0cRbpuAPuL zL%Gr1H-V+ zbVwiCi`CvY>1x?0D{X`jWHTuqcz5INFp~z5tKX^$CAA0yOp^(9n zrRA@fM~8r1-r=Xe+QvN(92#kQJ}xAh8NmotVxJSvbwlCNl4<#@ zjjD$+UTK**B_tBf~uFt(LH>bsCmTm0p(&FtAd@XFXm5MbGoU){Kq|NFxp+zA?hg`#7I8*priV@nX6 z$FS-J<9TeWU03?;yn_*}Le*YbaW~S=lF{%c`j;-fOJ2%Bby3IJr3aOfR`q z2bp9W>0}$})M3(@HY}@y&hBP9J6q`Q>m;3s;aFbGyQ-?Fs){&{IFiz3>%pCL2g~4@ z`(VL2P*RCwTSWJ5V0y!>WA8=?GFhAE<~XG#CY4o_NVI;sLlI=M4*&g|9sKM!JILjo zNzV~NQOOMKMYD$N+&3jHkJMW)uk0wme&x9lwlaA7e?%QiT%>a1U;&NSNau2tOOo}6B`F+A*r+T4yqnT_m#Y|);EBnnyBd%G|YxKeE|Oa zQ`oZ+<}4>=IP|qYPA;I6D=)*IKNGiM7F0Dtqyqdw(2S8u&5!QB!kD#OiRD-%GbuV_ zz0lo)+P;s_o*h(X6Ep@xOsi?6va+5)FidmHUV1AUp}Yn(4et0UxGr3DC3Zm_9Ba%7 zAxNcc{_@vm1_p9maA6((fIg0FFsCt8!T$X*zVlz3dHC@*q?`h6RM9Yk)no?u;Mx+! z6f2OZfHNj>3WkA2(v<-_@1O_EUV%=X5=9T-A8^QYx5D%VuxK@GehgfP{Hz7^&RhgD z7D8z?7(Rw9j&k^GoQc8}6+%%6mq5cDoRyan%VmiTbh58y7v_PjRPBF|>4wgMo(}BS zz7Gbvp}z}iX28{-1jiw;^HCJ#_zsUkKtAvC=woekcc;1h@@dr6248v;qatu@mxtCJ z<_ACD!kz5BiM`8AID60WgE0Duw!ls+iP$XLsx&hTQpk^kyRj;CTu!q+D&%@5A zVbeNKbu6ibcYg)yW}@Ep3#OG-p{VNc1mdILTVZhR*x65acZLfutY_)63Jh}`uK6!E z3e^reJJbB;=3V^Zj{U@w`3abu#{ntP%~BNAkDbp!Kx+W%IRSC}2$X0c z4<%T>yppq4RZ&^#AL^4A6$J@nBrBu1GZ%qv zLo((K9^Ld7{HKHWL~$^ON?`Ufn6ZeyzAj>WHc%0Y5(q{n+(sb;`MgU@OPt+%21z6> zLP4ECP(z$dCAG;y;7OQ_!_&`o@uUCQ%Flkioo&1Naa?%{q|DLRSFo~uWaBNE0UbpX zt-zhflQ`3*BKnh`=#UxwAygaFqipXwwvu!n5y5IH+VUJ*z|K{W3`9@yqt#dH(G zrBFW$7Mu<9&+)8hsya1mn~Ant9FdN=4mb`}HIjYPN7%IOaoV4`n~SH-V)pFC2%$_! zbrXfOxB~+@9)0vMn>Tecdrk?97L_xtF-#z+9l7?Y7!txO10o$sY%s^x?S1^=?gOlU zrh`P%LQ%xnVF6R!6hJpiK`OYm3x+ZS2#iXcVqy*{rRq8^rWr*jQ&yn*^negpnLZL- z8%g!=#*G*T1xwC@b6*eB=6hwyPqjKz zyhb_>J#F5;O?RtjSxd#i%6TOB1?kGW-1W#^tR3iK$)a-z1jA6cmkD$cAc!X{Hf-o- z>()N1D*ZIgiqg~+rKUPSD5Rqla~sIQkBM}H;E0t%f^9hr#`3haCE33(#xt9`c!vo!EqP1&@)~|i}M0`p~YG5~m zZI5GT`_WAmUr zwFeXhhT|;>C;)gdNuES=M9{7)>%ZOQ4GUC)3i|?F8llYdG^_7 z_~RdMW8J!S#1kpfd5vUR;+EIL+dl=1*G`ezCSl{laOW=&U579YLBJ=`6&qbs2!(=_ zmse0(QAt^O8KF=JfJ7oeS63J9?d|mS_mR&#*fwMnS**N6P3?3pxbRKPm@%~_J!Cvt;hR{p z^xR_-ufNbJR?ptk5@%m)eA3>`rxJY!|3+qTD<#!I6h(Y(RC9DR8mR|9l+V~9$1w?4 zEiYKrUZN0!^uQhl4nKmXNkXM2W#uLO<3E0icfIQdB9RDwzkl4M0njv!*|XVYZet175IEU&zo8Zgb*l-g3srpva*t;OPBGQ*S?ko3l`GR*+Fk#7rLR5PGvaM zyc@&tQByl(-1mJ79u0$uJezj+aj-o(*Sn4H7Q(QBoS=AOG=FTzTbHn5IcE7(`VkSJomDiE!R|Yw7Ch zWZ#}0peW>e`#cNR!qrSTQcVbN;eXS&QTh&38isH{*s+ayj|z39@s~sdlUYkjxVHh{q^tU zJ@0uhx~`uTX^Qaqe5_cplINd)p3e3|*shA*-s*W&*Up@nifiTI{u^QQqlAMH^0{1n z^|gHB6Q3j$3SpWCfk5DxK(+B86bi9+?OJqQ=lLz00hd%VO>D4_S+kd57%z-gAp~S{ z4m%DEvg6<&+1%-;nvHC)z{>WM8QhN<&`>p{f2`h*NQow0iJ}^a)1}DJBp_Xz^x$3u z4u)T)v9XaWue=If*YW%PCrz3ns;jH{)Tcg8Wo0=bpNo=9d6uwLZ2V>+*MY;kVe_Nt zs>H9`EL^yV_rL$|@cDcghJoMjKPk1!=kxKAkNiFFde;pYK9xYwq_gu7`}b{qLDV$? z^bY2DdTS4RTjK>w+9|*6NkdUhJgck(C>e`5A&{z+peW-#TM8P}2u~Ob9r_W^d>NV)Pj?XvsYKf|6rc&neW-Lvj!fY(v4u&>UvWoXPp;Ux1Vnzu!M8^=vHE)zxw7rI(_p0>jYg z?mkQ+F>p#INg*JWvDvh%kLUOFlg>^)ocYCqP;`p?lEH!AQ$n21-V9G}>GrH< z@};4gjf7XJP6(x_s+nUE$1H9{d+VE*+?^Kg*Tu>WdgD}qs>({r%ge{y-2BU5?&13D z-@y$xypzv;?lZ(+4Yz1zkUJ_2kj;x4-?3uYK)5=nhI+4;PolY8h95`@b$fIB~2#3Se)z`Cm%XSn2PBzWZRHUe&6$~zp z?Wt%|LN@J5Cm~RTBoGJ?4o4*<9TR`JbM-+a)q{F3!SE8?I=*VQU$4y{ST3X6yKJ!^z*F7l< zmaglRmscQ!L=h54QN1)yGZ%UpK}#w<0;OZn-F74=T6_S3i@>v@`Tf30w?kD`uD|Y` zw6wI4$z-_t>T6iBV)=;gxUPd^+e7b9lo{tZ-AsQx&$fL7boFP3K6`m##3bx$z;fVg zK%+!@vrb`MBj6?N5iNv@qWO@n=dn95&`&m-9W|@}a7=~ScgPARU8re-_kIPumWn}d8{GeU*!e61iD?)^PMed(>NRWl?Qd_yaU4oZOON?~K5voB<%)}0 zblsRxdV%8JOiM?K9R~(UW$c$BVLZrUQDIMGb2Q*xz)Xo`T0&u2ri494lD)nxu8_#_ z<^($(Aq1Kk9m?L+)zw8`Umw-gr#2(0ZQJzq^&(|qr@5pG%4$%azK7tRM=5cWr~;Bo zfWex@*ehP`k*cI}NQ)K)m2$EHXGI)O-HgRzB$LU4VNc-q2N~~*LIH$+ucL7SaBRDi>mowa?(d2F#MH( zf@4d1dwbctcQ5ni&6_e;o6*qK)y1w|yKqr(q=1@fh@DR|`{`e>WL7OrGpC~)I@xTN zgUwIzz`c7&T=8*GwIPKdpU-347LIf3Ca!(^_7aQ5aBPXHYDA*tjMu8xGmvHLz5#k; zxe?LNFHZ_uoT$U=OZqzog95 zQcCndC8{38%GzWyS=O(AjC4AE(lhz-@c85FX>DyKZ>vbvfLTkC@qV0K21VDAih}9$ zQ&L(+Nl6H;bFY`;DO7?)K_Z9^4l+16h~qdXOe{DVxUS2ik3LE+o5RZ6ghElu%Bqjs zFG7IhNcOeHd1`A9y@R=ziN);1kgkQd5h?)E3J?bHxe8%vAb}t{Rrr}sl()+{{8KE- zCHtR2J#Y`{f!#PxAt}UZ-)$1jjADlBu=5VCEm^<*G4}4=i#=>nJe5c!68!Oxe^dX&DyT+;U#Z(6gEmIDXay=OnY{R2F|bvwOnhxzB%FJbkT|ASaJ=q8q{nYP)mtB>dR4v@*c^xS493jw%} z1#-wzm{gKXEsWtC}dP>4hAe zrkyAh)$^4a*pC2mRvPe}J$*jkl)ISRdFLJc_P75_GAl^uRYXY{uL^YVwd*hB(lsk- zs;i=_vy+~V4rWzGdH-8p#rZ22vAjOa#`TZW-J3)p(Um;maF`1&xDX)(x~@-ITV2=X z7r*#94?g$+*_4fRRn9%{byQZ>k4c=)-V7Ue_0ie)a1ks0{H4P=vt(1Ql|+;bNzR;=KfYp$JA59yYc7Jl)IpOebuNo93VRA%Xe zeBuokQd3!h0&GVA&3{XEgBcOBV9Q-G|BBDz>Zg}`p^$k}FIT)1`? zkO(hXNuL^xMm{PajO%hyx`IZ+#|(1=l>pwt)xsr&$y`cV?Ub-Q<4`x)fi|$0Tznsy zR6Du+Ahwgkl}=$FsNm2jgy)GMl#xmG#PDrOiIftFiz{8EbZ}hK-}ALw{vl%l$?9+xd`78?VNS(G!Ia$aLO#H}oyi4=!vrd`=h zmns?16jHiQRx_|v16S3Nii#}y{vZ+3MYuMqYooX}n(LstE~@liij>|9iI7L0o)i)n zfhz=#P_PvRTT!u99a}YUG#^qAfF45VLCi=avD9JWS&g=iPX6UzzKUg8yzz~1I;p*z zd_K?5fBrLWzx_{SEtOPS!i;(NDx%D;k9v!H2`wGn-1FE5Htg>L*JbIf8kWwgXJJz# zpAG=$#fmWZz$Yz&)v+QzksW+z8cH2PD(;%G8w-A{qOPUqwC068kwBK z(z(lNnzeYy08wdXbD{B_-a)E z4HK0Fd1B zeu0Ar5Av>ey^HeliV62=JRav4zxX*n|M|~IW*lNE1vgp=mtRYEpo9B2K1e!~qop^_ zwu7C#`+e_c(Ir7zT3WdLk_-9HcfZfK{<@0=wPAw7;y`2$TyZw;&EFxOPM|6oe)OXs zU|D&tzWSO;??DX?4)UWP{g4}P{68{zh^GZ88Z%}tz%YEcuD96F<{Wk(igBPVfpt<9 z&0ao`(!sG(2t^=-aDX-qcoujkLQ!|?2{JhgKl*W3B`SgvOaf@c$dkmvDeOSV5#Lh@ zq7uX$F=LJPEaY+Dk7tb}hW#9Q9Vx-J9lq~tVee(v!1kv}Z+;Bd)o^8;?|tvPtXua8 z*Ijo#7hZS~RaI5TRf$~JrMI`2O`A4x(@no)-MU9eWnBi73bql1H+>LhFULtt>zj1-@e_xtkeA(tih@E_<;@C4jpP{`}S>Y*|LS^=4R5FELmG4krFt* zFudv=;8?h^He4w=csRk1gE7+Cm#^E*l8{mx}fU{oZ89!73fnr#K z0K-RO-dcWo%iUbQat^({eSGI9zhqC9bRqvz4Mh;W8HTn0|Q-{rcTz%GVtWH zJoWT57`lefXJVROUNtEt`Fx&SE=w*qvYnZnM&1Idr^BnSgLx}q)5Em2HIsL%X&=;a z+%r<<7yxELnZ5{tW2cZ#7FAO~(2t~B1LD8~z{QTH@R-@n8|)_h1uNRP&ky)e@uA`% zht?W-oWh#M#f4#Hnw%6GrS|L??Gd;*?4Xx>LJ8K-okf2>;tgu)dfv%P&xgjjuz4NU z_NTD=yHH$-rYY!}KvgV+u!hd*x&qtPux*LsfGbppl*8)t;Nq*GeojGRjG}l70SnLN z9>?aXdmjWl&)}T3IIAun-Ib|Wi|3N7p=mL4-5<$rdy;ITA5|!5nm|(pYAS~!atPsF z)0G0(1;0UsJd72I$G(~^O>{UD?C+E2cl5N)ylwQw|n<~-Ww3l-H-qA`zXx^ z36{-6Ce3=zrYQCj&)ZI~29qPMhb|;<@B% zNDM-}&ueEU=@Cm&ym0Jb#3OgO4E&*y1%8Xttyn_dbvz%ri>@NQXbrgsZXvqu8A?kR zqxnkCNFV89W%^MRP*eeuJ%B9c9LNE`0j>~22|O0+XJf95b7kF0OPx{MGDYVpY;yvj zA#jo0ArA2MMJ2Sp_9I@!G`CQ(Ob$P47*xYsPe{MlvY>?0VmjEuK|>q1NA{kE2I32e zA~{vvtHo1R?X~CVnMhI?@N(<|zeD#jtg2giJfRZ~!euz}sJt!*Pj%EQ3@0*LzrHwN}GNcJU@b3g)jh<*I)sw!IFRwT{v^~M;L z!eo(DMUn^#(~DPzakW#jU@SlzOS&PKfR$K*g!kq zS`en|iuXgXwZn4!mm>4*N7SlK2@L@PxH18z1VF%&LWv9MPry=s`ZjcU| zW&-R4Vla$21tWnCd=EHBz$G!i!VjXm3B)wkx(%l#c@zX&=;g5`3!!$_=%gtm{1aC8 zs7x;6h(&4&)sdjC&=fV89?}Wx3PXuxM(e&|j^ue)GMIB|Pg%4kZQ}V;Me4#j&9=M@ zqKQ5Tmmfr9Z*?O;p5VV0Lv?V1ocxCaVsUl%3(bH0AkZ4-oDN; z-*KU=mRwC8c6I_)7hV<+ICcgr(~G97D2m7c8;k!P>#1x6J_a-^2s#3iFKb))3C}Y? zddRGNIzS>B&|G97%%}uV1lrd1eC)~XoSXH7YcWD!pQ6RSDqvxm$(m|ErG_%xCO5JB zDG)5ADJ(8Exu`BceQ0XpaE|UdVdW{)>ItmBAG%u@bseLsxS=r8$?=L>=M-w<*!cvy zsez!4f<+BRAx`lhc-{mb0CuU0!k{7ezBtII)r~w&yLax>pd$r>sI7Q=8Dq3Z$)>1s zbfQjSBXKx}Thu1q2AEfBvb5ZXp@=DwUq#}TnJVYj_?c5;Ol@zwE+U^p(?ckBVIOKV ziQ+ma=@deJSEraBkD1Xa ztmh+L$fk)6?jW`D9B7<>Y(EGA@ji^s4m2}zdYIu~AV}9DmpF{72~=-=^8_$7>yD{F z4Z_Beo{q4z~4j|(iNf~7mQddV)1o;8I6<#il*+lSfI zGzWUxM*hFJA2LaVbcH2TC}~E6#9RL?FZWU5pMr890!SxtQxwvreif5V*mw_(~6?HgG%V6U}p7UgB zHA4f%41hNA*<1h%%T1<-^l_4Ac)0i|uM_m2p$dGeLR-pa@)m0WP97fkJp@AVns-BF zlmI@Vz(5ziJAO@tZzhT!nE0h$q7XtM6FWewZg z^EsSc7CV>4%4TtL8SH${``of{9UIqmj+o4a@Xo2Ig={?vAw#7fQfCWk(u+bSAH?^^Hrsa|3p+n_$#L2yqK=XFPty@_0hIU)bN- zk6@E-s;^DQGi2i}n4vn562n)DGvji8W;{t>_jW$)E+B|8l%nHQbhp4$(Y(+Fn{*-m z=Y~W%U3dSEr>+XZ?3JD#KYVB0bzu5JSo>yp`X0FKS}!)ov5(Wz;SvE)wX-eAWr#W! znM19_;xVk`Aa*K-n@&P5jbi6eojj^^P^F8IE{ZErg_oOJ5l6fRTqL&R;s7pQ{sgIL zxT=Punn=SBz7T34iV-d$D1wkRJqK0O?>UVY@AG&*bczBypM|{}yWPt~d?u79w%vmJ&X}aeFO9w(@RwEP}6&YTnyq$fQOX&Ok;nX>4y zH3s!C>2MWJX`M%gXgT=&h1jDak%U(X?&-h4s!O3}=14y^@T7Alfw=$ols)qdr4_3R zwJ%>m#1VpAvJEF6Cs1a9U_X-QhOPO5@e>E&A)$y~)2~-%lHKIfJ(%H!p$$YuXqdHY zxYJojv}-@FlQRp+I6SJTh2$G*fk?%_i~m=SqEsK`A&z%w{QM6_jl|kebL*YqLCvW&C+wTUv?4v?KhtE&`ocUxzelG+0%;Fb%4lV zD>ZI{nIVnYH6_emR>#a~XVFk!Pf1A>gdi4=V_6m}R;)x(6n5_1$)ErHr$X*$8`pKw zG>sc>csG@WL>s$y@8*$pk06AC>$)^FG_ZWd%AtJLZEbD*?xvf_=ktY9hB~@#Fn|7h zKKz0AfrNZMM=Ta&uz!H=o?e<;53}RIUbgOC&+b8+cCD0DB5Xf zg*9El4M`~8gwnhn{l4E*+S*S^T+zcy|qxv{a{ zhu{x(&V9pRcbZ7;8cOOfU}VP%EIUPX@7;VUSwl795g}@Fj0=lle;rZpMh3Sj2n-Z_ zX!r}6cGMByANk!F8E#h&aLWuIJI}v@%);}$z%E6DbOJW7gN_4m;aea+0P#Mey$6^j z;w-NVvufT<7S5YPLqh}MNQ7v#q)@#~@X$jK@z6sLVp$eG(`3%vdA#+lZ$(N;OG^v8 zckd#b&0<*=wryis7D^%fx|j>vb>&c@E5k7G`Mi2Kp->3Z^c4~iYUsL-lwPUDva(W^ zE{xNrlO*P>Z)q0s;ihkcP_bHjy-$#^X&86d2&}Xn+ILm%I4tsqVUu` zu=+JHXO*Ys<9W_n^sUNsGfHMj>UC zG6q?W?E>#xhZ$tO=wyAVLQ7eMc0XnO`GkX@HaG1eZ zjDrUcvTN5aQmGUl_`nCLtgHlJ=gu9pw6tQ|7K4L>^!E1B*VjiTlOdH#($&??S!bO^ zcXt>4{R6!AwXenJ^I;e!x~`!pO2G>57KoK6m&=h(XL#a?$FXgT*|X=++uKWfdmA%m z%)l@V0)ZeUB_&i>S5sSCi>B$M(<##FH2wYk3=R(RhBv&C>C>kV^~2ymKW(k8JhO2N zcRs#}_0MdkcQ6elRhZ~#mW!Fr6V%G_MW&(X{#Vp~&B#Hckm%aTK+6L}%6%9C?Kvc` zX>D!mKl-Z^-4u902wF_PJ|j8UM>cVoK-s)wI$Ej*xiK;ujwFaD9aIF`P;NC9z3{hM z$fb5PQO5IFi}I?GQm&JwT-k4t?a%WYv5)VrP+3?PFMs` zSHJotpZLTlIdrI*TW-09cf8}ead)tk64Nxe{`z;abLUQe`OE*|lb`xDnN*6t-afj! zyXfrfWcTjf#N$a^*Cr4MP*YPwQ&SVERFZ*#0iw|;ilXrN6HoBmbI-AA)hfREnGe$0 z)y@Cib_aLd{RpO5NFX{L5j4H^&A2y%1!IP3Oa$XiAaT?`hifHAJU=`&T#kA2k>?ru zDUN(DogC?bJ*b*M^VGDvf&S6XGH&7&tZRpW`*ol80ionb_wUAEGRsRfJM`cke5r04 z@ixqcuVK`Ju|O+G5B(_P!SJ1oi4tWj6g|2%G)gd7EK9gOJ*|boLR%}%%QvQX&kGbp6(beEr-~@e?RNjuP2+$5{X2ZF=HkT z4GpYXbr$>g?_=G%b*R3qNgO+kbn>{4g_QQt_lBZhM`^ov>5-|J zy;R8x(y_=TI|zhz6h-s`ca7D`iAo#?xJ}i>b*5hrX5uYanO=-wb)m5WD<5NCBF0J< z5W*aiD8mUfyz7pih;VA*BAG^*NDlTM*w4Lxxrh4t2F^bFZ2W#7yLa#A*=L_+$Byl! z(`oAK>RGgC5pR9#TdA(DAruM?S;8{81GIGg3Qes-b%WR~_rm5Mq0asSimH*zk2vhc}gNCwKc0)x^yYvRfFsA@292Z5W9Ep=JChZlSm|pMoO78 zdk)pr)x=^k`Ui7`Vqp`@W#rl!`VQVpF4cNusuM?^s5oXLccgS0;omr#>6GEpwGoSe!nM|4u8#eOwZ+r{OwwXO^Hm`gA z8)=#`ozl`$e7<7~*t*i9tN(VY%ieq&g&KAg7OD82Qgh_H{+(lWMf+lrKuKro2rLae)+=|LZ% zpr66P1dlwriSy4}j%n18$+i*>tUB^QHI1sODypigIP0vlky6sr+s5WCx6ync&r?r5 z&7c1GN7_4+m}L{(^c8}9x|@9JFyT@iU008KmdA#tADbp}VniJxnkf7wgtrH#s3@v3 zR7HH~byN-pQP_+=x=}-!lL`}uZQEos8C)+tSRS|;FBiwCn2h670?Eyqp6=l>>8x`&|w-Im!Zvh7wo?k;$c)xFO(sasH#pXy_tMuI{m)u zQR6D*6(tyJuf+dOi}WwnVejcgUp0fu%1UCfIN59#pWjc(^jdmo!`gg^h+**NH(o${ zM?bxNgXGvoS>%G_-m?&b%F1e%t*m14@-z|ipZV!e|Cp-%rnKOByc`^3VzM5C zcMFA2_=5VvL|;GYfqg`33bUT(qg!N8JIhRQLFoW9(k8#V{Vv|~_aEZQE8j|W?2qWp zzrY>vq4W;oJa8kK{(naO(z{T~j&*JnLL=at4L~-V<4|iC7XWTonDqKtxJf^z&m^18 z0s_-8$k-Vo!TE&DAe*1x&Az`r!37sCr*T;$X~#uo@&Hs+RNy!cJv}{4n>LMxg>z`D ze;!h|Vr}k3n|mE~VU517JBZ6>BDEhM^PV%=9FFbc_nTCeT*HC(uVW}X=<7?MXl0Xf z?QoqONQt5-n5J1+-=4Z>eKawKzc2nhoIsNyl5JZglPT=HgYHvZJZaNAmYN2WAWlJD zYe#acVX9x%3`L}Rw-YR%kE#dJ!_&AcxPw*6c2-ea$f)_^$etr)k>qelW0Aw9K?Z4( zlJhRO5LJDio}P7-FZ~W$#Y#*gNBYn`q<;JiYW;MApMKqOuTfqWWySKjxC1Ft-`+z1 zElZJCs04z3TARBu3x*Bbcr|w1~5z5NS z*t>TR)22;h?!5WjchxM+*Qc@f{0RHNuMt`hU)fw{o&7a5wPZwl-2NolJ2zpRJDY9E z7@MEp%gpJu%%0VVFv{udd4}!Vo6*ej2~TbkF9Eq^c)9!IpX2C3U3?v*VvXZ<^f`_` zfARf<#)uGfbaaqOWebJ^aRB)9iH@7B#F4nt7!$qV0P6V~oH{DGg%rG59J1Kt3n_R_R7xRic!y1moC>1@1tK#6R7J|Ly0n@;h&5$>P~aDN%6fIk=PN zjuM(%2GPwKOh!^1ueh$R>*%_Us;Ztp-muqbB!J0Dh^d5SS#)=IW91#pfCg|2(0n{; z1Cu09LF()U{$TjE{fiJq+lO6Qx-u5#nZG?q)BG^e&^!`0Jhpx_ zQYyUhb?2eauEIXl2hNGt0M1|?l+S#Ok`#9RtTKrcp1jWMH ze-jn0&+@>bD~P2u0%eo)K@-FBF%E}e7~UkIzOdf$Cj%jbw{hGbD|m5;R^WHz>6l61 zWg$+dLkRIEAw(pbh@qNM%tGczMbXd$RZ!BzVChT_meulX*yKSo$%CSU4YGqyIS4oe z(ea^8D4wUNhS|6zu^1prj64=Del$ujDZwO!jvuvf_9N#n!Qhd^ex_YElSo)nS-za< z)2fI>LR40iU^JGaEv-jiHVu1MJ0QG`!XZe~*?p)=5Ur*h|F!4fo;#Df?)wW%mn>!0 ztXcf|&wu8E3of9hrnb;#F=EdPAa8ZkGk7_peg2$nXmefu_&$s`LGE+P;J zaQ9tzao%}rPgs#nXe!#gTCB(Rl7Hwfl&bGwAN(I=-v*p{pXFC~9$;^aj_xZN&-gfc zq>)RukxLvRR1zQ(2@gq(Kp^0`B)x=SSr!Km93VcJ#tdo*A^sb)Fe$}H5FO(vq8yC?Iz6!-4$rD%-jWc8Iulhj zsHlh%2n0~4SD-I$z>TFDe8*355BHNkYdSl39ipnL6h#qq_5TR~pT7}TQ#g3w01rL* z5bt=$bqov)@YrLI@z%G#4bwD7Z9^)vo5S5d$8}W{8ODF;KHMEY!>CwDplUI9-FXM+ zop&A$4GnDAuz_?s#k_g*Mw~lQ3SO?MXfm>efgJZ z&P?YgKfRT_(uAT+{Ly>WmpjPD4-t&|2p>h9v5NbSrKU~v+7mg?iM}s{psTBk)|L(w zMW7pM3to1o?%{DaW8q}ua9!Y6LJ?Q{!^ZSPe>bVV9YktIQ6~zURYfAHfl3HeA1P8+C1F$fG1WkkZ;6E=LURm0E! zxRLyu--#OZBc;T$Jdft0nbqwW#NOF~anXEKU1iVS76u05oWFKCK64uB+(Dwj)nqdn z?!WJTmMmF9Wo0Ed-gqPP=FJSr=pML}n(}Lq_5xz@6v6Y}PHz1Nu%7)KOD_5| zl~vU|_`n0a?aC{;>Z+^xumAcHt5>h4s>)j*xv||?Pk#z`a2Mbpll|CRufhNJFQTuW zi8}pC;7R~2+u?~jeoJSsN}$|7jvg9gKq`768}P{E#~R4lY?e&MtJth43aYB2s@kx1 z(8xjUIj~El^c-P5hgcWK^_*j+>y0B_HwXm$qh8l>98#$?uIm6|#9B*L6%<9qwkhu9oRTCH4c}L_@gZQH}QO6Z(>*Z-vRUdkw5=xrr zh}QAAnPt6wfPSkN9|{hTE-dmTULDdhe3TZ7`A#-nRRojHo(}dms4QQ#s_?+%&;l1g zrt)O|?+Jw8q~zLjS+ryp2tg{9$8sOT(91Ejxop|8nFk(xfDe7>Lu9jAZoc{VTzB2| zl$Mr`dGDrCPsl%?zP>>Y9cp9RjA;nn#M$#x%=$|xo4$tIZo8Fp&RI=kV8&_sI-27GiW+Q=fzKb^R0|>E<t@x88m2V_DJ#|R`y7PGV&{`& zvvJa?7^zg8bSh3d9VeHKV_6AYH;t-h@%wBdVW=$AsI4|>toKt}>n9QKBNn#^1V)ZC zDWRvQou(N+X3vUJU1?Af6$Jbanwm$-4EcP5=0k_*?HWYWG&DomhbL|N$0KdvQ72 z8{2lVESqf3BAdyP$>z!BES!Rr*EJQ>)G-VV)6mfk4PDdFv?JCzRE4LX+QH|){6}23 zY=pmQE|;UCOy?W__D)L6BQQ*A*|v-2x@_FAhrj>ik8x}lGom`c&w>5pl{PR1#3@+V zT7VxLKJ|xYK+{uw+X3@F12R`?Y3=Vi<0=8{o+YYL#;5*+WQqxA&W1psc-_P*{A{d5`=_|fW zHWTK5fAe3=o;{n(FMkzJJoYF%Z-0O<|M+_&)QFtbMJBtClJMGN+EH0q!t&*Far+V^ zzqy6{BNr0*$P!dl;mvP;3*Y|sx47`a3z;)#F7J59b=-L4@2RM{gh+4!0bi6YTlaCO zrIT}3FQ#GDGzOeB-Oq0&zBmK-DK*o->3z?0>%J#xX=$aWr<-IVfotm1OWeza;nI4gw#&4F9!j5UN5X5+RjJ z^6K{ygZ)4b>FZS)?wFChe}RFZjf$~gDj1!LsA zV_1IR;ja@n#IkJua_=T2{voxxs2(=W2y@w`qa=w}75;YLvwZ)DcaYC(n0`G2d>(ja zBGLw?MpY|Hok8GRny#!0gw2vvteI5b4#L$dPEI^XiKh9m>eup{^u3&uiqk;!q!Yj= z$dkvV5xbkW$N=k7Y2fsf+Bpf0X3K9y1QFWc3-hMW2+QiRq{43qv zza|oi^0lvhodXB<^Rxf{1#j@pW1*Tyh74v`mGZ=sTiLXEFH4rp03^1PKvR!37&wDz z03zSImcaWiL=+q-6-D7yuX;6`Hf`d82Oi*xE3V+$Yp>y(-`vj~w{M^<`fu#sVPhB? z3+6AN>9X?)1OlWINjf^a=;-RAqa%$OS&ArDW}Ec00HGQPMZ=ZeVqFw+DvTv@ijJUD z4OLN4Re^m}o-8RPn(jH*ju?1~ptGZo|N8lz#0D*Vfe^r*z}=I%{*(}B7#;?G=L>2d z&1Ed&ozLP6H=+kBPV#|CbR$AXX+7IgeKb!}AQ%ajnUo|?*P zifW=LCelq6oLGyG=-6`~@erSSxKiS}auhQ&xT9=ZJC4i${`PNd+;{-p2%@N>4fr;Y zo~X2eDI`uo>R7<{gd#2pM$Lt>-WaitrzoHCnv+)90HhvbkU>r+XJ)3b|5J*IIZRV^ zk*tw*e5gCaS5g*<3$E~D^34E)!BX0-Jlm54+|_k}vY*|@C6U|t)Vr?apa1Ef`S~w? z4#505^DrA#%-2=mw0#zP=T4NW^QmzFSV_IT}L1+`02uvt|wd z@gM(AAP``|f(3lz>)+)0tvmSIFK^|^L51$B`M7m&gvHff0+L7nL|HaOq+;n5J!Ofa z>Rxg}nZ&m36Br02s(NZ%YHZuavR!oJDB>sz*_<_Ul28?%c=UO0yy-!tYoME&1N@j_ z)dwbuDV+`q=IH?-p=!!&r9{ufdeMvsMyTfGPA&viri*h2Vl1U%Qgz}y4}%;fm;^X> zvrYi>WC_9ceQe6Ml5Lm`n(7Tgf6yyRTRoFZ(^>44r961YAE}ZFKJctl<9shQl$Ap~@H@S@*_OhzQgJo{LTU zp>I&J|5>zL-gDZF%*I&rEtHD$Mr~IzndCRW`CroMH2?AM|G{7X_5feK z^&}&Bi4_lSMZf=`l>kAkCv0H>x6fx?1nw)dH^AmZs6a5zR8jXj+1nKvM4kr1AI+U#ExLp z#I<4!wynptz4(;LcbG;_Oib3~ap)$^AUXVKL^!^$mjrxhOd|xL2yA>99{vNg?=Qrt z7rLxa<~(-k`}z0B+xX3mzvmtAcn5yJpPO&`JyP|flr2T6S~El%DIMB+eoaoRLR)(? zzSrG{apA9#1O23a_(R;z!DHH!%jNjZZ+=5Am*W#3{{+9gu zg~NN{?*Dl6J5LIysN5F-dw_q_O*I*am}FuHNOWyv@()rX%qY8+6gh0P z5eW{9Ne+*ECJ>~s=p;=F8x=uG!9RNJ&hWC09%O*^q6>G<3V8K(V3^*ZeBgJ50!*?{ z{Y`=|Nc`d(_?LS&vhI;b`MbaS09&?fVe{rq$DBWBb>g^5>MK6X_C0Bmc@wqabzppp z)c^C7e{9b&$J}wp9dvbd@Uf45oZsF22mbZJ-Netm3L>Ro)@7zke(7cn(GJ0sIa4 z3E-ZLw1HEksuc_c-~|M&_J#C+u=0+GcRq*iuOv`5XW}ZGl$ic1)>l;V^`7TB$1SA< z0~G}ampm>m5*39Adcnx7P)rXJ#=tkmlCJ3Gc9*V zyWrm6cvTSQtbpkYAY2O33Od$Y$CrQgTW*^_kE^b_nm_#E56qvx0KeZqbREY{qN$~X zLM23_N&fWbM|k5K&nH+p8*B}yJ3gXaJ9cbm-MUBk!WX{CW9uL1U+>vKV&$74)(cy9 zLRYJo;&=YpFn6WbuC7BkDoEGy%+IF;h4S^|d2HaN+8xpqhV9b~OU*PYhW}sSSxKZM zo64|p^Fe&RW7ma>qTsq3k371COGjl$&aURcx=JSJJ{F49t$`^R#k%xKu>8H8);){o_Y3kJlHyel9vl{5{ zj}wch@NH^FQ5DSjbwl5^EQ_0OzKPeo<~8*8bn}&O{E$Ak3jNMsV%u5d{IlSkS9=*b zeL=5{t^@ucwxJ{4{HY_(h-rRg(u?8Hb%PBX_p@TdZfdJa3HS{(O+^&5%}Yi&a>_yy z4cC>pj*D$OPp z6?W55S+%T+@~BBJpQWSy0Ka|mL0;e7%GJz6D`=)JE^%_~pqF)KFPke&+9Gpsd@~5> zA*7wf)}$wGhUNLfbv?`4(hE=y@1gQQA4W@-?4Ae6DtD7J1UK287%t@U8GiS>-w}yK zh?YbN_ygYVx^@wXL>eJr;etkN+os!1k+`^y-bj|gCmyG}tB0*yw{zEB5AfWEgS58A z=;{^J`vi&%(;3mopLIECdLfE$Sn@|RfE^0qrn7}&P^Umu8eZ|YnCn{}yAfGZQo`UOyRO7>T<_(|g141N9H;O<+m_gl#Bn52DyXV~-yfi=s(w_% zgOrd=rs(g_lFu3#e$55`8@Q=BCZ__YlsHH3hG!6b$?&N^2}aFua_}Irw#O-Lym)f^ zJHvdW#F1-ISK*^9YxL4|aRW)UDje+CI98Q&Ek*ZxHQdH=d94K#wWjJ<4?yMWM2?+6xPC94yBrml~$B zF)UW5kj(}GLIWLvA%6Nt4Kfs^b4-G@Gk^(x8m#WMJt-XDUepFOb9;=2h@*1Wmz+@ebF?66<&h%?J@JU&P6%6jDN6Wq`7X zIqFQPDk{?&=P_;CJQN{FXKi*I7@)bmAKQ^5RCXaHnQS*s<7&@xR#bz`pr;xk5Zj+3 zBts~wIl@DDWG>^v`Ggo+YaB669J@vs3HP|Ej{|{vw7pxgmYnN-X6265@RSlcV*zP# z7ZE2vB_12c^mn08j^sN#waHgb1kWov$H4;!=<6Cl(^WJ>>Bft(*?KCjc`D7(BT!&` z4EQIZh;^Y7ADU(}(7KLH?7-y9@-b4{j0GuOr0dezo8pP*JK1+Qj^oOsE-T1qdP$gh zn6dDPN~r4IdPgV_>%n~fY5d`7<1odJ*_vUmi5@C30+j@N2I25N@3VC52*F(!s%Ma% zF@wzDL8d~QAKM0Jm~z71!I65Ds@scX^&Vo4SOEr37NKSo95lwk?r(I4MM=90@HGA!>{FzS&3}UDrO+u_r(xksz6jBc+Y1NECHsCI~4h z1jUUEpFU!>7DMW+rs)`lS%@|*WJq#dT3QZq_)rH@fSmFj z)`Wd9hVC!-l9U(jlVkoGI&I;P;h7uch+NAck#63L*c~PTj&{2#F4Tkm6xUvPHZ!JI z5{(4$nR?;73|ZA|+rf6+A?Z{6ET6Z@Wb-7G83qPZboaz*YwM@ErGuDdQdU;M;lr)8 zG#|!sT>K%!Mesj(UeDI4BF$)h_ky569)Pz1Kg(yG>O_AA&8(t)=IaVRZ6`jDMAB3j zX4Qi7QAN0vl8)XC+xHJJkjx)9>y3ASLtoDZ`e)VRE?EoFGH>k=EQN#H2;6%s)!Gb< zQ0;L_NsM*wqs+C#eh&ZS=rz)41GjiC$4b%Lw}Hf})yQS%du8WUuaK_T{T#jr|4db2 zzGs#mDuLl;`j@U#P`L^(*G9S)(#?CNGu%S?47c#VVQV=n(}(F#6E5-N_xn*46~Et0 z7$1p5&@>Gp1f887yyNP{eDEW01l!@5TP|YE$1*a3IFOI49F^sg1l|ldO4%}z|2Ehoz&h!7< zJM$R3s{4+A&N+8^Z|2S78QbIC*al1r#$~Tq8d7K^N|lyI6p0qKO`AW0gi5e&=_7i%5^6#`;lOFk~GA5k}XpqXODGvgpPCmo3sr3nf4aKnZkNL2IGB?&q^Ite{N z!jR^dz&H35NCT&dI8Y>y2L2mJI7#(Dok%w3GsF0qAs})PoQ^y~b22l9O&_zbD4!oF zR*WeBzqBr*-|8A9Li)!55)q|hs!UC*is_P+QYIgOWn8MUv{Q`J#eYv1Mqw?<&_z zWiDp7eZ{^^p2>fz&r|OMN#oEU$B(zoYGU-1AO)Fpp6~w0GyL#Jzao>CxHT?Pir)ZV z1KQz}v7k+c(@LE9Lf5Wc9RLqwbd_%dOMKs_r>BRND_7AHl{sI?1X>6<)&7~we&uA- zWh!RLJY9LLa6SUqq-11doCh9!ipPKY68W5kn@Av}cmcQ*XoF9WG_U}O6JKydo*x4R z-~p{!HaIZM&Ykaa@z$-ZS-s|TH}j0aWD-Y2wJ=NWE%CaXw3w3+f*>$ifa0Vblbt6F z!a3PcCO}ELy9W8E`=8(!&%R95Mmo}7oW1EiLoGv6JL0wwmk-9q!bV8kToMi zW4!;~`{Z+ZHf-4N$wU+a6UHf1U?EAp$!f+-TuKC(jtJGqn++_>qEPV2W;0d&Q|hB2 z3^`@yD9PbNC%NyNkMip4dyq1LvfL2ku=#gDH+=e}fdxdIxC0`C!PCH~vc&g5oj*R3 zVb=${$!0TLc;OZjiP(osMAjfd<(Oge?@Hs4=)2-q;t4@;D%P|p_U7%k_Hp009%IkG zHk7JC2*(2+0{)SxjQZ&y4JaXI z{mT(244=%4I7YScp!~b)^@R+}vLcIHG0v>~BJsRnZU+>Ht@qaE9^X>MM+sH%XSiSWDvnM{VZV{J&KSiam;qt0ft ztY4ery3b#1$RTBE!c0?itI6dHV1V zvaO42w&U>O-V;3is`-j%FAh&M-2PVRSr8CgYLI706_BbaxNX(bn-fq%igG#3@F{K`rXe#y_QY%x1l z_^icoDREeFOUnwHo114v9^;KX%)WgekZ=V`fn`Z-OX4^ZHwxQ!UCS(vW$Mt_7Pf8N zZImim<$^$yFL;cN=Qwb%lT5CjEn6;`v@MxTny#)cw!g9+%TiplWlND{Q%N_iHN(S0 zw70i2Ha3RV#i7n&Ok$0v01p-(X<&h?YSk!H-Hu?~EOt6c>uzPsHRGdM4(!`Y)6yij z-tu{_yz+Aden2{%Cl?hj$`^b*FOTO3QId$#8&)Za<0u*$YU$}2%k8vk>g@!*{YR;^iP+7Vx`=dmEVQ3zju&RJjT;M3w;0G*OQpcLr^^A^= z&iK5Wg1dQ^FKdXR0(9vd#U(7c)=#zgLFE#LTzUEVWHLh)H*N&Qaav5KY&OgB<82%`@Dcs}eFQ<# zudNNZ8@L^K3nsh}7c>@~s#cA-qa*e09pDZGw@D%Y7LphGzR!*w2l?QGquhAIR{r9S zFLK3Yo3UMc>fkCNXj+mYpC3GZ7p66Jbv4wbY;w6A$z)ki?jT1H0-Jo&Soy!`S$Zo27G?zsK;xa5*^u^rpIp{t&YR4Re*do!L_M1EDiKfiBz z0LQVYuXoAk^RwFCbzS;<3uJQz>gw!yOGc<SbT(uv8YwGYE+5(qnJt4KbA`TG?{Y8YU)x94g~z<;Wzoy+aBbuuRp}= zuk9t5E0_XOWuDirYtMQvM+iwi@6B(tBOsNcE|s8A$TO35!Ki8unQX}TSa$vzp`$U* z6yvI*?LGhi23tu)K~(-Y@kTC}BMd|G`8@6I?Tn9)M|~pz_5xoAz6|_=MNS$xgCtHl z%G9?IqrU9|zF^t%&Qzm&L&CFbMn*jz{mGkbd*%bKxpp%*-+U>*d);qw&idsj*T%Ax z$;CFqOIrwmQWlx)?4-h+AOy8F4t|d}ox!RI%d!aq$>7i!E7vSDMuK@jDU_omaio+4 zK|p_h9|sQ}q_y=hxoo!h@`wo2it#Ud95`Nme-<;&NaDmOQ{VEK|J;YX@cf6YS=+?5*KOwJKfH|L;gQIJQ4oe=+VO>D*^JHSTRw(>M8YNr z{8?>o@&`Ed^bT|3JkD*$s#-kY&*$@WcX!j;dYBW(k25xAtYp$Eh8DD9a!EXanb0iW zk23{lG;v^p@gR-Ktn(7^1!c>>Of|YU)YLhR`K(Vz=P-{y@g`3{^)8K#37T70P@7!B zs?{s0sjZ1J>`zqRY&)`MeFDC6j$;vqvy)~*2;4+1on1ro=My3Ywr!!qkb!{#Iyz2r zA!fv%KF+@4I? ze~_rL)_R4Ie8!`{KSOVCE3F5PvwX!;Hl4SDbI;#M%ZlYBlBPOvCa^i!g-rFvhlnPEL*k|*L6uIlZ=cEp@VS7d7rsL3NdR(Ppvhn+7#VAeFUCA`)~^x zB~(L`OXoOovXA$79pd#j_Of$lD<@72;uRD^8nQS^3n@h>#&Y=-Mg<UAqQ|AKR=Z>S?{ zr}6y&JL#6Z2j)Qn&GiU1H8q@Q%QBwM(a?~Z*oHXspefLUm-FcBAK~zklf1v{FgxEn z#J+v)ba#!C&w*4Hj+>ySP9c>TL$DjobHJ~F13+;Ab~X?u##u|8809xRBGCZwOH3@t z1|hiKa^+2yBd{Wpu3NIf}$a%CLJWA`qVgX z#uTpW7;lBxt*0`h_>9n@p0yOyTI0G2GFi>g&=?I(^%UKXwI=ie#?u*kdxtsN*2TX4 z$Jw**7zYoXq@!bqu@R5Jmnh4^c50|=lt?Ag2o9im8F&HBE+W^M$@=hY!C6n7a#Ts7 z05iaCMe`W2Q3$TFY6*4znDUC_Eyh?MaI8%rwO8PEDEH#iyVA%>~Nu&~S z+)qIW1~GMt_F*b9@5aox^kXD#5ucG|a(qUdkAW$Ou82ictYj4J}x#}@{cpYaVGFh#Cg|DwEGC`$J!#Kf?8 z7*l!%^Y9M?{b+hHgg6;3T|jU2`;@K?pAlv5_M(Ix;vqGdV3VG&(Ra3vaZh0000PbVXQnQ*UN;cVTj606}DL gVr3vnZDD6+Qe|Oed2z{QJOBUy07*qoM6N<$f|# + +Seriously, even if you just used it in your weekend project, I'd like to hear +about it :) + +## License + +The MIT License + +Copyright (c) 2017 Sentimens Research Group, LLC + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/aux/server-discovery/vendor/github.com/SentimensRG/ctx/ctx.go b/extra/server-discovery/vendor/github.com/SentimensRG/ctx/ctx.go similarity index 100% rename from aux/server-discovery/vendor/github.com/SentimensRG/ctx/ctx.go rename to extra/server-discovery/vendor/github.com/SentimensRG/ctx/ctx.go diff --git a/extra/server-discovery/vendor/github.com/SentimensRG/ctx/sigctx/README.md b/extra/server-discovery/vendor/github.com/SentimensRG/ctx/sigctx/README.md new file mode 100644 index 000000000..e6762c5f9 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/SentimensRG/ctx/sigctx/README.md @@ -0,0 +1,63 @@ +# sigctx + +Package `sigctx` provides contexts for graceful shutdown. + +The `sigctx` package provides a context that terminates when it receives a +SIGINT or SIGTERM. This provides a convenient mechanism for triggering +graceful application shutdown. + +`sigctx.New` returns a `ctx.C`, which implements the ubiquitous `ctx.Doner` +interface. It fires when either SIGINT or SIGTERM is caught. + +## Examples + +```go +import ( + "log" + "github.com/SentimensRG/ctx/sigctx" +) + +func main() { + ctx := sigctx.New() // returns a regular context.Context + + <-ctx.Done() // will unblock on SIGINT and SIGTERM + log.Println("exiting.") +} +``` + +`sigctx.Tick` can be used to react to streams of signals. For example, you can +implement a graceful shutdown attempt, followed by a forced shutdown. + +```go +import ( + "log" + "github.com/SentimensRG/ctx/sigctx" + "github.com/SentimensRG/ctx" +) + +func main() { + t := sigctx.Tick() + d, cancel := ctx.WithCancel(ctx.Background()) + + go func() { + defer cancel() + + go func() { + // business logic goes here + }() + + <-t + log.Println("attempting graceful shutdown - press Ctrl + c again to force quit") + go func() { + defer cancel() + // cleanup logic goes here + }() + + <-t + log.Println("forcing close") + }() + + <-d.Done() +} + +``` \ No newline at end of file diff --git a/aux/server-discovery/vendor/github.com/SentimensRG/ctx/sigctx/sigctx.go b/extra/server-discovery/vendor/github.com/SentimensRG/ctx/sigctx/sigctx.go similarity index 100% rename from aux/server-discovery/vendor/github.com/SentimensRG/ctx/sigctx/sigctx.go rename to extra/server-discovery/vendor/github.com/SentimensRG/ctx/sigctx/sigctx.go diff --git a/extra/server-discovery/vendor/github.com/asaskevich/govalidator/.gitignore b/extra/server-discovery/vendor/github.com/asaskevich/govalidator/.gitignore new file mode 100644 index 000000000..8d69a9418 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/asaskevich/govalidator/.gitignore @@ -0,0 +1,15 @@ +bin/ +.idea/ +# Binaries for programs and plugins +*.exe +*.exe~ +*.dll +*.so +*.dylib + +# Test binary, built with `go test -c` +*.test + +# Output of the go coverage tool, specifically when used with LiteIDE +*.out + diff --git a/extra/server-discovery/vendor/github.com/asaskevich/govalidator/.travis.yml b/extra/server-discovery/vendor/github.com/asaskevich/govalidator/.travis.yml new file mode 100644 index 000000000..bb83c6670 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/asaskevich/govalidator/.travis.yml @@ -0,0 +1,12 @@ +language: go +dist: xenial +go: + - '1.10' + - '1.11' + - '1.12' + - '1.13' + - 'tip' + +script: + - go test -coverpkg=./... -coverprofile=coverage.info -timeout=5s + - bash <(curl -s https://codecov.io/bash) diff --git a/extra/server-discovery/vendor/github.com/asaskevich/govalidator/CODE_OF_CONDUCT.md b/extra/server-discovery/vendor/github.com/asaskevich/govalidator/CODE_OF_CONDUCT.md new file mode 100644 index 000000000..4b462b0d8 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/asaskevich/govalidator/CODE_OF_CONDUCT.md @@ -0,0 +1,43 @@ +# Contributor Code of Conduct + +This project adheres to [The Code Manifesto](http://codemanifesto.com) +as its guidelines for contributor interactions. + +## The Code Manifesto + +We want to work in an ecosystem that empowers developers to reach their +potential — one that encourages growth and effective collaboration. A space +that is safe for all. + +A space such as this benefits everyone that participates in it. It encourages +new developers to enter our field. It is through discussion and collaboration +that we grow, and through growth that we improve. + +In the effort to create such a place, we hold to these values: + +1. **Discrimination limits us.** This includes discrimination on the basis of + race, gender, sexual orientation, gender identity, age, nationality, + technology and any other arbitrary exclusion of a group of people. +2. **Boundaries honor us.** Your comfort levels are not everyone’s comfort + levels. Remember that, and if brought to your attention, heed it. +3. **We are our biggest assets.** None of us were born masters of our trade. + Each of us has been helped along the way. Return that favor, when and where + you can. +4. **We are resources for the future.** As an extension of #3, share what you + know. Make yourself a resource to help those that come after you. +5. **Respect defines us.** Treat others as you wish to be treated. Make your + discussions, criticisms and debates from a position of respectfulness. Ask + yourself, is it true? Is it necessary? Is it constructive? Anything less is + unacceptable. +6. **Reactions require grace.** Angry responses are valid, but abusive language + and vindictive actions are toxic. When something happens that offends you, + handle it assertively, but be respectful. Escalate reasonably, and try to + allow the offender an opportunity to explain themselves, and possibly + correct the issue. +7. **Opinions are just that: opinions.** Each and every one of us, due to our + background and upbringing, have varying opinions. That is perfectly + acceptable. Remember this: if you respect your own opinions, you should + respect the opinions of others. +8. **To err is human.** You might not intend it, but mistakes do happen and + contribute to build experience. Tolerate honest mistakes, and don't + hesitate to apologize if you make one yourself. diff --git a/extra/server-discovery/vendor/github.com/asaskevich/govalidator/CONTRIBUTING.md b/extra/server-discovery/vendor/github.com/asaskevich/govalidator/CONTRIBUTING.md new file mode 100644 index 000000000..7ed268a1e --- /dev/null +++ b/extra/server-discovery/vendor/github.com/asaskevich/govalidator/CONTRIBUTING.md @@ -0,0 +1,63 @@ +#### Support +If you do have a contribution to the package, feel free to create a Pull Request or an Issue. + +#### What to contribute +If you don't know what to do, there are some features and functions that need to be done + +- [ ] Refactor code +- [ ] Edit docs and [README](https://github.com/asaskevich/govalidator/README.md): spellcheck, grammar and typo check +- [ ] Create actual list of contributors and projects that currently using this package +- [ ] Resolve [issues and bugs](https://github.com/asaskevich/govalidator/issues) +- [ ] Update actual [list of functions](https://github.com/asaskevich/govalidator#list-of-functions) +- [ ] Update [list of validators](https://github.com/asaskevich/govalidator#validatestruct-2) that available for `ValidateStruct` and add new +- [ ] Implement new validators: `IsFQDN`, `IsIMEI`, `IsPostalCode`, `IsISIN`, `IsISRC` etc +- [x] Implement [validation by maps](https://github.com/asaskevich/govalidator/issues/224) +- [ ] Implement fuzzing testing +- [ ] Implement some struct/map/array utilities +- [ ] Implement map/array validation +- [ ] Implement benchmarking +- [ ] Implement batch of examples +- [ ] Look at forks for new features and fixes + +#### Advice +Feel free to create what you want, but keep in mind when you implement new features: +- Code must be clear and readable, names of variables/constants clearly describes what they are doing +- Public functions must be documented and described in source file and added to README.md to the list of available functions +- There are must be unit-tests for any new functions and improvements + +## Financial contributions + +We also welcome financial contributions in full transparency on our [open collective](https://opencollective.com/govalidator). +Anyone can file an expense. If the expense makes sense for the development of the community, it will be "merged" in the ledger of our open collective by the core contributors and the person who filed the expense will be reimbursed. + + +## Credits + + +### Contributors + +Thank you to all the people who have already contributed to govalidator! + + + +### Backers + +Thank you to all our backers! [[Become a backer](https://opencollective.com/govalidator#backer)] + + + + +### Sponsors + +Thank you to all our sponsors! (please ask your company to also support this open source project by [becoming a sponsor](https://opencollective.com/govalidator#sponsor)) + + + + + + + + + + + \ No newline at end of file diff --git a/extra/server-discovery/vendor/github.com/asaskevich/govalidator/LICENSE b/extra/server-discovery/vendor/github.com/asaskevich/govalidator/LICENSE new file mode 100644 index 000000000..cacba9102 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/asaskevich/govalidator/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014-2020 Alex Saskevich + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/extra/server-discovery/vendor/github.com/asaskevich/govalidator/README.md b/extra/server-discovery/vendor/github.com/asaskevich/govalidator/README.md new file mode 100644 index 000000000..2c3fc35eb --- /dev/null +++ b/extra/server-discovery/vendor/github.com/asaskevich/govalidator/README.md @@ -0,0 +1,622 @@ +govalidator +=========== +[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/asaskevich/govalidator?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) [![GoDoc](https://godoc.org/github.com/asaskevich/govalidator?status.png)](https://godoc.org/github.com/asaskevich/govalidator) +[![Build Status](https://travis-ci.org/asaskevich/govalidator.svg?branch=master)](https://travis-ci.org/asaskevich/govalidator) +[![Coverage](https://codecov.io/gh/asaskevich/govalidator/branch/master/graph/badge.svg)](https://codecov.io/gh/asaskevich/govalidator) [![Go Report Card](https://goreportcard.com/badge/github.com/asaskevich/govalidator)](https://goreportcard.com/report/github.com/asaskevich/govalidator) [![GoSearch](http://go-search.org/badge?id=github.com%2Fasaskevich%2Fgovalidator)](http://go-search.org/view?id=github.com%2Fasaskevich%2Fgovalidator) [![Backers on Open Collective](https://opencollective.com/govalidator/backers/badge.svg)](#backers) [![Sponsors on Open Collective](https://opencollective.com/govalidator/sponsors/badge.svg)](#sponsors) [![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fasaskevich%2Fgovalidator.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Fasaskevich%2Fgovalidator?ref=badge_shield) + +A package of validators and sanitizers for strings, structs and collections. Based on [validator.js](https://github.com/chriso/validator.js). + +#### Installation +Make sure that Go is installed on your computer. +Type the following command in your terminal: + + go get github.com/asaskevich/govalidator + +or you can get specified release of the package with `gopkg.in`: + + go get gopkg.in/asaskevich/govalidator.v10 + +After it the package is ready to use. + + +#### Import package in your project +Add following line in your `*.go` file: +```go +import "github.com/asaskevich/govalidator" +``` +If you are unhappy to use long `govalidator`, you can do something like this: +```go +import ( + valid "github.com/asaskevich/govalidator" +) +``` + +#### Activate behavior to require all fields have a validation tag by default +`SetFieldsRequiredByDefault` causes validation to fail when struct fields do not include validations or are not explicitly marked as exempt (using `valid:"-"` or `valid:"email,optional"`). A good place to activate this is a package init function or the main() function. + +`SetNilPtrAllowedByRequired` causes validation to pass when struct fields marked by `required` are set to nil. This is disabled by default for consistency, but some packages that need to be able to determine between `nil` and `zero value` state can use this. If disabled, both `nil` and `zero` values cause validation errors. + +```go +import "github.com/asaskevich/govalidator" + +func init() { + govalidator.SetFieldsRequiredByDefault(true) +} +``` + +Here's some code to explain it: +```go +// this struct definition will fail govalidator.ValidateStruct() (and the field values do not matter): +type exampleStruct struct { + Name string `` + Email string `valid:"email"` +} + +// this, however, will only fail when Email is empty or an invalid email address: +type exampleStruct2 struct { + Name string `valid:"-"` + Email string `valid:"email"` +} + +// lastly, this will only fail when Email is an invalid email address but not when it's empty: +type exampleStruct2 struct { + Name string `valid:"-"` + Email string `valid:"email,optional"` +} +``` + +#### Recent breaking changes (see [#123](https://github.com/asaskevich/govalidator/pull/123)) +##### Custom validator function signature +A context was added as the second parameter, for structs this is the object being validated – this makes dependent validation possible. +```go +import "github.com/asaskevich/govalidator" + +// old signature +func(i interface{}) bool + +// new signature +func(i interface{}, o interface{}) bool +``` + +##### Adding a custom validator +This was changed to prevent data races when accessing custom validators. +```go +import "github.com/asaskevich/govalidator" + +// before +govalidator.CustomTypeTagMap["customByteArrayValidator"] = func(i interface{}, o interface{}) bool { + // ... +} + +// after +govalidator.CustomTypeTagMap.Set("customByteArrayValidator", func(i interface{}, o interface{}) bool { + // ... +}) +``` + +#### List of functions: +```go +func Abs(value float64) float64 +func BlackList(str, chars string) string +func ByteLength(str string, params ...string) bool +func CamelCaseToUnderscore(str string) string +func Contains(str, substring string) bool +func Count(array []interface{}, iterator ConditionIterator) int +func Each(array []interface{}, iterator Iterator) +func ErrorByField(e error, field string) string +func ErrorsByField(e error) map[string]string +func Filter(array []interface{}, iterator ConditionIterator) []interface{} +func Find(array []interface{}, iterator ConditionIterator) interface{} +func GetLine(s string, index int) (string, error) +func GetLines(s string) []string +func HasLowerCase(str string) bool +func HasUpperCase(str string) bool +func HasWhitespace(str string) bool +func HasWhitespaceOnly(str string) bool +func InRange(value interface{}, left interface{}, right interface{}) bool +func InRangeFloat32(value, left, right float32) bool +func InRangeFloat64(value, left, right float64) bool +func InRangeInt(value, left, right interface{}) bool +func IsASCII(str string) bool +func IsAlpha(str string) bool +func IsAlphanumeric(str string) bool +func IsBase64(str string) bool +func IsByteLength(str string, min, max int) bool +func IsCIDR(str string) bool +func IsCRC32(str string) bool +func IsCRC32b(str string) bool +func IsCreditCard(str string) bool +func IsDNSName(str string) bool +func IsDataURI(str string) bool +func IsDialString(str string) bool +func IsDivisibleBy(str, num string) bool +func IsEmail(str string) bool +func IsExistingEmail(email string) bool +func IsFilePath(str string) (bool, int) +func IsFloat(str string) bool +func IsFullWidth(str string) bool +func IsHalfWidth(str string) bool +func IsHash(str string, algorithm string) bool +func IsHexadecimal(str string) bool +func IsHexcolor(str string) bool +func IsHost(str string) bool +func IsIP(str string) bool +func IsIPv4(str string) bool +func IsIPv6(str string) bool +func IsISBN(str string, version int) bool +func IsISBN10(str string) bool +func IsISBN13(str string) bool +func IsISO3166Alpha2(str string) bool +func IsISO3166Alpha3(str string) bool +func IsISO4217(str string) bool +func IsISO693Alpha2(str string) bool +func IsISO693Alpha3b(str string) bool +func IsIn(str string, params ...string) bool +func IsInRaw(str string, params ...string) bool +func IsInt(str string) bool +func IsJSON(str string) bool +func IsLatitude(str string) bool +func IsLongitude(str string) bool +func IsLowerCase(str string) bool +func IsMAC(str string) bool +func IsMD4(str string) bool +func IsMD5(str string) bool +func IsMagnetURI(str string) bool +func IsMongoID(str string) bool +func IsMultibyte(str string) bool +func IsNatural(value float64) bool +func IsNegative(value float64) bool +func IsNonNegative(value float64) bool +func IsNonPositive(value float64) bool +func IsNotNull(str string) bool +func IsNull(str string) bool +func IsNumeric(str string) bool +func IsPort(str string) bool +func IsPositive(value float64) bool +func IsPrintableASCII(str string) bool +func IsRFC3339(str string) bool +func IsRFC3339WithoutZone(str string) bool +func IsRGBcolor(str string) bool +func IsRegex(str string) bool +func IsRequestURI(rawurl string) bool +func IsRequestURL(rawurl string) bool +func IsRipeMD128(str string) bool +func IsRipeMD160(str string) bool +func IsRsaPub(str string, params ...string) bool +func IsRsaPublicKey(str string, keylen int) bool +func IsSHA1(str string) bool +func IsSHA256(str string) bool +func IsSHA384(str string) bool +func IsSHA512(str string) bool +func IsSSN(str string) bool +func IsSemver(str string) bool +func IsTiger128(str string) bool +func IsTiger160(str string) bool +func IsTiger192(str string) bool +func IsTime(str string, format string) bool +func IsType(v interface{}, params ...string) bool +func IsURL(str string) bool +func IsUTFDigit(str string) bool +func IsUTFLetter(str string) bool +func IsUTFLetterNumeric(str string) bool +func IsUTFNumeric(str string) bool +func IsUUID(str string) bool +func IsUUIDv3(str string) bool +func IsUUIDv4(str string) bool +func IsUUIDv5(str string) bool +func IsULID(str string) bool +func IsUnixTime(str string) bool +func IsUpperCase(str string) bool +func IsVariableWidth(str string) bool +func IsWhole(value float64) bool +func LeftTrim(str, chars string) string +func Map(array []interface{}, iterator ResultIterator) []interface{} +func Matches(str, pattern string) bool +func MaxStringLength(str string, params ...string) bool +func MinStringLength(str string, params ...string) bool +func NormalizeEmail(str string) (string, error) +func PadBoth(str string, padStr string, padLen int) string +func PadLeft(str string, padStr string, padLen int) string +func PadRight(str string, padStr string, padLen int) string +func PrependPathToErrors(err error, path string) error +func Range(str string, params ...string) bool +func RemoveTags(s string) string +func ReplacePattern(str, pattern, replace string) string +func Reverse(s string) string +func RightTrim(str, chars string) string +func RuneLength(str string, params ...string) bool +func SafeFileName(str string) string +func SetFieldsRequiredByDefault(value bool) +func SetNilPtrAllowedByRequired(value bool) +func Sign(value float64) float64 +func StringLength(str string, params ...string) bool +func StringMatches(s string, params ...string) bool +func StripLow(str string, keepNewLines bool) string +func ToBoolean(str string) (bool, error) +func ToFloat(str string) (float64, error) +func ToInt(value interface{}) (res int64, err error) +func ToJSON(obj interface{}) (string, error) +func ToString(obj interface{}) string +func Trim(str, chars string) string +func Truncate(str string, length int, ending string) string +func TruncatingErrorf(str string, args ...interface{}) error +func UnderscoreToCamelCase(s string) string +func ValidateMap(inputMap map[string]interface{}, validationMap map[string]interface{}) (bool, error) +func ValidateStruct(s interface{}) (bool, error) +func WhiteList(str, chars string) string +type ConditionIterator +type CustomTypeValidator +type Error +func (e Error) Error() string +type Errors +func (es Errors) Error() string +func (es Errors) Errors() []error +type ISO3166Entry +type ISO693Entry +type InterfaceParamValidator +type Iterator +type ParamValidator +type ResultIterator +type UnsupportedTypeError +func (e *UnsupportedTypeError) Error() string +type Validator +``` + +#### Examples +###### IsURL +```go +println(govalidator.IsURL(`http://user@pass:domain.com/path/page`)) +``` +###### IsType +```go +println(govalidator.IsType("Bob", "string")) +println(govalidator.IsType(1, "int")) +i := 1 +println(govalidator.IsType(&i, "*int")) +``` + +IsType can be used through the tag `type` which is essential for map validation: +```go +type User struct { + Name string `valid:"type(string)"` + Age int `valid:"type(int)"` + Meta interface{} `valid:"type(string)"` +} +result, err := govalidator.ValidateStruct(User{"Bob", 20, "meta"}) +if err != nil { + println("error: " + err.Error()) +} +println(result) +``` +###### ToString +```go +type User struct { + FirstName string + LastName string +} + +str := govalidator.ToString(&User{"John", "Juan"}) +println(str) +``` +###### Each, Map, Filter, Count for slices +Each iterates over the slice/array and calls Iterator for every item +```go +data := []interface{}{1, 2, 3, 4, 5} +var fn govalidator.Iterator = func(value interface{}, index int) { + println(value.(int)) +} +govalidator.Each(data, fn) +``` +```go +data := []interface{}{1, 2, 3, 4, 5} +var fn govalidator.ResultIterator = func(value interface{}, index int) interface{} { + return value.(int) * 3 +} +_ = govalidator.Map(data, fn) // result = []interface{}{1, 6, 9, 12, 15} +``` +```go +data := []interface{}{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} +var fn govalidator.ConditionIterator = func(value interface{}, index int) bool { + return value.(int)%2 == 0 +} +_ = govalidator.Filter(data, fn) // result = []interface{}{2, 4, 6, 8, 10} +_ = govalidator.Count(data, fn) // result = 5 +``` +###### ValidateStruct [#2](https://github.com/asaskevich/govalidator/pull/2) +If you want to validate structs, you can use tag `valid` for any field in your structure. All validators used with this field in one tag are separated by comma. If you want to skip validation, place `-` in your tag. If you need a validator that is not on the list below, you can add it like this: +```go +govalidator.TagMap["duck"] = govalidator.Validator(func(str string) bool { + return str == "duck" +}) +``` +For completely custom validators (interface-based), see below. + +Here is a list of available validators for struct fields (validator - used function): +```go +"email": IsEmail, +"url": IsURL, +"dialstring": IsDialString, +"requrl": IsRequestURL, +"requri": IsRequestURI, +"alpha": IsAlpha, +"utfletter": IsUTFLetter, +"alphanum": IsAlphanumeric, +"utfletternum": IsUTFLetterNumeric, +"numeric": IsNumeric, +"utfnumeric": IsUTFNumeric, +"utfdigit": IsUTFDigit, +"hexadecimal": IsHexadecimal, +"hexcolor": IsHexcolor, +"rgbcolor": IsRGBcolor, +"lowercase": IsLowerCase, +"uppercase": IsUpperCase, +"int": IsInt, +"float": IsFloat, +"null": IsNull, +"uuid": IsUUID, +"uuidv3": IsUUIDv3, +"uuidv4": IsUUIDv4, +"uuidv5": IsUUIDv5, +"creditcard": IsCreditCard, +"isbn10": IsISBN10, +"isbn13": IsISBN13, +"json": IsJSON, +"multibyte": IsMultibyte, +"ascii": IsASCII, +"printableascii": IsPrintableASCII, +"fullwidth": IsFullWidth, +"halfwidth": IsHalfWidth, +"variablewidth": IsVariableWidth, +"base64": IsBase64, +"datauri": IsDataURI, +"ip": IsIP, +"port": IsPort, +"ipv4": IsIPv4, +"ipv6": IsIPv6, +"dns": IsDNSName, +"host": IsHost, +"mac": IsMAC, +"latitude": IsLatitude, +"longitude": IsLongitude, +"ssn": IsSSN, +"semver": IsSemver, +"rfc3339": IsRFC3339, +"rfc3339WithoutZone": IsRFC3339WithoutZone, +"ISO3166Alpha2": IsISO3166Alpha2, +"ISO3166Alpha3": IsISO3166Alpha3, +"ulid": IsULID, +``` +Validators with parameters + +```go +"range(min|max)": Range, +"length(min|max)": ByteLength, +"runelength(min|max)": RuneLength, +"stringlength(min|max)": StringLength, +"matches(pattern)": StringMatches, +"in(string1|string2|...|stringN)": IsIn, +"rsapub(keylength)" : IsRsaPub, +"minstringlength(int): MinStringLength, +"maxstringlength(int): MaxStringLength, +``` +Validators with parameters for any type + +```go +"type(type)": IsType, +``` + +And here is small example of usage: +```go +type Post struct { + Title string `valid:"alphanum,required"` + Message string `valid:"duck,ascii"` + Message2 string `valid:"animal(dog)"` + AuthorIP string `valid:"ipv4"` + Date string `valid:"-"` +} +post := &Post{ + Title: "My Example Post", + Message: "duck", + Message2: "dog", + AuthorIP: "123.234.54.3", +} + +// Add your own struct validation tags +govalidator.TagMap["duck"] = govalidator.Validator(func(str string) bool { + return str == "duck" +}) + +// Add your own struct validation tags with parameter +govalidator.ParamTagMap["animal"] = govalidator.ParamValidator(func(str string, params ...string) bool { + species := params[0] + return str == species +}) +govalidator.ParamTagRegexMap["animal"] = regexp.MustCompile("^animal\\((\\w+)\\)$") + +result, err := govalidator.ValidateStruct(post) +if err != nil { + println("error: " + err.Error()) +} +println(result) +``` +###### ValidateMap [#2](https://github.com/asaskevich/govalidator/pull/338) +If you want to validate maps, you can use the map to be validated and a validation map that contain the same tags used in ValidateStruct, both maps have to be in the form `map[string]interface{}` + +So here is small example of usage: +```go +var mapTemplate = map[string]interface{}{ + "name":"required,alpha", + "family":"required,alpha", + "email":"required,email", + "cell-phone":"numeric", + "address":map[string]interface{}{ + "line1":"required,alphanum", + "line2":"alphanum", + "postal-code":"numeric", + }, +} + +var inputMap = map[string]interface{}{ + "name":"Bob", + "family":"Smith", + "email":"foo@bar.baz", + "address":map[string]interface{}{ + "line1":"", + "line2":"", + "postal-code":"", + }, +} + +result, err := govalidator.ValidateMap(inputMap, mapTemplate) +if err != nil { + println("error: " + err.Error()) +} +println(result) +``` + +###### WhiteList +```go +// Remove all characters from string ignoring characters between "a" and "z" +println(govalidator.WhiteList("a3a43a5a4a3a2a23a4a5a4a3a4", "a-z") == "aaaaaaaaaaaa") +``` + +###### Custom validation functions +Custom validation using your own domain specific validators is also available - here's an example of how to use it: +```go +import "github.com/asaskevich/govalidator" + +type CustomByteArray [6]byte // custom types are supported and can be validated + +type StructWithCustomByteArray struct { + ID CustomByteArray `valid:"customByteArrayValidator,customMinLengthValidator"` // multiple custom validators are possible as well and will be evaluated in sequence + Email string `valid:"email"` + CustomMinLength int `valid:"-"` +} + +govalidator.CustomTypeTagMap.Set("customByteArrayValidator", func(i interface{}, context interface{}) bool { + switch v := context.(type) { // you can type switch on the context interface being validated + case StructWithCustomByteArray: + // you can check and validate against some other field in the context, + // return early or not validate against the context at all – your choice + case SomeOtherType: + // ... + default: + // expecting some other type? Throw/panic here or continue + } + + switch v := i.(type) { // type switch on the struct field being validated + case CustomByteArray: + for _, e := range v { // this validator checks that the byte array is not empty, i.e. not all zeroes + if e != 0 { + return true + } + } + } + return false +}) +govalidator.CustomTypeTagMap.Set("customMinLengthValidator", func(i interface{}, context interface{}) bool { + switch v := context.(type) { // this validates a field against the value in another field, i.e. dependent validation + case StructWithCustomByteArray: + return len(v.ID) >= v.CustomMinLength + } + return false +}) +``` + +###### Loop over Error() +By default .Error() returns all errors in a single String. To access each error you can do this: +```go + if err != nil { + errs := err.(govalidator.Errors).Errors() + for _, e := range errs { + fmt.Println(e.Error()) + } + } +``` + +###### Custom error messages +Custom error messages are supported via annotations by adding the `~` separator - here's an example of how to use it: +```go +type Ticket struct { + Id int64 `json:"id"` + FirstName string `json:"firstname" valid:"required~First name is blank"` +} +``` + +#### Notes +Documentation is available here: [godoc.org](https://godoc.org/github.com/asaskevich/govalidator). +Full information about code coverage is also available here: [govalidator on gocover.io](http://gocover.io/github.com/asaskevich/govalidator). + +#### Support +If you do have a contribution to the package, feel free to create a Pull Request or an Issue. + +#### What to contribute +If you don't know what to do, there are some features and functions that need to be done + +- [ ] Refactor code +- [ ] Edit docs and [README](https://github.com/asaskevich/govalidator/README.md): spellcheck, grammar and typo check +- [ ] Create actual list of contributors and projects that currently using this package +- [ ] Resolve [issues and bugs](https://github.com/asaskevich/govalidator/issues) +- [ ] Update actual [list of functions](https://github.com/asaskevich/govalidator#list-of-functions) +- [ ] Update [list of validators](https://github.com/asaskevich/govalidator#validatestruct-2) that available for `ValidateStruct` and add new +- [ ] Implement new validators: `IsFQDN`, `IsIMEI`, `IsPostalCode`, `IsISIN`, `IsISRC` etc +- [x] Implement [validation by maps](https://github.com/asaskevich/govalidator/issues/224) +- [ ] Implement fuzzing testing +- [ ] Implement some struct/map/array utilities +- [ ] Implement map/array validation +- [ ] Implement benchmarking +- [ ] Implement batch of examples +- [ ] Look at forks for new features and fixes + +#### Advice +Feel free to create what you want, but keep in mind when you implement new features: +- Code must be clear and readable, names of variables/constants clearly describes what they are doing +- Public functions must be documented and described in source file and added to README.md to the list of available functions +- There are must be unit-tests for any new functions and improvements + +## Credits +### Contributors + +This project exists thanks to all the people who contribute. [[Contribute](CONTRIBUTING.md)]. + +#### Special thanks to [contributors](https://github.com/asaskevich/govalidator/graphs/contributors) +* [Daniel Lohse](https://github.com/annismckenzie) +* [Attila Oláh](https://github.com/attilaolah) +* [Daniel Korner](https://github.com/Dadie) +* [Steven Wilkin](https://github.com/stevenwilkin) +* [Deiwin Sarjas](https://github.com/deiwin) +* [Noah Shibley](https://github.com/slugmobile) +* [Nathan Davies](https://github.com/nathj07) +* [Matt Sanford](https://github.com/mzsanford) +* [Simon ccl1115](https://github.com/ccl1115) + + + + +### Backers + +Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/govalidator#backer)] + + + + +### Sponsors + +Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/govalidator#sponsor)] + + + + + + + + + + + + + + + +## License +[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fasaskevich%2Fgovalidator.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Fasaskevich%2Fgovalidator?ref=badge_large) diff --git a/extra/server-discovery/vendor/github.com/asaskevich/govalidator/arrays.go b/extra/server-discovery/vendor/github.com/asaskevich/govalidator/arrays.go new file mode 100644 index 000000000..3e1da7cb4 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/asaskevich/govalidator/arrays.go @@ -0,0 +1,87 @@ +package govalidator + +// Iterator is the function that accepts element of slice/array and its index +type Iterator func(interface{}, int) + +// ResultIterator is the function that accepts element of slice/array and its index and returns any result +type ResultIterator func(interface{}, int) interface{} + +// ConditionIterator is the function that accepts element of slice/array and its index and returns boolean +type ConditionIterator func(interface{}, int) bool + +// ReduceIterator is the function that accepts two element of slice/array and returns result of merging those values +type ReduceIterator func(interface{}, interface{}) interface{} + +// Some validates that any item of array corresponds to ConditionIterator. Returns boolean. +func Some(array []interface{}, iterator ConditionIterator) bool { + res := false + for index, data := range array { + res = res || iterator(data, index) + } + return res +} + +// Every validates that every item of array corresponds to ConditionIterator. Returns boolean. +func Every(array []interface{}, iterator ConditionIterator) bool { + res := true + for index, data := range array { + res = res && iterator(data, index) + } + return res +} + +// Reduce boils down a list of values into a single value by ReduceIterator +func Reduce(array []interface{}, iterator ReduceIterator, initialValue interface{}) interface{} { + for _, data := range array { + initialValue = iterator(initialValue, data) + } + return initialValue +} + +// Each iterates over the slice and apply Iterator to every item +func Each(array []interface{}, iterator Iterator) { + for index, data := range array { + iterator(data, index) + } +} + +// Map iterates over the slice and apply ResultIterator to every item. Returns new slice as a result. +func Map(array []interface{}, iterator ResultIterator) []interface{} { + var result = make([]interface{}, len(array)) + for index, data := range array { + result[index] = iterator(data, index) + } + return result +} + +// Find iterates over the slice and apply ConditionIterator to every item. Returns first item that meet ConditionIterator or nil otherwise. +func Find(array []interface{}, iterator ConditionIterator) interface{} { + for index, data := range array { + if iterator(data, index) { + return data + } + } + return nil +} + +// Filter iterates over the slice and apply ConditionIterator to every item. Returns new slice. +func Filter(array []interface{}, iterator ConditionIterator) []interface{} { + var result = make([]interface{}, 0) + for index, data := range array { + if iterator(data, index) { + result = append(result, data) + } + } + return result +} + +// Count iterates over the slice and apply ConditionIterator to every item. Returns count of items that meets ConditionIterator. +func Count(array []interface{}, iterator ConditionIterator) int { + count := 0 + for index, data := range array { + if iterator(data, index) { + count = count + 1 + } + } + return count +} diff --git a/extra/server-discovery/vendor/github.com/asaskevich/govalidator/converter.go b/extra/server-discovery/vendor/github.com/asaskevich/govalidator/converter.go new file mode 100644 index 000000000..d68e990fc --- /dev/null +++ b/extra/server-discovery/vendor/github.com/asaskevich/govalidator/converter.go @@ -0,0 +1,81 @@ +package govalidator + +import ( + "encoding/json" + "fmt" + "reflect" + "strconv" +) + +// ToString convert the input to a string. +func ToString(obj interface{}) string { + res := fmt.Sprintf("%v", obj) + return res +} + +// ToJSON convert the input to a valid JSON string +func ToJSON(obj interface{}) (string, error) { + res, err := json.Marshal(obj) + if err != nil { + res = []byte("") + } + return string(res), err +} + +// ToFloat convert the input string to a float, or 0.0 if the input is not a float. +func ToFloat(value interface{}) (res float64, err error) { + val := reflect.ValueOf(value) + + switch value.(type) { + case int, int8, int16, int32, int64: + res = float64(val.Int()) + case uint, uint8, uint16, uint32, uint64: + res = float64(val.Uint()) + case float32, float64: + res = val.Float() + case string: + res, err = strconv.ParseFloat(val.String(), 64) + if err != nil { + res = 0 + } + default: + err = fmt.Errorf("ToInt: unknown interface type %T", value) + res = 0 + } + + return +} + +// ToInt convert the input string or any int type to an integer type 64, or 0 if the input is not an integer. +func ToInt(value interface{}) (res int64, err error) { + val := reflect.ValueOf(value) + + switch value.(type) { + case int, int8, int16, int32, int64: + res = val.Int() + case uint, uint8, uint16, uint32, uint64: + res = int64(val.Uint()) + case float32, float64: + res = int64(val.Float()) + case string: + if IsInt(val.String()) { + res, err = strconv.ParseInt(val.String(), 0, 64) + if err != nil { + res = 0 + } + } else { + err = fmt.Errorf("ToInt: invalid numeric format %g", value) + res = 0 + } + default: + err = fmt.Errorf("ToInt: unknown interface type %T", value) + res = 0 + } + + return +} + +// ToBoolean convert the input string to a boolean. +func ToBoolean(str string) (bool, error) { + return strconv.ParseBool(str) +} diff --git a/extra/server-discovery/vendor/github.com/asaskevich/govalidator/doc.go b/extra/server-discovery/vendor/github.com/asaskevich/govalidator/doc.go new file mode 100644 index 000000000..55dce62dc --- /dev/null +++ b/extra/server-discovery/vendor/github.com/asaskevich/govalidator/doc.go @@ -0,0 +1,3 @@ +package govalidator + +// A package of validators and sanitizers for strings, structures and collections. diff --git a/extra/server-discovery/vendor/github.com/asaskevich/govalidator/error.go b/extra/server-discovery/vendor/github.com/asaskevich/govalidator/error.go new file mode 100644 index 000000000..1da2336f4 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/asaskevich/govalidator/error.go @@ -0,0 +1,47 @@ +package govalidator + +import ( + "sort" + "strings" +) + +// Errors is an array of multiple errors and conforms to the error interface. +type Errors []error + +// Errors returns itself. +func (es Errors) Errors() []error { + return es +} + +func (es Errors) Error() string { + var errs []string + for _, e := range es { + errs = append(errs, e.Error()) + } + sort.Strings(errs) + return strings.Join(errs, ";") +} + +// Error encapsulates a name, an error and whether there's a custom error message or not. +type Error struct { + Name string + Err error + CustomErrorMessageExists bool + + // Validator indicates the name of the validator that failed + Validator string + Path []string +} + +func (e Error) Error() string { + if e.CustomErrorMessageExists { + return e.Err.Error() + } + + errName := e.Name + if len(e.Path) > 0 { + errName = strings.Join(append(e.Path, e.Name), ".") + } + + return errName + ": " + e.Err.Error() +} diff --git a/extra/server-discovery/vendor/github.com/asaskevich/govalidator/numerics.go b/extra/server-discovery/vendor/github.com/asaskevich/govalidator/numerics.go new file mode 100644 index 000000000..5041d9e86 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/asaskevich/govalidator/numerics.go @@ -0,0 +1,100 @@ +package govalidator + +import ( + "math" +) + +// Abs returns absolute value of number +func Abs(value float64) float64 { + return math.Abs(value) +} + +// Sign returns signum of number: 1 in case of value > 0, -1 in case of value < 0, 0 otherwise +func Sign(value float64) float64 { + if value > 0 { + return 1 + } else if value < 0 { + return -1 + } else { + return 0 + } +} + +// IsNegative returns true if value < 0 +func IsNegative(value float64) bool { + return value < 0 +} + +// IsPositive returns true if value > 0 +func IsPositive(value float64) bool { + return value > 0 +} + +// IsNonNegative returns true if value >= 0 +func IsNonNegative(value float64) bool { + return value >= 0 +} + +// IsNonPositive returns true if value <= 0 +func IsNonPositive(value float64) bool { + return value <= 0 +} + +// InRangeInt returns true if value lies between left and right border +func InRangeInt(value, left, right interface{}) bool { + value64, _ := ToInt(value) + left64, _ := ToInt(left) + right64, _ := ToInt(right) + if left64 > right64 { + left64, right64 = right64, left64 + } + return value64 >= left64 && value64 <= right64 +} + +// InRangeFloat32 returns true if value lies between left and right border +func InRangeFloat32(value, left, right float32) bool { + if left > right { + left, right = right, left + } + return value >= left && value <= right +} + +// InRangeFloat64 returns true if value lies between left and right border +func InRangeFloat64(value, left, right float64) bool { + if left > right { + left, right = right, left + } + return value >= left && value <= right +} + +// InRange returns true if value lies between left and right border, generic type to handle int, float32, float64 and string. +// All types must the same type. +// False if value doesn't lie in range or if it incompatible or not comparable +func InRange(value interface{}, left interface{}, right interface{}) bool { + switch value.(type) { + case int: + intValue, _ := ToInt(value) + intLeft, _ := ToInt(left) + intRight, _ := ToInt(right) + return InRangeInt(intValue, intLeft, intRight) + case float32, float64: + intValue, _ := ToFloat(value) + intLeft, _ := ToFloat(left) + intRight, _ := ToFloat(right) + return InRangeFloat64(intValue, intLeft, intRight) + case string: + return value.(string) >= left.(string) && value.(string) <= right.(string) + default: + return false + } +} + +// IsWhole returns true if value is whole number +func IsWhole(value float64) bool { + return math.Remainder(value, 1) == 0 +} + +// IsNatural returns true if value is natural number (positive and whole) +func IsNatural(value float64) bool { + return IsWhole(value) && IsPositive(value) +} diff --git a/extra/server-discovery/vendor/github.com/asaskevich/govalidator/patterns.go b/extra/server-discovery/vendor/github.com/asaskevich/govalidator/patterns.go new file mode 100644 index 000000000..bafc3765e --- /dev/null +++ b/extra/server-discovery/vendor/github.com/asaskevich/govalidator/patterns.go @@ -0,0 +1,113 @@ +package govalidator + +import "regexp" + +// Basic regular expressions for validating strings +const ( + Email string = "^(((([a-zA-Z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])+(\\.([a-zA-Z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])|(\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-zA-Z]|\\d|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])|(([a-zA-Z]|\\d|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])([a-zA-Z]|\\d|-|\\.|_|~|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])*([a-zA-Z]|\\d|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])))\\.)+(([a-zA-Z]|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])|(([a-zA-Z]|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])([a-zA-Z]|\\d|-|_|~|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])*([a-zA-Z]|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])))\\.?$" + CreditCard string = "^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|(222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\d{3})\\d{11}|6[27][0-9]{14})$" + ISBN10 string = "^(?:[0-9]{9}X|[0-9]{10})$" + ISBN13 string = "^(?:[0-9]{13})$" + UUID3 string = "^[0-9a-f]{8}-[0-9a-f]{4}-3[0-9a-f]{3}-[0-9a-f]{4}-[0-9a-f]{12}$" + UUID4 string = "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$" + UUID5 string = "^[0-9a-f]{8}-[0-9a-f]{4}-5[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$" + UUID string = "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$" + Alpha string = "^[a-zA-Z]+$" + Alphanumeric string = "^[a-zA-Z0-9]+$" + Numeric string = "^[0-9]+$" + Int string = "^(?:[-+]?(?:0|[1-9][0-9]*))$" + Float string = "^(?:[-+]?(?:[0-9]+))?(?:\\.[0-9]*)?(?:[eE][\\+\\-]?(?:[0-9]+))?$" + Hexadecimal string = "^[0-9a-fA-F]+$" + Hexcolor string = "^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$" + RGBcolor string = "^rgb\\(\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*\\)$" + ASCII string = "^[\x00-\x7F]+$" + Multibyte string = "[^\x00-\x7F]" + FullWidth string = "[^\u0020-\u007E\uFF61-\uFF9F\uFFA0-\uFFDC\uFFE8-\uFFEE0-9a-zA-Z]" + HalfWidth string = "[\u0020-\u007E\uFF61-\uFF9F\uFFA0-\uFFDC\uFFE8-\uFFEE0-9a-zA-Z]" + Base64 string = "^(?:[A-Za-z0-9+\\/]{4})*(?:[A-Za-z0-9+\\/]{2}==|[A-Za-z0-9+\\/]{3}=|[A-Za-z0-9+\\/]{4})$" + PrintableASCII string = "^[\x20-\x7E]+$" + DataURI string = "^data:.+\\/(.+);base64$" + MagnetURI string = "^magnet:\\?xt=urn:[a-zA-Z0-9]+:[a-zA-Z0-9]{32,40}&dn=.+&tr=.+$" + Latitude string = "^[-+]?([1-8]?\\d(\\.\\d+)?|90(\\.0+)?)$" + Longitude string = "^[-+]?(180(\\.0+)?|((1[0-7]\\d)|([1-9]?\\d))(\\.\\d+)?)$" + DNSName string = `^([a-zA-Z0-9_]{1}[a-zA-Z0-9_-]{0,62}){1}(\.[a-zA-Z0-9_]{1}[a-zA-Z0-9_-]{0,62})*[\._]?$` + IP string = `(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))` + URLSchema string = `((ftp|tcp|udp|wss?|https?):\/\/)` + URLUsername string = `(\S+(:\S*)?@)` + URLPath string = `((\/|\?|#)[^\s]*)` + URLPort string = `(:(\d{1,5}))` + URLIP string = `([1-9]\d?|1\d\d|2[01]\d|22[0-3]|24\d|25[0-5])(\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])){2}(?:\.([0-9]\d?|1\d\d|2[0-4]\d|25[0-5]))` + URLSubdomain string = `((www\.)|([a-zA-Z0-9]+([-_\.]?[a-zA-Z0-9])*[a-zA-Z0-9]\.[a-zA-Z0-9]+))` + URL = `^` + URLSchema + `?` + URLUsername + `?` + `((` + URLIP + `|(\[` + IP + `\])|(([a-zA-Z0-9]([a-zA-Z0-9-_]+)?[a-zA-Z0-9]([-\.][a-zA-Z0-9]+)*)|(` + URLSubdomain + `?))?(([a-zA-Z\x{00a1}-\x{ffff}0-9]+-?-?)*[a-zA-Z\x{00a1}-\x{ffff}0-9]+)(?:\.([a-zA-Z\x{00a1}-\x{ffff}]{1,}))?))\.?` + URLPort + `?` + URLPath + `?$` + SSN string = `^\d{3}[- ]?\d{2}[- ]?\d{4}$` + WinPath string = `^[a-zA-Z]:\\(?:[^\\/:*?"<>|\r\n]+\\)*[^\\/:*?"<>|\r\n]*$` + UnixPath string = `^(/[^/\x00]*)+/?$` + WinARPath string = `^(?:(?:[a-zA-Z]:|\\\\[a-z0-9_.$●-]+\\[a-z0-9_.$●-]+)\\|\\?[^\\/:*?"<>|\r\n]+\\?)(?:[^\\/:*?"<>|\r\n]+\\)*[^\\/:*?"<>|\r\n]*$` + UnixARPath string = `^((\.{0,2}/)?([^/\x00]*))+/?$` + Semver string = "^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-]+)*)?$" + tagName string = "valid" + hasLowerCase string = ".*[[:lower:]]" + hasUpperCase string = ".*[[:upper:]]" + hasWhitespace string = ".*[[:space:]]" + hasWhitespaceOnly string = "^[[:space:]]+$" + IMEI string = "^[0-9a-f]{14}$|^\\d{15}$|^\\d{18}$" + IMSI string = "^\\d{14,15}$" + E164 string = `^\+?[1-9]\d{1,14}$` +) + +// Used by IsFilePath func +const ( + // Unknown is unresolved OS type + Unknown = iota + // Win is Windows type + Win + // Unix is *nix OS types + Unix +) + +var ( + userRegexp = regexp.MustCompile("^[a-zA-Z0-9!#$%&'*+/=?^_`{|}~.-]+$") + hostRegexp = regexp.MustCompile("^[^\\s]+\\.[^\\s]+$") + userDotRegexp = regexp.MustCompile("(^[.]{1})|([.]{1}$)|([.]{2,})") + rxEmail = regexp.MustCompile(Email) + rxCreditCard = regexp.MustCompile(CreditCard) + rxISBN10 = regexp.MustCompile(ISBN10) + rxISBN13 = regexp.MustCompile(ISBN13) + rxUUID3 = regexp.MustCompile(UUID3) + rxUUID4 = regexp.MustCompile(UUID4) + rxUUID5 = regexp.MustCompile(UUID5) + rxUUID = regexp.MustCompile(UUID) + rxAlpha = regexp.MustCompile(Alpha) + rxAlphanumeric = regexp.MustCompile(Alphanumeric) + rxNumeric = regexp.MustCompile(Numeric) + rxInt = regexp.MustCompile(Int) + rxFloat = regexp.MustCompile(Float) + rxHexadecimal = regexp.MustCompile(Hexadecimal) + rxHexcolor = regexp.MustCompile(Hexcolor) + rxRGBcolor = regexp.MustCompile(RGBcolor) + rxASCII = regexp.MustCompile(ASCII) + rxPrintableASCII = regexp.MustCompile(PrintableASCII) + rxMultibyte = regexp.MustCompile(Multibyte) + rxFullWidth = regexp.MustCompile(FullWidth) + rxHalfWidth = regexp.MustCompile(HalfWidth) + rxBase64 = regexp.MustCompile(Base64) + rxDataURI = regexp.MustCompile(DataURI) + rxMagnetURI = regexp.MustCompile(MagnetURI) + rxLatitude = regexp.MustCompile(Latitude) + rxLongitude = regexp.MustCompile(Longitude) + rxDNSName = regexp.MustCompile(DNSName) + rxURL = regexp.MustCompile(URL) + rxSSN = regexp.MustCompile(SSN) + rxWinPath = regexp.MustCompile(WinPath) + rxUnixPath = regexp.MustCompile(UnixPath) + rxARWinPath = regexp.MustCompile(WinARPath) + rxARUnixPath = regexp.MustCompile(UnixARPath) + rxSemver = regexp.MustCompile(Semver) + rxHasLowerCase = regexp.MustCompile(hasLowerCase) + rxHasUpperCase = regexp.MustCompile(hasUpperCase) + rxHasWhitespace = regexp.MustCompile(hasWhitespace) + rxHasWhitespaceOnly = regexp.MustCompile(hasWhitespaceOnly) + rxIMEI = regexp.MustCompile(IMEI) + rxIMSI = regexp.MustCompile(IMSI) + rxE164 = regexp.MustCompile(E164) +) diff --git a/extra/server-discovery/vendor/github.com/asaskevich/govalidator/types.go b/extra/server-discovery/vendor/github.com/asaskevich/govalidator/types.go new file mode 100644 index 000000000..c573abb51 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/asaskevich/govalidator/types.go @@ -0,0 +1,656 @@ +package govalidator + +import ( + "reflect" + "regexp" + "sort" + "sync" +) + +// Validator is a wrapper for a validator function that returns bool and accepts string. +type Validator func(str string) bool + +// CustomTypeValidator is a wrapper for validator functions that returns bool and accepts any type. +// The second parameter should be the context (in the case of validating a struct: the whole object being validated). +type CustomTypeValidator func(i interface{}, o interface{}) bool + +// ParamValidator is a wrapper for validator functions that accept additional parameters. +type ParamValidator func(str string, params ...string) bool + +// InterfaceParamValidator is a wrapper for functions that accept variants parameters for an interface value +type InterfaceParamValidator func(in interface{}, params ...string) bool +type tagOptionsMap map[string]tagOption + +func (t tagOptionsMap) orderedKeys() []string { + var keys []string + for k := range t { + keys = append(keys, k) + } + + sort.Slice(keys, func(a, b int) bool { + return t[keys[a]].order < t[keys[b]].order + }) + + return keys +} + +type tagOption struct { + name string + customErrorMessage string + order int +} + +// UnsupportedTypeError is a wrapper for reflect.Type +type UnsupportedTypeError struct { + Type reflect.Type +} + +// stringValues is a slice of reflect.Value holding *reflect.StringValue. +// It implements the methods to sort by string. +type stringValues []reflect.Value + +// InterfaceParamTagMap is a map of functions accept variants parameters for an interface value +var InterfaceParamTagMap = map[string]InterfaceParamValidator{ + "type": IsType, +} + +// InterfaceParamTagRegexMap maps interface param tags to their respective regexes. +var InterfaceParamTagRegexMap = map[string]*regexp.Regexp{ + "type": regexp.MustCompile(`^type\((.*)\)$`), +} + +// ParamTagMap is a map of functions accept variants parameters +var ParamTagMap = map[string]ParamValidator{ + "length": ByteLength, + "range": Range, + "runelength": RuneLength, + "stringlength": StringLength, + "matches": StringMatches, + "in": IsInRaw, + "rsapub": IsRsaPub, + "minstringlength": MinStringLength, + "maxstringlength": MaxStringLength, +} + +// ParamTagRegexMap maps param tags to their respective regexes. +var ParamTagRegexMap = map[string]*regexp.Regexp{ + "range": regexp.MustCompile("^range\\((\\d+)\\|(\\d+)\\)$"), + "length": regexp.MustCompile("^length\\((\\d+)\\|(\\d+)\\)$"), + "runelength": regexp.MustCompile("^runelength\\((\\d+)\\|(\\d+)\\)$"), + "stringlength": regexp.MustCompile("^stringlength\\((\\d+)\\|(\\d+)\\)$"), + "in": regexp.MustCompile(`^in\((.*)\)`), + "matches": regexp.MustCompile(`^matches\((.+)\)$`), + "rsapub": regexp.MustCompile("^rsapub\\((\\d+)\\)$"), + "minstringlength": regexp.MustCompile("^minstringlength\\((\\d+)\\)$"), + "maxstringlength": regexp.MustCompile("^maxstringlength\\((\\d+)\\)$"), +} + +type customTypeTagMap struct { + validators map[string]CustomTypeValidator + + sync.RWMutex +} + +func (tm *customTypeTagMap) Get(name string) (CustomTypeValidator, bool) { + tm.RLock() + defer tm.RUnlock() + v, ok := tm.validators[name] + return v, ok +} + +func (tm *customTypeTagMap) Set(name string, ctv CustomTypeValidator) { + tm.Lock() + defer tm.Unlock() + tm.validators[name] = ctv +} + +// CustomTypeTagMap is a map of functions that can be used as tags for ValidateStruct function. +// Use this to validate compound or custom types that need to be handled as a whole, e.g. +// `type UUID [16]byte` (this would be handled as an array of bytes). +var CustomTypeTagMap = &customTypeTagMap{validators: make(map[string]CustomTypeValidator)} + +// TagMap is a map of functions, that can be used as tags for ValidateStruct function. +var TagMap = map[string]Validator{ + "email": IsEmail, + "url": IsURL, + "dialstring": IsDialString, + "requrl": IsRequestURL, + "requri": IsRequestURI, + "alpha": IsAlpha, + "utfletter": IsUTFLetter, + "alphanum": IsAlphanumeric, + "utfletternum": IsUTFLetterNumeric, + "numeric": IsNumeric, + "utfnumeric": IsUTFNumeric, + "utfdigit": IsUTFDigit, + "hexadecimal": IsHexadecimal, + "hexcolor": IsHexcolor, + "rgbcolor": IsRGBcolor, + "lowercase": IsLowerCase, + "uppercase": IsUpperCase, + "int": IsInt, + "float": IsFloat, + "null": IsNull, + "notnull": IsNotNull, + "uuid": IsUUID, + "uuidv3": IsUUIDv3, + "uuidv4": IsUUIDv4, + "uuidv5": IsUUIDv5, + "creditcard": IsCreditCard, + "isbn10": IsISBN10, + "isbn13": IsISBN13, + "json": IsJSON, + "multibyte": IsMultibyte, + "ascii": IsASCII, + "printableascii": IsPrintableASCII, + "fullwidth": IsFullWidth, + "halfwidth": IsHalfWidth, + "variablewidth": IsVariableWidth, + "base64": IsBase64, + "datauri": IsDataURI, + "ip": IsIP, + "port": IsPort, + "ipv4": IsIPv4, + "ipv6": IsIPv6, + "dns": IsDNSName, + "host": IsHost, + "mac": IsMAC, + "latitude": IsLatitude, + "longitude": IsLongitude, + "ssn": IsSSN, + "semver": IsSemver, + "rfc3339": IsRFC3339, + "rfc3339WithoutZone": IsRFC3339WithoutZone, + "ISO3166Alpha2": IsISO3166Alpha2, + "ISO3166Alpha3": IsISO3166Alpha3, + "ISO4217": IsISO4217, + "IMEI": IsIMEI, + "ulid": IsULID, +} + +// ISO3166Entry stores country codes +type ISO3166Entry struct { + EnglishShortName string + FrenchShortName string + Alpha2Code string + Alpha3Code string + Numeric string +} + +//ISO3166List based on https://www.iso.org/obp/ui/#search/code/ Code Type "Officially Assigned Codes" +var ISO3166List = []ISO3166Entry{ + {"Afghanistan", "Afghanistan (l')", "AF", "AFG", "004"}, + {"Albania", "Albanie (l')", "AL", "ALB", "008"}, + {"Antarctica", "Antarctique (l')", "AQ", "ATA", "010"}, + {"Algeria", "Algérie (l')", "DZ", "DZA", "012"}, + {"American Samoa", "Samoa américaines (les)", "AS", "ASM", "016"}, + {"Andorra", "Andorre (l')", "AD", "AND", "020"}, + {"Angola", "Angola (l')", "AO", "AGO", "024"}, + {"Antigua and Barbuda", "Antigua-et-Barbuda", "AG", "ATG", "028"}, + {"Azerbaijan", "Azerbaïdjan (l')", "AZ", "AZE", "031"}, + {"Argentina", "Argentine (l')", "AR", "ARG", "032"}, + {"Australia", "Australie (l')", "AU", "AUS", "036"}, + {"Austria", "Autriche (l')", "AT", "AUT", "040"}, + {"Bahamas (the)", "Bahamas (les)", "BS", "BHS", "044"}, + {"Bahrain", "Bahreïn", "BH", "BHR", "048"}, + {"Bangladesh", "Bangladesh (le)", "BD", "BGD", "050"}, + {"Armenia", "Arménie (l')", "AM", "ARM", "051"}, + {"Barbados", "Barbade (la)", "BB", "BRB", "052"}, + {"Belgium", "Belgique (la)", "BE", "BEL", "056"}, + {"Bermuda", "Bermudes (les)", "BM", "BMU", "060"}, + {"Bhutan", "Bhoutan (le)", "BT", "BTN", "064"}, + {"Bolivia (Plurinational State of)", "Bolivie (État plurinational de)", "BO", "BOL", "068"}, + {"Bosnia and Herzegovina", "Bosnie-Herzégovine (la)", "BA", "BIH", "070"}, + {"Botswana", "Botswana (le)", "BW", "BWA", "072"}, + {"Bouvet Island", "Bouvet (l'Île)", "BV", "BVT", "074"}, + {"Brazil", "Brésil (le)", "BR", "BRA", "076"}, + {"Belize", "Belize (le)", "BZ", "BLZ", "084"}, + {"British Indian Ocean Territory (the)", "Indien (le Territoire britannique de l'océan)", "IO", "IOT", "086"}, + {"Solomon Islands", "Salomon (Îles)", "SB", "SLB", "090"}, + {"Virgin Islands (British)", "Vierges britanniques (les Îles)", "VG", "VGB", "092"}, + {"Brunei Darussalam", "Brunéi Darussalam (le)", "BN", "BRN", "096"}, + {"Bulgaria", "Bulgarie (la)", "BG", "BGR", "100"}, + {"Myanmar", "Myanmar (le)", "MM", "MMR", "104"}, + {"Burundi", "Burundi (le)", "BI", "BDI", "108"}, + {"Belarus", "Bélarus (le)", "BY", "BLR", "112"}, + {"Cambodia", "Cambodge (le)", "KH", "KHM", "116"}, + {"Cameroon", "Cameroun (le)", "CM", "CMR", "120"}, + {"Canada", "Canada (le)", "CA", "CAN", "124"}, + {"Cabo Verde", "Cabo Verde", "CV", "CPV", "132"}, + {"Cayman Islands (the)", "Caïmans (les Îles)", "KY", "CYM", "136"}, + {"Central African Republic (the)", "République centrafricaine (la)", "CF", "CAF", "140"}, + {"Sri Lanka", "Sri Lanka", "LK", "LKA", "144"}, + {"Chad", "Tchad (le)", "TD", "TCD", "148"}, + {"Chile", "Chili (le)", "CL", "CHL", "152"}, + {"China", "Chine (la)", "CN", "CHN", "156"}, + {"Taiwan (Province of China)", "Taïwan (Province de Chine)", "TW", "TWN", "158"}, + {"Christmas Island", "Christmas (l'Île)", "CX", "CXR", "162"}, + {"Cocos (Keeling) Islands (the)", "Cocos (les Îles)/ Keeling (les Îles)", "CC", "CCK", "166"}, + {"Colombia", "Colombie (la)", "CO", "COL", "170"}, + {"Comoros (the)", "Comores (les)", "KM", "COM", "174"}, + {"Mayotte", "Mayotte", "YT", "MYT", "175"}, + {"Congo (the)", "Congo (le)", "CG", "COG", "178"}, + {"Congo (the Democratic Republic of the)", "Congo (la République démocratique du)", "CD", "COD", "180"}, + {"Cook Islands (the)", "Cook (les Îles)", "CK", "COK", "184"}, + {"Costa Rica", "Costa Rica (le)", "CR", "CRI", "188"}, + {"Croatia", "Croatie (la)", "HR", "HRV", "191"}, + {"Cuba", "Cuba", "CU", "CUB", "192"}, + {"Cyprus", "Chypre", "CY", "CYP", "196"}, + {"Czech Republic (the)", "tchèque (la République)", "CZ", "CZE", "203"}, + {"Benin", "Bénin (le)", "BJ", "BEN", "204"}, + {"Denmark", "Danemark (le)", "DK", "DNK", "208"}, + {"Dominica", "Dominique (la)", "DM", "DMA", "212"}, + {"Dominican Republic (the)", "dominicaine (la République)", "DO", "DOM", "214"}, + {"Ecuador", "Équateur (l')", "EC", "ECU", "218"}, + {"El Salvador", "El Salvador", "SV", "SLV", "222"}, + {"Equatorial Guinea", "Guinée équatoriale (la)", "GQ", "GNQ", "226"}, + {"Ethiopia", "Éthiopie (l')", "ET", "ETH", "231"}, + {"Eritrea", "Érythrée (l')", "ER", "ERI", "232"}, + {"Estonia", "Estonie (l')", "EE", "EST", "233"}, + {"Faroe Islands (the)", "Féroé (les Îles)", "FO", "FRO", "234"}, + {"Falkland Islands (the) [Malvinas]", "Falkland (les Îles)/Malouines (les Îles)", "FK", "FLK", "238"}, + {"South Georgia and the South Sandwich Islands", "Géorgie du Sud-et-les Îles Sandwich du Sud (la)", "GS", "SGS", "239"}, + {"Fiji", "Fidji (les)", "FJ", "FJI", "242"}, + {"Finland", "Finlande (la)", "FI", "FIN", "246"}, + {"Åland Islands", "Åland(les Îles)", "AX", "ALA", "248"}, + {"France", "France (la)", "FR", "FRA", "250"}, + {"French Guiana", "Guyane française (la )", "GF", "GUF", "254"}, + {"French Polynesia", "Polynésie française (la)", "PF", "PYF", "258"}, + {"French Southern Territories (the)", "Terres australes françaises (les)", "TF", "ATF", "260"}, + {"Djibouti", "Djibouti", "DJ", "DJI", "262"}, + {"Gabon", "Gabon (le)", "GA", "GAB", "266"}, + {"Georgia", "Géorgie (la)", "GE", "GEO", "268"}, + {"Gambia (the)", "Gambie (la)", "GM", "GMB", "270"}, + {"Palestine, State of", "Palestine, État de", "PS", "PSE", "275"}, + {"Germany", "Allemagne (l')", "DE", "DEU", "276"}, + {"Ghana", "Ghana (le)", "GH", "GHA", "288"}, + {"Gibraltar", "Gibraltar", "GI", "GIB", "292"}, + {"Kiribati", "Kiribati", "KI", "KIR", "296"}, + {"Greece", "Grèce (la)", "GR", "GRC", "300"}, + {"Greenland", "Groenland (le)", "GL", "GRL", "304"}, + {"Grenada", "Grenade (la)", "GD", "GRD", "308"}, + {"Guadeloupe", "Guadeloupe (la)", "GP", "GLP", "312"}, + {"Guam", "Guam", "GU", "GUM", "316"}, + {"Guatemala", "Guatemala (le)", "GT", "GTM", "320"}, + {"Guinea", "Guinée (la)", "GN", "GIN", "324"}, + {"Guyana", "Guyana (le)", "GY", "GUY", "328"}, + {"Haiti", "Haïti", "HT", "HTI", "332"}, + {"Heard Island and McDonald Islands", "Heard-et-Îles MacDonald (l'Île)", "HM", "HMD", "334"}, + {"Holy See (the)", "Saint-Siège (le)", "VA", "VAT", "336"}, + {"Honduras", "Honduras (le)", "HN", "HND", "340"}, + {"Hong Kong", "Hong Kong", "HK", "HKG", "344"}, + {"Hungary", "Hongrie (la)", "HU", "HUN", "348"}, + {"Iceland", "Islande (l')", "IS", "ISL", "352"}, + {"India", "Inde (l')", "IN", "IND", "356"}, + {"Indonesia", "Indonésie (l')", "ID", "IDN", "360"}, + {"Iran (Islamic Republic of)", "Iran (République Islamique d')", "IR", "IRN", "364"}, + {"Iraq", "Iraq (l')", "IQ", "IRQ", "368"}, + {"Ireland", "Irlande (l')", "IE", "IRL", "372"}, + {"Israel", "Israël", "IL", "ISR", "376"}, + {"Italy", "Italie (l')", "IT", "ITA", "380"}, + {"Côte d'Ivoire", "Côte d'Ivoire (la)", "CI", "CIV", "384"}, + {"Jamaica", "Jamaïque (la)", "JM", "JAM", "388"}, + {"Japan", "Japon (le)", "JP", "JPN", "392"}, + {"Kazakhstan", "Kazakhstan (le)", "KZ", "KAZ", "398"}, + {"Jordan", "Jordanie (la)", "JO", "JOR", "400"}, + {"Kenya", "Kenya (le)", "KE", "KEN", "404"}, + {"Korea (the Democratic People's Republic of)", "Corée (la République populaire démocratique de)", "KP", "PRK", "408"}, + {"Korea (the Republic of)", "Corée (la République de)", "KR", "KOR", "410"}, + {"Kuwait", "Koweït (le)", "KW", "KWT", "414"}, + {"Kyrgyzstan", "Kirghizistan (le)", "KG", "KGZ", "417"}, + {"Lao People's Democratic Republic (the)", "Lao, République démocratique populaire", "LA", "LAO", "418"}, + {"Lebanon", "Liban (le)", "LB", "LBN", "422"}, + {"Lesotho", "Lesotho (le)", "LS", "LSO", "426"}, + {"Latvia", "Lettonie (la)", "LV", "LVA", "428"}, + {"Liberia", "Libéria (le)", "LR", "LBR", "430"}, + {"Libya", "Libye (la)", "LY", "LBY", "434"}, + {"Liechtenstein", "Liechtenstein (le)", "LI", "LIE", "438"}, + {"Lithuania", "Lituanie (la)", "LT", "LTU", "440"}, + {"Luxembourg", "Luxembourg (le)", "LU", "LUX", "442"}, + {"Macao", "Macao", "MO", "MAC", "446"}, + {"Madagascar", "Madagascar", "MG", "MDG", "450"}, + {"Malawi", "Malawi (le)", "MW", "MWI", "454"}, + {"Malaysia", "Malaisie (la)", "MY", "MYS", "458"}, + {"Maldives", "Maldives (les)", "MV", "MDV", "462"}, + {"Mali", "Mali (le)", "ML", "MLI", "466"}, + {"Malta", "Malte", "MT", "MLT", "470"}, + {"Martinique", "Martinique (la)", "MQ", "MTQ", "474"}, + {"Mauritania", "Mauritanie (la)", "MR", "MRT", "478"}, + {"Mauritius", "Maurice", "MU", "MUS", "480"}, + {"Mexico", "Mexique (le)", "MX", "MEX", "484"}, + {"Monaco", "Monaco", "MC", "MCO", "492"}, + {"Mongolia", "Mongolie (la)", "MN", "MNG", "496"}, + {"Moldova (the Republic of)", "Moldova , République de", "MD", "MDA", "498"}, + {"Montenegro", "Monténégro (le)", "ME", "MNE", "499"}, + {"Montserrat", "Montserrat", "MS", "MSR", "500"}, + {"Morocco", "Maroc (le)", "MA", "MAR", "504"}, + {"Mozambique", "Mozambique (le)", "MZ", "MOZ", "508"}, + {"Oman", "Oman", "OM", "OMN", "512"}, + {"Namibia", "Namibie (la)", "NA", "NAM", "516"}, + {"Nauru", "Nauru", "NR", "NRU", "520"}, + {"Nepal", "Népal (le)", "NP", "NPL", "524"}, + {"Netherlands (the)", "Pays-Bas (les)", "NL", "NLD", "528"}, + {"Curaçao", "Curaçao", "CW", "CUW", "531"}, + {"Aruba", "Aruba", "AW", "ABW", "533"}, + {"Sint Maarten (Dutch part)", "Saint-Martin (partie néerlandaise)", "SX", "SXM", "534"}, + {"Bonaire, Sint Eustatius and Saba", "Bonaire, Saint-Eustache et Saba", "BQ", "BES", "535"}, + {"New Caledonia", "Nouvelle-Calédonie (la)", "NC", "NCL", "540"}, + {"Vanuatu", "Vanuatu (le)", "VU", "VUT", "548"}, + {"New Zealand", "Nouvelle-Zélande (la)", "NZ", "NZL", "554"}, + {"Nicaragua", "Nicaragua (le)", "NI", "NIC", "558"}, + {"Niger (the)", "Niger (le)", "NE", "NER", "562"}, + {"Nigeria", "Nigéria (le)", "NG", "NGA", "566"}, + {"Niue", "Niue", "NU", "NIU", "570"}, + {"Norfolk Island", "Norfolk (l'Île)", "NF", "NFK", "574"}, + {"Norway", "Norvège (la)", "NO", "NOR", "578"}, + {"Northern Mariana Islands (the)", "Mariannes du Nord (les Îles)", "MP", "MNP", "580"}, + {"United States Minor Outlying Islands (the)", "Îles mineures éloignées des États-Unis (les)", "UM", "UMI", "581"}, + {"Micronesia (Federated States of)", "Micronésie (États fédérés de)", "FM", "FSM", "583"}, + {"Marshall Islands (the)", "Marshall (Îles)", "MH", "MHL", "584"}, + {"Palau", "Palaos (les)", "PW", "PLW", "585"}, + {"Pakistan", "Pakistan (le)", "PK", "PAK", "586"}, + {"Panama", "Panama (le)", "PA", "PAN", "591"}, + {"Papua New Guinea", "Papouasie-Nouvelle-Guinée (la)", "PG", "PNG", "598"}, + {"Paraguay", "Paraguay (le)", "PY", "PRY", "600"}, + {"Peru", "Pérou (le)", "PE", "PER", "604"}, + {"Philippines (the)", "Philippines (les)", "PH", "PHL", "608"}, + {"Pitcairn", "Pitcairn", "PN", "PCN", "612"}, + {"Poland", "Pologne (la)", "PL", "POL", "616"}, + {"Portugal", "Portugal (le)", "PT", "PRT", "620"}, + {"Guinea-Bissau", "Guinée-Bissau (la)", "GW", "GNB", "624"}, + {"Timor-Leste", "Timor-Leste (le)", "TL", "TLS", "626"}, + {"Puerto Rico", "Porto Rico", "PR", "PRI", "630"}, + {"Qatar", "Qatar (le)", "QA", "QAT", "634"}, + {"Réunion", "Réunion (La)", "RE", "REU", "638"}, + {"Romania", "Roumanie (la)", "RO", "ROU", "642"}, + {"Russian Federation (the)", "Russie (la Fédération de)", "RU", "RUS", "643"}, + {"Rwanda", "Rwanda (le)", "RW", "RWA", "646"}, + {"Saint Barthélemy", "Saint-Barthélemy", "BL", "BLM", "652"}, + {"Saint Helena, Ascension and Tristan da Cunha", "Sainte-Hélène, Ascension et Tristan da Cunha", "SH", "SHN", "654"}, + {"Saint Kitts and Nevis", "Saint-Kitts-et-Nevis", "KN", "KNA", "659"}, + {"Anguilla", "Anguilla", "AI", "AIA", "660"}, + {"Saint Lucia", "Sainte-Lucie", "LC", "LCA", "662"}, + {"Saint Martin (French part)", "Saint-Martin (partie française)", "MF", "MAF", "663"}, + {"Saint Pierre and Miquelon", "Saint-Pierre-et-Miquelon", "PM", "SPM", "666"}, + {"Saint Vincent and the Grenadines", "Saint-Vincent-et-les Grenadines", "VC", "VCT", "670"}, + {"San Marino", "Saint-Marin", "SM", "SMR", "674"}, + {"Sao Tome and Principe", "Sao Tomé-et-Principe", "ST", "STP", "678"}, + {"Saudi Arabia", "Arabie saoudite (l')", "SA", "SAU", "682"}, + {"Senegal", "Sénégal (le)", "SN", "SEN", "686"}, + {"Serbia", "Serbie (la)", "RS", "SRB", "688"}, + {"Seychelles", "Seychelles (les)", "SC", "SYC", "690"}, + {"Sierra Leone", "Sierra Leone (la)", "SL", "SLE", "694"}, + {"Singapore", "Singapour", "SG", "SGP", "702"}, + {"Slovakia", "Slovaquie (la)", "SK", "SVK", "703"}, + {"Viet Nam", "Viet Nam (le)", "VN", "VNM", "704"}, + {"Slovenia", "Slovénie (la)", "SI", "SVN", "705"}, + {"Somalia", "Somalie (la)", "SO", "SOM", "706"}, + {"South Africa", "Afrique du Sud (l')", "ZA", "ZAF", "710"}, + {"Zimbabwe", "Zimbabwe (le)", "ZW", "ZWE", "716"}, + {"Spain", "Espagne (l')", "ES", "ESP", "724"}, + {"South Sudan", "Soudan du Sud (le)", "SS", "SSD", "728"}, + {"Sudan (the)", "Soudan (le)", "SD", "SDN", "729"}, + {"Western Sahara*", "Sahara occidental (le)*", "EH", "ESH", "732"}, + {"Suriname", "Suriname (le)", "SR", "SUR", "740"}, + {"Svalbard and Jan Mayen", "Svalbard et l'Île Jan Mayen (le)", "SJ", "SJM", "744"}, + {"Swaziland", "Swaziland (le)", "SZ", "SWZ", "748"}, + {"Sweden", "Suède (la)", "SE", "SWE", "752"}, + {"Switzerland", "Suisse (la)", "CH", "CHE", "756"}, + {"Syrian Arab Republic", "République arabe syrienne (la)", "SY", "SYR", "760"}, + {"Tajikistan", "Tadjikistan (le)", "TJ", "TJK", "762"}, + {"Thailand", "Thaïlande (la)", "TH", "THA", "764"}, + {"Togo", "Togo (le)", "TG", "TGO", "768"}, + {"Tokelau", "Tokelau (les)", "TK", "TKL", "772"}, + {"Tonga", "Tonga (les)", "TO", "TON", "776"}, + {"Trinidad and Tobago", "Trinité-et-Tobago (la)", "TT", "TTO", "780"}, + {"United Arab Emirates (the)", "Émirats arabes unis (les)", "AE", "ARE", "784"}, + {"Tunisia", "Tunisie (la)", "TN", "TUN", "788"}, + {"Turkey", "Turquie (la)", "TR", "TUR", "792"}, + {"Turkmenistan", "Turkménistan (le)", "TM", "TKM", "795"}, + {"Turks and Caicos Islands (the)", "Turks-et-Caïcos (les Îles)", "TC", "TCA", "796"}, + {"Tuvalu", "Tuvalu (les)", "TV", "TUV", "798"}, + {"Uganda", "Ouganda (l')", "UG", "UGA", "800"}, + {"Ukraine", "Ukraine (l')", "UA", "UKR", "804"}, + {"Macedonia (the former Yugoslav Republic of)", "Macédoine (l'ex‑République yougoslave de)", "MK", "MKD", "807"}, + {"Egypt", "Égypte (l')", "EG", "EGY", "818"}, + {"United Kingdom of Great Britain and Northern Ireland (the)", "Royaume-Uni de Grande-Bretagne et d'Irlande du Nord (le)", "GB", "GBR", "826"}, + {"Guernsey", "Guernesey", "GG", "GGY", "831"}, + {"Jersey", "Jersey", "JE", "JEY", "832"}, + {"Isle of Man", "Île de Man", "IM", "IMN", "833"}, + {"Tanzania, United Republic of", "Tanzanie, République-Unie de", "TZ", "TZA", "834"}, + {"United States of America (the)", "États-Unis d'Amérique (les)", "US", "USA", "840"}, + {"Virgin Islands (U.S.)", "Vierges des États-Unis (les Îles)", "VI", "VIR", "850"}, + {"Burkina Faso", "Burkina Faso (le)", "BF", "BFA", "854"}, + {"Uruguay", "Uruguay (l')", "UY", "URY", "858"}, + {"Uzbekistan", "Ouzbékistan (l')", "UZ", "UZB", "860"}, + {"Venezuela (Bolivarian Republic of)", "Venezuela (République bolivarienne du)", "VE", "VEN", "862"}, + {"Wallis and Futuna", "Wallis-et-Futuna", "WF", "WLF", "876"}, + {"Samoa", "Samoa (le)", "WS", "WSM", "882"}, + {"Yemen", "Yémen (le)", "YE", "YEM", "887"}, + {"Zambia", "Zambie (la)", "ZM", "ZMB", "894"}, +} + +// ISO4217List is the list of ISO currency codes +var ISO4217List = []string{ + "AED", "AFN", "ALL", "AMD", "ANG", "AOA", "ARS", "AUD", "AWG", "AZN", + "BAM", "BBD", "BDT", "BGN", "BHD", "BIF", "BMD", "BND", "BOB", "BOV", "BRL", "BSD", "BTN", "BWP", "BYN", "BZD", + "CAD", "CDF", "CHE", "CHF", "CHW", "CLF", "CLP", "CNY", "COP", "COU", "CRC", "CUC", "CUP", "CVE", "CZK", + "DJF", "DKK", "DOP", "DZD", + "EGP", "ERN", "ETB", "EUR", + "FJD", "FKP", + "GBP", "GEL", "GHS", "GIP", "GMD", "GNF", "GTQ", "GYD", + "HKD", "HNL", "HRK", "HTG", "HUF", + "IDR", "ILS", "INR", "IQD", "IRR", "ISK", + "JMD", "JOD", "JPY", + "KES", "KGS", "KHR", "KMF", "KPW", "KRW", "KWD", "KYD", "KZT", + "LAK", "LBP", "LKR", "LRD", "LSL", "LYD", + "MAD", "MDL", "MGA", "MKD", "MMK", "MNT", "MOP", "MRO", "MUR", "MVR", "MWK", "MXN", "MXV", "MYR", "MZN", + "NAD", "NGN", "NIO", "NOK", "NPR", "NZD", + "OMR", + "PAB", "PEN", "PGK", "PHP", "PKR", "PLN", "PYG", + "QAR", + "RON", "RSD", "RUB", "RWF", + "SAR", "SBD", "SCR", "SDG", "SEK", "SGD", "SHP", "SLL", "SOS", "SRD", "SSP", "STD", "STN", "SVC", "SYP", "SZL", + "THB", "TJS", "TMT", "TND", "TOP", "TRY", "TTD", "TWD", "TZS", + "UAH", "UGX", "USD", "USN", "UYI", "UYU", "UYW", "UZS", + "VEF", "VES", "VND", "VUV", + "WST", + "XAF", "XAG", "XAU", "XBA", "XBB", "XBC", "XBD", "XCD", "XDR", "XOF", "XPD", "XPF", "XPT", "XSU", "XTS", "XUA", "XXX", + "YER", + "ZAR", "ZMW", "ZWL", +} + +// ISO693Entry stores ISO language codes +type ISO693Entry struct { + Alpha3bCode string + Alpha2Code string + English string +} + +//ISO693List based on http://data.okfn.org/data/core/language-codes/r/language-codes-3b2.json +var ISO693List = []ISO693Entry{ + {Alpha3bCode: "aar", Alpha2Code: "aa", English: "Afar"}, + {Alpha3bCode: "abk", Alpha2Code: "ab", English: "Abkhazian"}, + {Alpha3bCode: "afr", Alpha2Code: "af", English: "Afrikaans"}, + {Alpha3bCode: "aka", Alpha2Code: "ak", English: "Akan"}, + {Alpha3bCode: "alb", Alpha2Code: "sq", English: "Albanian"}, + {Alpha3bCode: "amh", Alpha2Code: "am", English: "Amharic"}, + {Alpha3bCode: "ara", Alpha2Code: "ar", English: "Arabic"}, + {Alpha3bCode: "arg", Alpha2Code: "an", English: "Aragonese"}, + {Alpha3bCode: "arm", Alpha2Code: "hy", English: "Armenian"}, + {Alpha3bCode: "asm", Alpha2Code: "as", English: "Assamese"}, + {Alpha3bCode: "ava", Alpha2Code: "av", English: "Avaric"}, + {Alpha3bCode: "ave", Alpha2Code: "ae", English: "Avestan"}, + {Alpha3bCode: "aym", Alpha2Code: "ay", English: "Aymara"}, + {Alpha3bCode: "aze", Alpha2Code: "az", English: "Azerbaijani"}, + {Alpha3bCode: "bak", Alpha2Code: "ba", English: "Bashkir"}, + {Alpha3bCode: "bam", Alpha2Code: "bm", English: "Bambara"}, + {Alpha3bCode: "baq", Alpha2Code: "eu", English: "Basque"}, + {Alpha3bCode: "bel", Alpha2Code: "be", English: "Belarusian"}, + {Alpha3bCode: "ben", Alpha2Code: "bn", English: "Bengali"}, + {Alpha3bCode: "bih", Alpha2Code: "bh", English: "Bihari languages"}, + {Alpha3bCode: "bis", Alpha2Code: "bi", English: "Bislama"}, + {Alpha3bCode: "bos", Alpha2Code: "bs", English: "Bosnian"}, + {Alpha3bCode: "bre", Alpha2Code: "br", English: "Breton"}, + {Alpha3bCode: "bul", Alpha2Code: "bg", English: "Bulgarian"}, + {Alpha3bCode: "bur", Alpha2Code: "my", English: "Burmese"}, + {Alpha3bCode: "cat", Alpha2Code: "ca", English: "Catalan; Valencian"}, + {Alpha3bCode: "cha", Alpha2Code: "ch", English: "Chamorro"}, + {Alpha3bCode: "che", Alpha2Code: "ce", English: "Chechen"}, + {Alpha3bCode: "chi", Alpha2Code: "zh", English: "Chinese"}, + {Alpha3bCode: "chu", Alpha2Code: "cu", English: "Church Slavic; Old Slavonic; Church Slavonic; Old Bulgarian; Old Church Slavonic"}, + {Alpha3bCode: "chv", Alpha2Code: "cv", English: "Chuvash"}, + {Alpha3bCode: "cor", Alpha2Code: "kw", English: "Cornish"}, + {Alpha3bCode: "cos", Alpha2Code: "co", English: "Corsican"}, + {Alpha3bCode: "cre", Alpha2Code: "cr", English: "Cree"}, + {Alpha3bCode: "cze", Alpha2Code: "cs", English: "Czech"}, + {Alpha3bCode: "dan", Alpha2Code: "da", English: "Danish"}, + {Alpha3bCode: "div", Alpha2Code: "dv", English: "Divehi; Dhivehi; Maldivian"}, + {Alpha3bCode: "dut", Alpha2Code: "nl", English: "Dutch; Flemish"}, + {Alpha3bCode: "dzo", Alpha2Code: "dz", English: "Dzongkha"}, + {Alpha3bCode: "eng", Alpha2Code: "en", English: "English"}, + {Alpha3bCode: "epo", Alpha2Code: "eo", English: "Esperanto"}, + {Alpha3bCode: "est", Alpha2Code: "et", English: "Estonian"}, + {Alpha3bCode: "ewe", Alpha2Code: "ee", English: "Ewe"}, + {Alpha3bCode: "fao", Alpha2Code: "fo", English: "Faroese"}, + {Alpha3bCode: "fij", Alpha2Code: "fj", English: "Fijian"}, + {Alpha3bCode: "fin", Alpha2Code: "fi", English: "Finnish"}, + {Alpha3bCode: "fre", Alpha2Code: "fr", English: "French"}, + {Alpha3bCode: "fry", Alpha2Code: "fy", English: "Western Frisian"}, + {Alpha3bCode: "ful", Alpha2Code: "ff", English: "Fulah"}, + {Alpha3bCode: "geo", Alpha2Code: "ka", English: "Georgian"}, + {Alpha3bCode: "ger", Alpha2Code: "de", English: "German"}, + {Alpha3bCode: "gla", Alpha2Code: "gd", English: "Gaelic; Scottish Gaelic"}, + {Alpha3bCode: "gle", Alpha2Code: "ga", English: "Irish"}, + {Alpha3bCode: "glg", Alpha2Code: "gl", English: "Galician"}, + {Alpha3bCode: "glv", Alpha2Code: "gv", English: "Manx"}, + {Alpha3bCode: "gre", Alpha2Code: "el", English: "Greek, Modern (1453-)"}, + {Alpha3bCode: "grn", Alpha2Code: "gn", English: "Guarani"}, + {Alpha3bCode: "guj", Alpha2Code: "gu", English: "Gujarati"}, + {Alpha3bCode: "hat", Alpha2Code: "ht", English: "Haitian; Haitian Creole"}, + {Alpha3bCode: "hau", Alpha2Code: "ha", English: "Hausa"}, + {Alpha3bCode: "heb", Alpha2Code: "he", English: "Hebrew"}, + {Alpha3bCode: "her", Alpha2Code: "hz", English: "Herero"}, + {Alpha3bCode: "hin", Alpha2Code: "hi", English: "Hindi"}, + {Alpha3bCode: "hmo", Alpha2Code: "ho", English: "Hiri Motu"}, + {Alpha3bCode: "hrv", Alpha2Code: "hr", English: "Croatian"}, + {Alpha3bCode: "hun", Alpha2Code: "hu", English: "Hungarian"}, + {Alpha3bCode: "ibo", Alpha2Code: "ig", English: "Igbo"}, + {Alpha3bCode: "ice", Alpha2Code: "is", English: "Icelandic"}, + {Alpha3bCode: "ido", Alpha2Code: "io", English: "Ido"}, + {Alpha3bCode: "iii", Alpha2Code: "ii", English: "Sichuan Yi; Nuosu"}, + {Alpha3bCode: "iku", Alpha2Code: "iu", English: "Inuktitut"}, + {Alpha3bCode: "ile", Alpha2Code: "ie", English: "Interlingue; Occidental"}, + {Alpha3bCode: "ina", Alpha2Code: "ia", English: "Interlingua (International Auxiliary Language Association)"}, + {Alpha3bCode: "ind", Alpha2Code: "id", English: "Indonesian"}, + {Alpha3bCode: "ipk", Alpha2Code: "ik", English: "Inupiaq"}, + {Alpha3bCode: "ita", Alpha2Code: "it", English: "Italian"}, + {Alpha3bCode: "jav", Alpha2Code: "jv", English: "Javanese"}, + {Alpha3bCode: "jpn", Alpha2Code: "ja", English: "Japanese"}, + {Alpha3bCode: "kal", Alpha2Code: "kl", English: "Kalaallisut; Greenlandic"}, + {Alpha3bCode: "kan", Alpha2Code: "kn", English: "Kannada"}, + {Alpha3bCode: "kas", Alpha2Code: "ks", English: "Kashmiri"}, + {Alpha3bCode: "kau", Alpha2Code: "kr", English: "Kanuri"}, + {Alpha3bCode: "kaz", Alpha2Code: "kk", English: "Kazakh"}, + {Alpha3bCode: "khm", Alpha2Code: "km", English: "Central Khmer"}, + {Alpha3bCode: "kik", Alpha2Code: "ki", English: "Kikuyu; Gikuyu"}, + {Alpha3bCode: "kin", Alpha2Code: "rw", English: "Kinyarwanda"}, + {Alpha3bCode: "kir", Alpha2Code: "ky", English: "Kirghiz; Kyrgyz"}, + {Alpha3bCode: "kom", Alpha2Code: "kv", English: "Komi"}, + {Alpha3bCode: "kon", Alpha2Code: "kg", English: "Kongo"}, + {Alpha3bCode: "kor", Alpha2Code: "ko", English: "Korean"}, + {Alpha3bCode: "kua", Alpha2Code: "kj", English: "Kuanyama; Kwanyama"}, + {Alpha3bCode: "kur", Alpha2Code: "ku", English: "Kurdish"}, + {Alpha3bCode: "lao", Alpha2Code: "lo", English: "Lao"}, + {Alpha3bCode: "lat", Alpha2Code: "la", English: "Latin"}, + {Alpha3bCode: "lav", Alpha2Code: "lv", English: "Latvian"}, + {Alpha3bCode: "lim", Alpha2Code: "li", English: "Limburgan; Limburger; Limburgish"}, + {Alpha3bCode: "lin", Alpha2Code: "ln", English: "Lingala"}, + {Alpha3bCode: "lit", Alpha2Code: "lt", English: "Lithuanian"}, + {Alpha3bCode: "ltz", Alpha2Code: "lb", English: "Luxembourgish; Letzeburgesch"}, + {Alpha3bCode: "lub", Alpha2Code: "lu", English: "Luba-Katanga"}, + {Alpha3bCode: "lug", Alpha2Code: "lg", English: "Ganda"}, + {Alpha3bCode: "mac", Alpha2Code: "mk", English: "Macedonian"}, + {Alpha3bCode: "mah", Alpha2Code: "mh", English: "Marshallese"}, + {Alpha3bCode: "mal", Alpha2Code: "ml", English: "Malayalam"}, + {Alpha3bCode: "mao", Alpha2Code: "mi", English: "Maori"}, + {Alpha3bCode: "mar", Alpha2Code: "mr", English: "Marathi"}, + {Alpha3bCode: "may", Alpha2Code: "ms", English: "Malay"}, + {Alpha3bCode: "mlg", Alpha2Code: "mg", English: "Malagasy"}, + {Alpha3bCode: "mlt", Alpha2Code: "mt", English: "Maltese"}, + {Alpha3bCode: "mon", Alpha2Code: "mn", English: "Mongolian"}, + {Alpha3bCode: "nau", Alpha2Code: "na", English: "Nauru"}, + {Alpha3bCode: "nav", Alpha2Code: "nv", English: "Navajo; Navaho"}, + {Alpha3bCode: "nbl", Alpha2Code: "nr", English: "Ndebele, South; South Ndebele"}, + {Alpha3bCode: "nde", Alpha2Code: "nd", English: "Ndebele, North; North Ndebele"}, + {Alpha3bCode: "ndo", Alpha2Code: "ng", English: "Ndonga"}, + {Alpha3bCode: "nep", Alpha2Code: "ne", English: "Nepali"}, + {Alpha3bCode: "nno", Alpha2Code: "nn", English: "Norwegian Nynorsk; Nynorsk, Norwegian"}, + {Alpha3bCode: "nob", Alpha2Code: "nb", English: "Bokmål, Norwegian; Norwegian Bokmål"}, + {Alpha3bCode: "nor", Alpha2Code: "no", English: "Norwegian"}, + {Alpha3bCode: "nya", Alpha2Code: "ny", English: "Chichewa; Chewa; Nyanja"}, + {Alpha3bCode: "oci", Alpha2Code: "oc", English: "Occitan (post 1500); Provençal"}, + {Alpha3bCode: "oji", Alpha2Code: "oj", English: "Ojibwa"}, + {Alpha3bCode: "ori", Alpha2Code: "or", English: "Oriya"}, + {Alpha3bCode: "orm", Alpha2Code: "om", English: "Oromo"}, + {Alpha3bCode: "oss", Alpha2Code: "os", English: "Ossetian; Ossetic"}, + {Alpha3bCode: "pan", Alpha2Code: "pa", English: "Panjabi; Punjabi"}, + {Alpha3bCode: "per", Alpha2Code: "fa", English: "Persian"}, + {Alpha3bCode: "pli", Alpha2Code: "pi", English: "Pali"}, + {Alpha3bCode: "pol", Alpha2Code: "pl", English: "Polish"}, + {Alpha3bCode: "por", Alpha2Code: "pt", English: "Portuguese"}, + {Alpha3bCode: "pus", Alpha2Code: "ps", English: "Pushto; Pashto"}, + {Alpha3bCode: "que", Alpha2Code: "qu", English: "Quechua"}, + {Alpha3bCode: "roh", Alpha2Code: "rm", English: "Romansh"}, + {Alpha3bCode: "rum", Alpha2Code: "ro", English: "Romanian; Moldavian; Moldovan"}, + {Alpha3bCode: "run", Alpha2Code: "rn", English: "Rundi"}, + {Alpha3bCode: "rus", Alpha2Code: "ru", English: "Russian"}, + {Alpha3bCode: "sag", Alpha2Code: "sg", English: "Sango"}, + {Alpha3bCode: "san", Alpha2Code: "sa", English: "Sanskrit"}, + {Alpha3bCode: "sin", Alpha2Code: "si", English: "Sinhala; Sinhalese"}, + {Alpha3bCode: "slo", Alpha2Code: "sk", English: "Slovak"}, + {Alpha3bCode: "slv", Alpha2Code: "sl", English: "Slovenian"}, + {Alpha3bCode: "sme", Alpha2Code: "se", English: "Northern Sami"}, + {Alpha3bCode: "smo", Alpha2Code: "sm", English: "Samoan"}, + {Alpha3bCode: "sna", Alpha2Code: "sn", English: "Shona"}, + {Alpha3bCode: "snd", Alpha2Code: "sd", English: "Sindhi"}, + {Alpha3bCode: "som", Alpha2Code: "so", English: "Somali"}, + {Alpha3bCode: "sot", Alpha2Code: "st", English: "Sotho, Southern"}, + {Alpha3bCode: "spa", Alpha2Code: "es", English: "Spanish; Castilian"}, + {Alpha3bCode: "srd", Alpha2Code: "sc", English: "Sardinian"}, + {Alpha3bCode: "srp", Alpha2Code: "sr", English: "Serbian"}, + {Alpha3bCode: "ssw", Alpha2Code: "ss", English: "Swati"}, + {Alpha3bCode: "sun", Alpha2Code: "su", English: "Sundanese"}, + {Alpha3bCode: "swa", Alpha2Code: "sw", English: "Swahili"}, + {Alpha3bCode: "swe", Alpha2Code: "sv", English: "Swedish"}, + {Alpha3bCode: "tah", Alpha2Code: "ty", English: "Tahitian"}, + {Alpha3bCode: "tam", Alpha2Code: "ta", English: "Tamil"}, + {Alpha3bCode: "tat", Alpha2Code: "tt", English: "Tatar"}, + {Alpha3bCode: "tel", Alpha2Code: "te", English: "Telugu"}, + {Alpha3bCode: "tgk", Alpha2Code: "tg", English: "Tajik"}, + {Alpha3bCode: "tgl", Alpha2Code: "tl", English: "Tagalog"}, + {Alpha3bCode: "tha", Alpha2Code: "th", English: "Thai"}, + {Alpha3bCode: "tib", Alpha2Code: "bo", English: "Tibetan"}, + {Alpha3bCode: "tir", Alpha2Code: "ti", English: "Tigrinya"}, + {Alpha3bCode: "ton", Alpha2Code: "to", English: "Tonga (Tonga Islands)"}, + {Alpha3bCode: "tsn", Alpha2Code: "tn", English: "Tswana"}, + {Alpha3bCode: "tso", Alpha2Code: "ts", English: "Tsonga"}, + {Alpha3bCode: "tuk", Alpha2Code: "tk", English: "Turkmen"}, + {Alpha3bCode: "tur", Alpha2Code: "tr", English: "Turkish"}, + {Alpha3bCode: "twi", Alpha2Code: "tw", English: "Twi"}, + {Alpha3bCode: "uig", Alpha2Code: "ug", English: "Uighur; Uyghur"}, + {Alpha3bCode: "ukr", Alpha2Code: "uk", English: "Ukrainian"}, + {Alpha3bCode: "urd", Alpha2Code: "ur", English: "Urdu"}, + {Alpha3bCode: "uzb", Alpha2Code: "uz", English: "Uzbek"}, + {Alpha3bCode: "ven", Alpha2Code: "ve", English: "Venda"}, + {Alpha3bCode: "vie", Alpha2Code: "vi", English: "Vietnamese"}, + {Alpha3bCode: "vol", Alpha2Code: "vo", English: "Volapük"}, + {Alpha3bCode: "wel", Alpha2Code: "cy", English: "Welsh"}, + {Alpha3bCode: "wln", Alpha2Code: "wa", English: "Walloon"}, + {Alpha3bCode: "wol", Alpha2Code: "wo", English: "Wolof"}, + {Alpha3bCode: "xho", Alpha2Code: "xh", English: "Xhosa"}, + {Alpha3bCode: "yid", Alpha2Code: "yi", English: "Yiddish"}, + {Alpha3bCode: "yor", Alpha2Code: "yo", English: "Yoruba"}, + {Alpha3bCode: "zha", Alpha2Code: "za", English: "Zhuang; Chuang"}, + {Alpha3bCode: "zul", Alpha2Code: "zu", English: "Zulu"}, +} diff --git a/extra/server-discovery/vendor/github.com/asaskevich/govalidator/utils.go b/extra/server-discovery/vendor/github.com/asaskevich/govalidator/utils.go new file mode 100644 index 000000000..f4c30f824 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/asaskevich/govalidator/utils.go @@ -0,0 +1,270 @@ +package govalidator + +import ( + "errors" + "fmt" + "html" + "math" + "path" + "regexp" + "strings" + "unicode" + "unicode/utf8" +) + +// Contains checks if the string contains the substring. +func Contains(str, substring string) bool { + return strings.Contains(str, substring) +} + +// Matches checks if string matches the pattern (pattern is regular expression) +// In case of error return false +func Matches(str, pattern string) bool { + match, _ := regexp.MatchString(pattern, str) + return match +} + +// LeftTrim trims characters from the left side of the input. +// If second argument is empty, it will remove leading spaces. +func LeftTrim(str, chars string) string { + if chars == "" { + return strings.TrimLeftFunc(str, unicode.IsSpace) + } + r, _ := regexp.Compile("^[" + chars + "]+") + return r.ReplaceAllString(str, "") +} + +// RightTrim trims characters from the right side of the input. +// If second argument is empty, it will remove trailing spaces. +func RightTrim(str, chars string) string { + if chars == "" { + return strings.TrimRightFunc(str, unicode.IsSpace) + } + r, _ := regexp.Compile("[" + chars + "]+$") + return r.ReplaceAllString(str, "") +} + +// Trim trims characters from both sides of the input. +// If second argument is empty, it will remove spaces. +func Trim(str, chars string) string { + return LeftTrim(RightTrim(str, chars), chars) +} + +// WhiteList removes characters that do not appear in the whitelist. +func WhiteList(str, chars string) string { + pattern := "[^" + chars + "]+" + r, _ := regexp.Compile(pattern) + return r.ReplaceAllString(str, "") +} + +// BlackList removes characters that appear in the blacklist. +func BlackList(str, chars string) string { + pattern := "[" + chars + "]+" + r, _ := regexp.Compile(pattern) + return r.ReplaceAllString(str, "") +} + +// StripLow removes characters with a numerical value < 32 and 127, mostly control characters. +// If keep_new_lines is true, newline characters are preserved (\n and \r, hex 0xA and 0xD). +func StripLow(str string, keepNewLines bool) string { + chars := "" + if keepNewLines { + chars = "\x00-\x09\x0B\x0C\x0E-\x1F\x7F" + } else { + chars = "\x00-\x1F\x7F" + } + return BlackList(str, chars) +} + +// ReplacePattern replaces regular expression pattern in string +func ReplacePattern(str, pattern, replace string) string { + r, _ := regexp.Compile(pattern) + return r.ReplaceAllString(str, replace) +} + +// Escape replaces <, >, & and " with HTML entities. +var Escape = html.EscapeString + +func addSegment(inrune, segment []rune) []rune { + if len(segment) == 0 { + return inrune + } + if len(inrune) != 0 { + inrune = append(inrune, '_') + } + inrune = append(inrune, segment...) + return inrune +} + +// UnderscoreToCamelCase converts from underscore separated form to camel case form. +// Ex.: my_func => MyFunc +func UnderscoreToCamelCase(s string) string { + return strings.Replace(strings.Title(strings.Replace(strings.ToLower(s), "_", " ", -1)), " ", "", -1) +} + +// CamelCaseToUnderscore converts from camel case form to underscore separated form. +// Ex.: MyFunc => my_func +func CamelCaseToUnderscore(str string) string { + var output []rune + var segment []rune + for _, r := range str { + + // not treat number as separate segment + if !unicode.IsLower(r) && string(r) != "_" && !unicode.IsNumber(r) { + output = addSegment(output, segment) + segment = nil + } + segment = append(segment, unicode.ToLower(r)) + } + output = addSegment(output, segment) + return string(output) +} + +// Reverse returns reversed string +func Reverse(s string) string { + r := []rune(s) + for i, j := 0, len(r)-1; i < j; i, j = i+1, j-1 { + r[i], r[j] = r[j], r[i] + } + return string(r) +} + +// GetLines splits string by "\n" and return array of lines +func GetLines(s string) []string { + return strings.Split(s, "\n") +} + +// GetLine returns specified line of multiline string +func GetLine(s string, index int) (string, error) { + lines := GetLines(s) + if index < 0 || index >= len(lines) { + return "", errors.New("line index out of bounds") + } + return lines[index], nil +} + +// RemoveTags removes all tags from HTML string +func RemoveTags(s string) string { + return ReplacePattern(s, "<[^>]*>", "") +} + +// SafeFileName returns safe string that can be used in file names +func SafeFileName(str string) string { + name := strings.ToLower(str) + name = path.Clean(path.Base(name)) + name = strings.Trim(name, " ") + separators, err := regexp.Compile(`[ &_=+:]`) + if err == nil { + name = separators.ReplaceAllString(name, "-") + } + legal, err := regexp.Compile(`[^[:alnum:]-.]`) + if err == nil { + name = legal.ReplaceAllString(name, "") + } + for strings.Contains(name, "--") { + name = strings.Replace(name, "--", "-", -1) + } + return name +} + +// NormalizeEmail canonicalize an email address. +// The local part of the email address is lowercased for all domains; the hostname is always lowercased and +// the local part of the email address is always lowercased for hosts that are known to be case-insensitive (currently only GMail). +// Normalization follows special rules for known providers: currently, GMail addresses have dots removed in the local part and +// are stripped of tags (e.g. some.one+tag@gmail.com becomes someone@gmail.com) and all @googlemail.com addresses are +// normalized to @gmail.com. +func NormalizeEmail(str string) (string, error) { + if !IsEmail(str) { + return "", fmt.Errorf("%s is not an email", str) + } + parts := strings.Split(str, "@") + parts[0] = strings.ToLower(parts[0]) + parts[1] = strings.ToLower(parts[1]) + if parts[1] == "gmail.com" || parts[1] == "googlemail.com" { + parts[1] = "gmail.com" + parts[0] = strings.Split(ReplacePattern(parts[0], `\.`, ""), "+")[0] + } + return strings.Join(parts, "@"), nil +} + +// Truncate a string to the closest length without breaking words. +func Truncate(str string, length int, ending string) string { + var aftstr, befstr string + if len(str) > length { + words := strings.Fields(str) + before, present := 0, 0 + for i := range words { + befstr = aftstr + before = present + aftstr = aftstr + words[i] + " " + present = len(aftstr) + if present > length && i != 0 { + if (length - before) < (present - length) { + return Trim(befstr, " /\\.,\"'#!?&@+-") + ending + } + return Trim(aftstr, " /\\.,\"'#!?&@+-") + ending + } + } + } + + return str +} + +// PadLeft pads left side of a string if size of string is less then indicated pad length +func PadLeft(str string, padStr string, padLen int) string { + return buildPadStr(str, padStr, padLen, true, false) +} + +// PadRight pads right side of a string if size of string is less then indicated pad length +func PadRight(str string, padStr string, padLen int) string { + return buildPadStr(str, padStr, padLen, false, true) +} + +// PadBoth pads both sides of a string if size of string is less then indicated pad length +func PadBoth(str string, padStr string, padLen int) string { + return buildPadStr(str, padStr, padLen, true, true) +} + +// PadString either left, right or both sides. +// Note that padding string can be unicode and more then one character +func buildPadStr(str string, padStr string, padLen int, padLeft bool, padRight bool) string { + + // When padded length is less then the current string size + if padLen < utf8.RuneCountInString(str) { + return str + } + + padLen -= utf8.RuneCountInString(str) + + targetLen := padLen + + targetLenLeft := targetLen + targetLenRight := targetLen + if padLeft && padRight { + targetLenLeft = padLen / 2 + targetLenRight = padLen - targetLenLeft + } + + strToRepeatLen := utf8.RuneCountInString(padStr) + + repeatTimes := int(math.Ceil(float64(targetLen) / float64(strToRepeatLen))) + repeatedString := strings.Repeat(padStr, repeatTimes) + + leftSide := "" + if padLeft { + leftSide = repeatedString[0:targetLenLeft] + } + + rightSide := "" + if padRight { + rightSide = repeatedString[0:targetLenRight] + } + + return leftSide + str + rightSide +} + +// TruncatingErrorf removes extra args from fmt.Errorf if not formatted in the str object +func TruncatingErrorf(str string, args ...interface{}) error { + n := strings.Count(str, "%s") + return fmt.Errorf(str, args[:n]...) +} diff --git a/extra/server-discovery/vendor/github.com/asaskevich/govalidator/validator.go b/extra/server-discovery/vendor/github.com/asaskevich/govalidator/validator.go new file mode 100644 index 000000000..46ecfc84a --- /dev/null +++ b/extra/server-discovery/vendor/github.com/asaskevich/govalidator/validator.go @@ -0,0 +1,1769 @@ +// Package govalidator is package of validators and sanitizers for strings, structs and collections. +package govalidator + +import ( + "bytes" + "crypto/rsa" + "crypto/x509" + "encoding/base64" + "encoding/json" + "encoding/pem" + "fmt" + "io/ioutil" + "net" + "net/url" + "reflect" + "regexp" + "sort" + "strconv" + "strings" + "time" + "unicode" + "unicode/utf8" +) + +var ( + fieldsRequiredByDefault bool + nilPtrAllowedByRequired = false + notNumberRegexp = regexp.MustCompile("[^0-9]+") + whiteSpacesAndMinus = regexp.MustCompile(`[\s-]+`) + paramsRegexp = regexp.MustCompile(`\(.*\)$`) +) + +const maxURLRuneCount = 2083 +const minURLRuneCount = 3 +const rfc3339WithoutZone = "2006-01-02T15:04:05" + +// SetFieldsRequiredByDefault causes validation to fail when struct fields +// do not include validations or are not explicitly marked as exempt (using `valid:"-"` or `valid:"email,optional"`). +// This struct definition will fail govalidator.ValidateStruct() (and the field values do not matter): +// type exampleStruct struct { +// Name string `` +// Email string `valid:"email"` +// This, however, will only fail when Email is empty or an invalid email address: +// type exampleStruct2 struct { +// Name string `valid:"-"` +// Email string `valid:"email"` +// Lastly, this will only fail when Email is an invalid email address but not when it's empty: +// type exampleStruct2 struct { +// Name string `valid:"-"` +// Email string `valid:"email,optional"` +func SetFieldsRequiredByDefault(value bool) { + fieldsRequiredByDefault = value +} + +// SetNilPtrAllowedByRequired causes validation to pass for nil ptrs when a field is set to required. +// The validation will still reject ptr fields in their zero value state. Example with this enabled: +// type exampleStruct struct { +// Name *string `valid:"required"` +// With `Name` set to "", this will be considered invalid input and will cause a validation error. +// With `Name` set to nil, this will be considered valid by validation. +// By default this is disabled. +func SetNilPtrAllowedByRequired(value bool) { + nilPtrAllowedByRequired = value +} + +// IsEmail checks if the string is an email. +func IsEmail(str string) bool { + // TODO uppercase letters are not supported + return rxEmail.MatchString(str) +} + +// IsExistingEmail checks if the string is an email of existing domain +func IsExistingEmail(email string) bool { + + if len(email) < 6 || len(email) > 254 { + return false + } + at := strings.LastIndex(email, "@") + if at <= 0 || at > len(email)-3 { + return false + } + user := email[:at] + host := email[at+1:] + if len(user) > 64 { + return false + } + switch host { + case "localhost", "example.com": + return true + } + if userDotRegexp.MatchString(user) || !userRegexp.MatchString(user) || !hostRegexp.MatchString(host) { + return false + } + if _, err := net.LookupMX(host); err != nil { + if _, err := net.LookupIP(host); err != nil { + return false + } + } + + return true +} + +// IsURL checks if the string is an URL. +func IsURL(str string) bool { + if str == "" || utf8.RuneCountInString(str) >= maxURLRuneCount || len(str) <= minURLRuneCount || strings.HasPrefix(str, ".") { + return false + } + strTemp := str + if strings.Contains(str, ":") && !strings.Contains(str, "://") { + // support no indicated urlscheme but with colon for port number + // http:// is appended so url.Parse will succeed, strTemp used so it does not impact rxURL.MatchString + strTemp = "http://" + str + } + u, err := url.Parse(strTemp) + if err != nil { + return false + } + if strings.HasPrefix(u.Host, ".") { + return false + } + if u.Host == "" && (u.Path != "" && !strings.Contains(u.Path, ".")) { + return false + } + return rxURL.MatchString(str) +} + +// IsRequestURL checks if the string rawurl, assuming +// it was received in an HTTP request, is a valid +// URL confirm to RFC 3986 +func IsRequestURL(rawurl string) bool { + url, err := url.ParseRequestURI(rawurl) + if err != nil { + return false //Couldn't even parse the rawurl + } + if len(url.Scheme) == 0 { + return false //No Scheme found + } + return true +} + +// IsRequestURI checks if the string rawurl, assuming +// it was received in an HTTP request, is an +// absolute URI or an absolute path. +func IsRequestURI(rawurl string) bool { + _, err := url.ParseRequestURI(rawurl) + return err == nil +} + +// IsAlpha checks if the string contains only letters (a-zA-Z). Empty string is valid. +func IsAlpha(str string) bool { + if IsNull(str) { + return true + } + return rxAlpha.MatchString(str) +} + +//IsUTFLetter checks if the string contains only unicode letter characters. +//Similar to IsAlpha but for all languages. Empty string is valid. +func IsUTFLetter(str string) bool { + if IsNull(str) { + return true + } + + for _, c := range str { + if !unicode.IsLetter(c) { + return false + } + } + return true + +} + +// IsAlphanumeric checks if the string contains only letters and numbers. Empty string is valid. +func IsAlphanumeric(str string) bool { + if IsNull(str) { + return true + } + return rxAlphanumeric.MatchString(str) +} + +// IsUTFLetterNumeric checks if the string contains only unicode letters and numbers. Empty string is valid. +func IsUTFLetterNumeric(str string) bool { + if IsNull(str) { + return true + } + for _, c := range str { + if !unicode.IsLetter(c) && !unicode.IsNumber(c) { //letters && numbers are ok + return false + } + } + return true + +} + +// IsNumeric checks if the string contains only numbers. Empty string is valid. +func IsNumeric(str string) bool { + if IsNull(str) { + return true + } + return rxNumeric.MatchString(str) +} + +// IsUTFNumeric checks if the string contains only unicode numbers of any kind. +// Numbers can be 0-9 but also Fractions ¾,Roman Ⅸ and Hangzhou 〩. Empty string is valid. +func IsUTFNumeric(str string) bool { + if IsNull(str) { + return true + } + if strings.IndexAny(str, "+-") > 0 { + return false + } + if len(str) > 1 { + str = strings.TrimPrefix(str, "-") + str = strings.TrimPrefix(str, "+") + } + for _, c := range str { + if !unicode.IsNumber(c) { //numbers && minus sign are ok + return false + } + } + return true + +} + +// IsUTFDigit checks if the string contains only unicode radix-10 decimal digits. Empty string is valid. +func IsUTFDigit(str string) bool { + if IsNull(str) { + return true + } + if strings.IndexAny(str, "+-") > 0 { + return false + } + if len(str) > 1 { + str = strings.TrimPrefix(str, "-") + str = strings.TrimPrefix(str, "+") + } + for _, c := range str { + if !unicode.IsDigit(c) { //digits && minus sign are ok + return false + } + } + return true + +} + +// IsHexadecimal checks if the string is a hexadecimal number. +func IsHexadecimal(str string) bool { + return rxHexadecimal.MatchString(str) +} + +// IsHexcolor checks if the string is a hexadecimal color. +func IsHexcolor(str string) bool { + return rxHexcolor.MatchString(str) +} + +// IsRGBcolor checks if the string is a valid RGB color in form rgb(RRR, GGG, BBB). +func IsRGBcolor(str string) bool { + return rxRGBcolor.MatchString(str) +} + +// IsLowerCase checks if the string is lowercase. Empty string is valid. +func IsLowerCase(str string) bool { + if IsNull(str) { + return true + } + return str == strings.ToLower(str) +} + +// IsUpperCase checks if the string is uppercase. Empty string is valid. +func IsUpperCase(str string) bool { + if IsNull(str) { + return true + } + return str == strings.ToUpper(str) +} + +// HasLowerCase checks if the string contains at least 1 lowercase. Empty string is valid. +func HasLowerCase(str string) bool { + if IsNull(str) { + return true + } + return rxHasLowerCase.MatchString(str) +} + +// HasUpperCase checks if the string contains as least 1 uppercase. Empty string is valid. +func HasUpperCase(str string) bool { + if IsNull(str) { + return true + } + return rxHasUpperCase.MatchString(str) +} + +// IsInt checks if the string is an integer. Empty string is valid. +func IsInt(str string) bool { + if IsNull(str) { + return true + } + return rxInt.MatchString(str) +} + +// IsFloat checks if the string is a float. +func IsFloat(str string) bool { + return str != "" && rxFloat.MatchString(str) +} + +// IsDivisibleBy checks if the string is a number that's divisible by another. +// If second argument is not valid integer or zero, it's return false. +// Otherwise, if first argument is not valid integer or zero, it's return true (Invalid string converts to zero). +func IsDivisibleBy(str, num string) bool { + f, _ := ToFloat(str) + p := int64(f) + q, _ := ToInt(num) + if q == 0 { + return false + } + return (p == 0) || (p%q == 0) +} + +// IsNull checks if the string is null. +func IsNull(str string) bool { + return len(str) == 0 +} + +// IsNotNull checks if the string is not null. +func IsNotNull(str string) bool { + return !IsNull(str) +} + +// HasWhitespaceOnly checks the string only contains whitespace +func HasWhitespaceOnly(str string) bool { + return len(str) > 0 && rxHasWhitespaceOnly.MatchString(str) +} + +// HasWhitespace checks if the string contains any whitespace +func HasWhitespace(str string) bool { + return len(str) > 0 && rxHasWhitespace.MatchString(str) +} + +// IsByteLength checks if the string's length (in bytes) falls in a range. +func IsByteLength(str string, min, max int) bool { + return len(str) >= min && len(str) <= max +} + +// IsUUIDv3 checks if the string is a UUID version 3. +func IsUUIDv3(str string) bool { + return rxUUID3.MatchString(str) +} + +// IsUUIDv4 checks if the string is a UUID version 4. +func IsUUIDv4(str string) bool { + return rxUUID4.MatchString(str) +} + +// IsUUIDv5 checks if the string is a UUID version 5. +func IsUUIDv5(str string) bool { + return rxUUID5.MatchString(str) +} + +// IsUUID checks if the string is a UUID (version 3, 4 or 5). +func IsUUID(str string) bool { + return rxUUID.MatchString(str) +} + +// Byte to index table for O(1) lookups when unmarshaling. +// We use 0xFF as sentinel value for invalid indexes. +var ulidDec = [...]byte{ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x01, + 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, + 0x0F, 0x10, 0x11, 0xFF, 0x12, 0x13, 0xFF, 0x14, 0x15, 0xFF, + 0x16, 0x17, 0x18, 0x19, 0x1A, 0xFF, 0x1B, 0x1C, 0x1D, 0x1E, + 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0x0B, 0x0C, + 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0xFF, 0x12, 0x13, 0xFF, 0x14, + 0x15, 0xFF, 0x16, 0x17, 0x18, 0x19, 0x1A, 0xFF, 0x1B, 0x1C, + 0x1D, 0x1E, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +} + +// EncodedSize is the length of a text encoded ULID. +const ulidEncodedSize = 26 + +// IsULID checks if the string is a ULID. +// +// Implementation got from: +// https://github.com/oklog/ulid (Apache-2.0 License) +// +func IsULID(str string) bool { + // Check if a base32 encoded ULID is the right length. + if len(str) != ulidEncodedSize { + return false + } + + // Check if all the characters in a base32 encoded ULID are part of the + // expected base32 character set. + if ulidDec[str[0]] == 0xFF || + ulidDec[str[1]] == 0xFF || + ulidDec[str[2]] == 0xFF || + ulidDec[str[3]] == 0xFF || + ulidDec[str[4]] == 0xFF || + ulidDec[str[5]] == 0xFF || + ulidDec[str[6]] == 0xFF || + ulidDec[str[7]] == 0xFF || + ulidDec[str[8]] == 0xFF || + ulidDec[str[9]] == 0xFF || + ulidDec[str[10]] == 0xFF || + ulidDec[str[11]] == 0xFF || + ulidDec[str[12]] == 0xFF || + ulidDec[str[13]] == 0xFF || + ulidDec[str[14]] == 0xFF || + ulidDec[str[15]] == 0xFF || + ulidDec[str[16]] == 0xFF || + ulidDec[str[17]] == 0xFF || + ulidDec[str[18]] == 0xFF || + ulidDec[str[19]] == 0xFF || + ulidDec[str[20]] == 0xFF || + ulidDec[str[21]] == 0xFF || + ulidDec[str[22]] == 0xFF || + ulidDec[str[23]] == 0xFF || + ulidDec[str[24]] == 0xFF || + ulidDec[str[25]] == 0xFF { + return false + } + + // Check if the first character in a base32 encoded ULID will overflow. This + // happens because the base32 representation encodes 130 bits, while the + // ULID is only 128 bits. + // + // See https://github.com/oklog/ulid/issues/9 for details. + if str[0] > '7' { + return false + } + return true +} + +// IsCreditCard checks if the string is a credit card. +func IsCreditCard(str string) bool { + sanitized := whiteSpacesAndMinus.ReplaceAllString(str, "") + if !rxCreditCard.MatchString(sanitized) { + return false + } + var sum int64 + var digit string + var tmpNum int64 + var shouldDouble bool + for i := len(sanitized) - 1; i >= 0; i-- { + digit = sanitized[i:(i + 1)] + tmpNum, _ = ToInt(digit) + if shouldDouble { + tmpNum *= 2 + if tmpNum >= 10 { + sum += (tmpNum % 10) + 1 + } else { + sum += tmpNum + } + } else { + sum += tmpNum + } + shouldDouble = !shouldDouble + } + + return sum%10 == 0 +} + +// IsISBN10 checks if the string is an ISBN version 10. +func IsISBN10(str string) bool { + return IsISBN(str, 10) +} + +// IsISBN13 checks if the string is an ISBN version 13. +func IsISBN13(str string) bool { + return IsISBN(str, 13) +} + +// IsISBN checks if the string is an ISBN (version 10 or 13). +// If version value is not equal to 10 or 13, it will be checks both variants. +func IsISBN(str string, version int) bool { + sanitized := whiteSpacesAndMinus.ReplaceAllString(str, "") + var checksum int32 + var i int32 + if version == 10 { + if !rxISBN10.MatchString(sanitized) { + return false + } + for i = 0; i < 9; i++ { + checksum += (i + 1) * int32(sanitized[i]-'0') + } + if sanitized[9] == 'X' { + checksum += 10 * 10 + } else { + checksum += 10 * int32(sanitized[9]-'0') + } + if checksum%11 == 0 { + return true + } + return false + } else if version == 13 { + if !rxISBN13.MatchString(sanitized) { + return false + } + factor := []int32{1, 3} + for i = 0; i < 12; i++ { + checksum += factor[i%2] * int32(sanitized[i]-'0') + } + return (int32(sanitized[12]-'0'))-((10-(checksum%10))%10) == 0 + } + return IsISBN(str, 10) || IsISBN(str, 13) +} + +// IsJSON checks if the string is valid JSON (note: uses json.Unmarshal). +func IsJSON(str string) bool { + var js json.RawMessage + return json.Unmarshal([]byte(str), &js) == nil +} + +// IsMultibyte checks if the string contains one or more multibyte chars. Empty string is valid. +func IsMultibyte(str string) bool { + if IsNull(str) { + return true + } + return rxMultibyte.MatchString(str) +} + +// IsASCII checks if the string contains ASCII chars only. Empty string is valid. +func IsASCII(str string) bool { + if IsNull(str) { + return true + } + return rxASCII.MatchString(str) +} + +// IsPrintableASCII checks if the string contains printable ASCII chars only. Empty string is valid. +func IsPrintableASCII(str string) bool { + if IsNull(str) { + return true + } + return rxPrintableASCII.MatchString(str) +} + +// IsFullWidth checks if the string contains any full-width chars. Empty string is valid. +func IsFullWidth(str string) bool { + if IsNull(str) { + return true + } + return rxFullWidth.MatchString(str) +} + +// IsHalfWidth checks if the string contains any half-width chars. Empty string is valid. +func IsHalfWidth(str string) bool { + if IsNull(str) { + return true + } + return rxHalfWidth.MatchString(str) +} + +// IsVariableWidth checks if the string contains a mixture of full and half-width chars. Empty string is valid. +func IsVariableWidth(str string) bool { + if IsNull(str) { + return true + } + return rxHalfWidth.MatchString(str) && rxFullWidth.MatchString(str) +} + +// IsBase64 checks if a string is base64 encoded. +func IsBase64(str string) bool { + return rxBase64.MatchString(str) +} + +// IsFilePath checks is a string is Win or Unix file path and returns it's type. +func IsFilePath(str string) (bool, int) { + if rxWinPath.MatchString(str) { + //check windows path limit see: + // http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx#maxpath + if len(str[3:]) > 32767 { + return false, Win + } + return true, Win + } else if rxUnixPath.MatchString(str) { + return true, Unix + } + return false, Unknown +} + +//IsWinFilePath checks both relative & absolute paths in Windows +func IsWinFilePath(str string) bool { + if rxARWinPath.MatchString(str) { + //check windows path limit see: + // http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx#maxpath + if len(str[3:]) > 32767 { + return false + } + return true + } + return false +} + +//IsUnixFilePath checks both relative & absolute paths in Unix +func IsUnixFilePath(str string) bool { + if rxARUnixPath.MatchString(str) { + return true + } + return false +} + +// IsDataURI checks if a string is base64 encoded data URI such as an image +func IsDataURI(str string) bool { + dataURI := strings.Split(str, ",") + if !rxDataURI.MatchString(dataURI[0]) { + return false + } + return IsBase64(dataURI[1]) +} + +// IsMagnetURI checks if a string is valid magnet URI +func IsMagnetURI(str string) bool { + return rxMagnetURI.MatchString(str) +} + +// IsISO3166Alpha2 checks if a string is valid two-letter country code +func IsISO3166Alpha2(str string) bool { + for _, entry := range ISO3166List { + if str == entry.Alpha2Code { + return true + } + } + return false +} + +// IsISO3166Alpha3 checks if a string is valid three-letter country code +func IsISO3166Alpha3(str string) bool { + for _, entry := range ISO3166List { + if str == entry.Alpha3Code { + return true + } + } + return false +} + +// IsISO693Alpha2 checks if a string is valid two-letter language code +func IsISO693Alpha2(str string) bool { + for _, entry := range ISO693List { + if str == entry.Alpha2Code { + return true + } + } + return false +} + +// IsISO693Alpha3b checks if a string is valid three-letter language code +func IsISO693Alpha3b(str string) bool { + for _, entry := range ISO693List { + if str == entry.Alpha3bCode { + return true + } + } + return false +} + +// IsDNSName will validate the given string as a DNS name +func IsDNSName(str string) bool { + if str == "" || len(strings.Replace(str, ".", "", -1)) > 255 { + // constraints already violated + return false + } + return !IsIP(str) && rxDNSName.MatchString(str) +} + +// IsHash checks if a string is a hash of type algorithm. +// Algorithm is one of ['md4', 'md5', 'sha1', 'sha256', 'sha384', 'sha512', 'ripemd128', 'ripemd160', 'tiger128', 'tiger160', 'tiger192', 'crc32', 'crc32b'] +func IsHash(str string, algorithm string) bool { + var len string + algo := strings.ToLower(algorithm) + + if algo == "crc32" || algo == "crc32b" { + len = "8" + } else if algo == "md5" || algo == "md4" || algo == "ripemd128" || algo == "tiger128" { + len = "32" + } else if algo == "sha1" || algo == "ripemd160" || algo == "tiger160" { + len = "40" + } else if algo == "tiger192" { + len = "48" + } else if algo == "sha3-224" { + len = "56" + } else if algo == "sha256" || algo == "sha3-256" { + len = "64" + } else if algo == "sha384" || algo == "sha3-384" { + len = "96" + } else if algo == "sha512" || algo == "sha3-512" { + len = "128" + } else { + return false + } + + return Matches(str, "^[a-f0-9]{"+len+"}$") +} + +// IsSHA3224 checks is a string is a SHA3-224 hash. Alias for `IsHash(str, "sha3-224")` +func IsSHA3224(str string) bool { + return IsHash(str, "sha3-224") +} + +// IsSHA3256 checks is a string is a SHA3-256 hash. Alias for `IsHash(str, "sha3-256")` +func IsSHA3256(str string) bool { + return IsHash(str, "sha3-256") +} + +// IsSHA3384 checks is a string is a SHA3-384 hash. Alias for `IsHash(str, "sha3-384")` +func IsSHA3384(str string) bool { + return IsHash(str, "sha3-384") +} + +// IsSHA3512 checks is a string is a SHA3-512 hash. Alias for `IsHash(str, "sha3-512")` +func IsSHA3512(str string) bool { + return IsHash(str, "sha3-512") +} + +// IsSHA512 checks is a string is a SHA512 hash. Alias for `IsHash(str, "sha512")` +func IsSHA512(str string) bool { + return IsHash(str, "sha512") +} + +// IsSHA384 checks is a string is a SHA384 hash. Alias for `IsHash(str, "sha384")` +func IsSHA384(str string) bool { + return IsHash(str, "sha384") +} + +// IsSHA256 checks is a string is a SHA256 hash. Alias for `IsHash(str, "sha256")` +func IsSHA256(str string) bool { + return IsHash(str, "sha256") +} + +// IsTiger192 checks is a string is a Tiger192 hash. Alias for `IsHash(str, "tiger192")` +func IsTiger192(str string) bool { + return IsHash(str, "tiger192") +} + +// IsTiger160 checks is a string is a Tiger160 hash. Alias for `IsHash(str, "tiger160")` +func IsTiger160(str string) bool { + return IsHash(str, "tiger160") +} + +// IsRipeMD160 checks is a string is a RipeMD160 hash. Alias for `IsHash(str, "ripemd160")` +func IsRipeMD160(str string) bool { + return IsHash(str, "ripemd160") +} + +// IsSHA1 checks is a string is a SHA-1 hash. Alias for `IsHash(str, "sha1")` +func IsSHA1(str string) bool { + return IsHash(str, "sha1") +} + +// IsTiger128 checks is a string is a Tiger128 hash. Alias for `IsHash(str, "tiger128")` +func IsTiger128(str string) bool { + return IsHash(str, "tiger128") +} + +// IsRipeMD128 checks is a string is a RipeMD128 hash. Alias for `IsHash(str, "ripemd128")` +func IsRipeMD128(str string) bool { + return IsHash(str, "ripemd128") +} + +// IsCRC32 checks is a string is a CRC32 hash. Alias for `IsHash(str, "crc32")` +func IsCRC32(str string) bool { + return IsHash(str, "crc32") +} + +// IsCRC32b checks is a string is a CRC32b hash. Alias for `IsHash(str, "crc32b")` +func IsCRC32b(str string) bool { + return IsHash(str, "crc32b") +} + +// IsMD5 checks is a string is a MD5 hash. Alias for `IsHash(str, "md5")` +func IsMD5(str string) bool { + return IsHash(str, "md5") +} + +// IsMD4 checks is a string is a MD4 hash. Alias for `IsHash(str, "md4")` +func IsMD4(str string) bool { + return IsHash(str, "md4") +} + +// IsDialString validates the given string for usage with the various Dial() functions +func IsDialString(str string) bool { + if h, p, err := net.SplitHostPort(str); err == nil && h != "" && p != "" && (IsDNSName(h) || IsIP(h)) && IsPort(p) { + return true + } + + return false +} + +// IsIP checks if a string is either IP version 4 or 6. Alias for `net.ParseIP` +func IsIP(str string) bool { + return net.ParseIP(str) != nil +} + +// IsPort checks if a string represents a valid port +func IsPort(str string) bool { + if i, err := strconv.Atoi(str); err == nil && i > 0 && i < 65536 { + return true + } + return false +} + +// IsIPv4 checks if the string is an IP version 4. +func IsIPv4(str string) bool { + ip := net.ParseIP(str) + return ip != nil && strings.Contains(str, ".") +} + +// IsIPv6 checks if the string is an IP version 6. +func IsIPv6(str string) bool { + ip := net.ParseIP(str) + return ip != nil && strings.Contains(str, ":") +} + +// IsCIDR checks if the string is an valid CIDR notiation (IPV4 & IPV6) +func IsCIDR(str string) bool { + _, _, err := net.ParseCIDR(str) + return err == nil +} + +// IsMAC checks if a string is valid MAC address. +// Possible MAC formats: +// 01:23:45:67:89:ab +// 01:23:45:67:89:ab:cd:ef +// 01-23-45-67-89-ab +// 01-23-45-67-89-ab-cd-ef +// 0123.4567.89ab +// 0123.4567.89ab.cdef +func IsMAC(str string) bool { + _, err := net.ParseMAC(str) + return err == nil +} + +// IsHost checks if the string is a valid IP (both v4 and v6) or a valid DNS name +func IsHost(str string) bool { + return IsIP(str) || IsDNSName(str) +} + +// IsMongoID checks if the string is a valid hex-encoded representation of a MongoDB ObjectId. +func IsMongoID(str string) bool { + return rxHexadecimal.MatchString(str) && (len(str) == 24) +} + +// IsLatitude checks if a string is valid latitude. +func IsLatitude(str string) bool { + return rxLatitude.MatchString(str) +} + +// IsLongitude checks if a string is valid longitude. +func IsLongitude(str string) bool { + return rxLongitude.MatchString(str) +} + +// IsIMEI checks if a string is valid IMEI +func IsIMEI(str string) bool { + return rxIMEI.MatchString(str) +} + +// IsIMSI checks if a string is valid IMSI +func IsIMSI(str string) bool { + if !rxIMSI.MatchString(str) { + return false + } + + mcc, err := strconv.ParseInt(str[0:3], 10, 32) + if err != nil { + return false + } + + switch mcc { + case 202, 204, 206, 208, 212, 213, 214, 216, 218, 219: + case 220, 221, 222, 226, 228, 230, 231, 232, 234, 235: + case 238, 240, 242, 244, 246, 247, 248, 250, 255, 257: + case 259, 260, 262, 266, 268, 270, 272, 274, 276, 278: + case 280, 282, 283, 284, 286, 288, 289, 290, 292, 293: + case 294, 295, 297, 302, 308, 310, 311, 312, 313, 314: + case 315, 316, 330, 332, 334, 338, 340, 342, 344, 346: + case 348, 350, 352, 354, 356, 358, 360, 362, 363, 364: + case 365, 366, 368, 370, 372, 374, 376, 400, 401, 402: + case 404, 405, 406, 410, 412, 413, 414, 415, 416, 417: + case 418, 419, 420, 421, 422, 424, 425, 426, 427, 428: + case 429, 430, 431, 432, 434, 436, 437, 438, 440, 441: + case 450, 452, 454, 455, 456, 457, 460, 461, 466, 467: + case 470, 472, 502, 505, 510, 514, 515, 520, 525, 528: + case 530, 536, 537, 539, 540, 541, 542, 543, 544, 545: + case 546, 547, 548, 549, 550, 551, 552, 553, 554, 555: + case 602, 603, 604, 605, 606, 607, 608, 609, 610, 611: + case 612, 613, 614, 615, 616, 617, 618, 619, 620, 621: + case 622, 623, 624, 625, 626, 627, 628, 629, 630, 631: + case 632, 633, 634, 635, 636, 637, 638, 639, 640, 641: + case 642, 643, 645, 646, 647, 648, 649, 650, 651, 652: + case 653, 654, 655, 657, 658, 659, 702, 704, 706, 708: + case 710, 712, 714, 716, 722, 724, 730, 732, 734, 736: + case 738, 740, 742, 744, 746, 748, 750, 995: + return true + default: + return false + } + return true +} + +// IsRsaPublicKey checks if a string is valid public key with provided length +func IsRsaPublicKey(str string, keylen int) bool { + bb := bytes.NewBufferString(str) + pemBytes, err := ioutil.ReadAll(bb) + if err != nil { + return false + } + block, _ := pem.Decode(pemBytes) + if block != nil && block.Type != "PUBLIC KEY" { + return false + } + var der []byte + + if block != nil { + der = block.Bytes + } else { + der, err = base64.StdEncoding.DecodeString(str) + if err != nil { + return false + } + } + + key, err := x509.ParsePKIXPublicKey(der) + if err != nil { + return false + } + pubkey, ok := key.(*rsa.PublicKey) + if !ok { + return false + } + bitlen := len(pubkey.N.Bytes()) * 8 + return bitlen == int(keylen) +} + +// IsRegex checks if a give string is a valid regex with RE2 syntax or not +func IsRegex(str string) bool { + if _, err := regexp.Compile(str); err == nil { + return true + } + return false +} + +func toJSONName(tag string) string { + if tag == "" { + return "" + } + + // JSON name always comes first. If there's no options then split[0] is + // JSON name, if JSON name is not set, then split[0] is an empty string. + split := strings.SplitN(tag, ",", 2) + + name := split[0] + + // However it is possible that the field is skipped when + // (de-)serializing from/to JSON, in which case assume that there is no + // tag name to use + if name == "-" { + return "" + } + return name +} + +func prependPathToErrors(err error, path string) error { + switch err2 := err.(type) { + case Error: + err2.Path = append([]string{path}, err2.Path...) + return err2 + case Errors: + errors := err2.Errors() + for i, err3 := range errors { + errors[i] = prependPathToErrors(err3, path) + } + return err2 + } + return err +} + +// ValidateArray performs validation according to condition iterator that validates every element of the array +func ValidateArray(array []interface{}, iterator ConditionIterator) bool { + return Every(array, iterator) +} + +// ValidateMap use validation map for fields. +// result will be equal to `false` if there are any errors. +// s is the map containing the data to be validated. +// m is the validation map in the form: +// map[string]interface{}{"name":"required,alpha","address":map[string]interface{}{"line1":"required,alphanum"}} +func ValidateMap(s map[string]interface{}, m map[string]interface{}) (bool, error) { + if s == nil { + return true, nil + } + result := true + var err error + var errs Errors + var index int + val := reflect.ValueOf(s) + for key, value := range s { + presentResult := true + validator, ok := m[key] + if !ok { + presentResult = false + var err error + err = fmt.Errorf("all map keys has to be present in the validation map; got %s", key) + err = prependPathToErrors(err, key) + errs = append(errs, err) + } + valueField := reflect.ValueOf(value) + mapResult := true + typeResult := true + structResult := true + resultField := true + switch subValidator := validator.(type) { + case map[string]interface{}: + var err error + if v, ok := value.(map[string]interface{}); !ok { + mapResult = false + err = fmt.Errorf("map validator has to be for the map type only; got %s", valueField.Type().String()) + err = prependPathToErrors(err, key) + errs = append(errs, err) + } else { + mapResult, err = ValidateMap(v, subValidator) + if err != nil { + mapResult = false + err = prependPathToErrors(err, key) + errs = append(errs, err) + } + } + case string: + if (valueField.Kind() == reflect.Struct || + (valueField.Kind() == reflect.Ptr && valueField.Elem().Kind() == reflect.Struct)) && + subValidator != "-" { + var err error + structResult, err = ValidateStruct(valueField.Interface()) + if err != nil { + err = prependPathToErrors(err, key) + errs = append(errs, err) + } + } + resultField, err = typeCheck(valueField, reflect.StructField{ + Name: key, + PkgPath: "", + Type: val.Type(), + Tag: reflect.StructTag(fmt.Sprintf("%s:%q", tagName, subValidator)), + Offset: 0, + Index: []int{index}, + Anonymous: false, + }, val, nil) + if err != nil { + errs = append(errs, err) + } + case nil: + // already handlerd when checked before + default: + typeResult = false + err = fmt.Errorf("map validator has to be either map[string]interface{} or string; got %s", valueField.Type().String()) + err = prependPathToErrors(err, key) + errs = append(errs, err) + } + result = result && presentResult && typeResult && resultField && structResult && mapResult + index++ + } + // checks required keys + requiredResult := true + for key, value := range m { + if schema, ok := value.(string); ok { + tags := parseTagIntoMap(schema) + if required, ok := tags["required"]; ok { + if _, ok := s[key]; !ok { + requiredResult = false + if required.customErrorMessage != "" { + err = Error{key, fmt.Errorf(required.customErrorMessage), true, "required", []string{}} + } else { + err = Error{key, fmt.Errorf("required field missing"), false, "required", []string{}} + } + errs = append(errs, err) + } + } + } + } + + if len(errs) > 0 { + err = errs + } + return result && requiredResult, err +} + +// ValidateStruct use tags for fields. +// result will be equal to `false` if there are any errors. +// todo currently there is no guarantee that errors will be returned in predictable order (tests may to fail) +func ValidateStruct(s interface{}) (bool, error) { + if s == nil { + return true, nil + } + result := true + var err error + val := reflect.ValueOf(s) + if val.Kind() == reflect.Interface || val.Kind() == reflect.Ptr { + val = val.Elem() + } + // we only accept structs + if val.Kind() != reflect.Struct { + return false, fmt.Errorf("function only accepts structs; got %s", val.Kind()) + } + var errs Errors + for i := 0; i < val.NumField(); i++ { + valueField := val.Field(i) + typeField := val.Type().Field(i) + if typeField.PkgPath != "" { + continue // Private field + } + structResult := true + if valueField.Kind() == reflect.Interface { + valueField = valueField.Elem() + } + if (valueField.Kind() == reflect.Struct || + (valueField.Kind() == reflect.Ptr && valueField.Elem().Kind() == reflect.Struct)) && + typeField.Tag.Get(tagName) != "-" { + var err error + structResult, err = ValidateStruct(valueField.Interface()) + if err != nil { + err = prependPathToErrors(err, typeField.Name) + errs = append(errs, err) + } + } + resultField, err2 := typeCheck(valueField, typeField, val, nil) + if err2 != nil { + + // Replace structure name with JSON name if there is a tag on the variable + jsonTag := toJSONName(typeField.Tag.Get("json")) + if jsonTag != "" { + switch jsonError := err2.(type) { + case Error: + jsonError.Name = jsonTag + err2 = jsonError + case Errors: + for i2, err3 := range jsonError { + switch customErr := err3.(type) { + case Error: + customErr.Name = jsonTag + jsonError[i2] = customErr + } + } + + err2 = jsonError + } + } + + errs = append(errs, err2) + } + result = result && resultField && structResult + } + if len(errs) > 0 { + err = errs + } + return result, err +} + +// ValidateStructAsync performs async validation of the struct and returns results through the channels +func ValidateStructAsync(s interface{}) (<-chan bool, <-chan error) { + res := make(chan bool) + errors := make(chan error) + + go func() { + defer close(res) + defer close(errors) + + isValid, isFailed := ValidateStruct(s) + + res <- isValid + errors <- isFailed + }() + + return res, errors +} + +// ValidateMapAsync performs async validation of the map and returns results through the channels +func ValidateMapAsync(s map[string]interface{}, m map[string]interface{}) (<-chan bool, <-chan error) { + res := make(chan bool) + errors := make(chan error) + + go func() { + defer close(res) + defer close(errors) + + isValid, isFailed := ValidateMap(s, m) + + res <- isValid + errors <- isFailed + }() + + return res, errors +} + +// parseTagIntoMap parses a struct tag `valid:required~Some error message,length(2|3)` into map[string]string{"required": "Some error message", "length(2|3)": ""} +func parseTagIntoMap(tag string) tagOptionsMap { + optionsMap := make(tagOptionsMap) + options := strings.Split(tag, ",") + + for i, option := range options { + option = strings.TrimSpace(option) + + validationOptions := strings.Split(option, "~") + if !isValidTag(validationOptions[0]) { + continue + } + if len(validationOptions) == 2 { + optionsMap[validationOptions[0]] = tagOption{validationOptions[0], validationOptions[1], i} + } else { + optionsMap[validationOptions[0]] = tagOption{validationOptions[0], "", i} + } + } + return optionsMap +} + +func isValidTag(s string) bool { + if s == "" { + return false + } + for _, c := range s { + switch { + case strings.ContainsRune("\\'\"!#$%&()*+-./:<=>?@[]^_{|}~ ", c): + // Backslash and quote chars are reserved, but + // otherwise any punctuation chars are allowed + // in a tag name. + default: + if !unicode.IsLetter(c) && !unicode.IsDigit(c) { + return false + } + } + } + return true +} + +// IsSSN will validate the given string as a U.S. Social Security Number +func IsSSN(str string) bool { + if str == "" || len(str) != 11 { + return false + } + return rxSSN.MatchString(str) +} + +// IsSemver checks if string is valid semantic version +func IsSemver(str string) bool { + return rxSemver.MatchString(str) +} + +// IsType checks if interface is of some type +func IsType(v interface{}, params ...string) bool { + if len(params) == 1 { + typ := params[0] + return strings.Replace(reflect.TypeOf(v).String(), " ", "", -1) == strings.Replace(typ, " ", "", -1) + } + return false +} + +// IsTime checks if string is valid according to given format +func IsTime(str string, format string) bool { + _, err := time.Parse(format, str) + return err == nil +} + +// IsUnixTime checks if string is valid unix timestamp value +func IsUnixTime(str string) bool { + if _, err := strconv.Atoi(str); err == nil { + return true + } + return false +} + +// IsRFC3339 checks if string is valid timestamp value according to RFC3339 +func IsRFC3339(str string) bool { + return IsTime(str, time.RFC3339) +} + +// IsRFC3339WithoutZone checks if string is valid timestamp value according to RFC3339 which excludes the timezone. +func IsRFC3339WithoutZone(str string) bool { + return IsTime(str, rfc3339WithoutZone) +} + +// IsISO4217 checks if string is valid ISO currency code +func IsISO4217(str string) bool { + for _, currency := range ISO4217List { + if str == currency { + return true + } + } + + return false +} + +// ByteLength checks string's length +func ByteLength(str string, params ...string) bool { + if len(params) == 2 { + min, _ := ToInt(params[0]) + max, _ := ToInt(params[1]) + return len(str) >= int(min) && len(str) <= int(max) + } + + return false +} + +// RuneLength checks string's length +// Alias for StringLength +func RuneLength(str string, params ...string) bool { + return StringLength(str, params...) +} + +// IsRsaPub checks whether string is valid RSA key +// Alias for IsRsaPublicKey +func IsRsaPub(str string, params ...string) bool { + if len(params) == 1 { + len, _ := ToInt(params[0]) + return IsRsaPublicKey(str, int(len)) + } + + return false +} + +// StringMatches checks if a string matches a given pattern. +func StringMatches(s string, params ...string) bool { + if len(params) == 1 { + pattern := params[0] + return Matches(s, pattern) + } + return false +} + +// StringLength checks string's length (including multi byte strings) +func StringLength(str string, params ...string) bool { + + if len(params) == 2 { + strLength := utf8.RuneCountInString(str) + min, _ := ToInt(params[0]) + max, _ := ToInt(params[1]) + return strLength >= int(min) && strLength <= int(max) + } + + return false +} + +// MinStringLength checks string's minimum length (including multi byte strings) +func MinStringLength(str string, params ...string) bool { + + if len(params) == 1 { + strLength := utf8.RuneCountInString(str) + min, _ := ToInt(params[0]) + return strLength >= int(min) + } + + return false +} + +// MaxStringLength checks string's maximum length (including multi byte strings) +func MaxStringLength(str string, params ...string) bool { + + if len(params) == 1 { + strLength := utf8.RuneCountInString(str) + max, _ := ToInt(params[0]) + return strLength <= int(max) + } + + return false +} + +// Range checks string's length +func Range(str string, params ...string) bool { + if len(params) == 2 { + value, _ := ToFloat(str) + min, _ := ToFloat(params[0]) + max, _ := ToFloat(params[1]) + return InRange(value, min, max) + } + + return false +} + +// IsInRaw checks if string is in list of allowed values +func IsInRaw(str string, params ...string) bool { + if len(params) == 1 { + rawParams := params[0] + + parsedParams := strings.Split(rawParams, "|") + + return IsIn(str, parsedParams...) + } + + return false +} + +// IsIn checks if string str is a member of the set of strings params +func IsIn(str string, params ...string) bool { + for _, param := range params { + if str == param { + return true + } + } + + return false +} + +func checkRequired(v reflect.Value, t reflect.StructField, options tagOptionsMap) (bool, error) { + if nilPtrAllowedByRequired { + k := v.Kind() + if (k == reflect.Ptr || k == reflect.Interface) && v.IsNil() { + return true, nil + } + } + + if requiredOption, isRequired := options["required"]; isRequired { + if len(requiredOption.customErrorMessage) > 0 { + return false, Error{t.Name, fmt.Errorf(requiredOption.customErrorMessage), true, "required", []string{}} + } + return false, Error{t.Name, fmt.Errorf("non zero value required"), false, "required", []string{}} + } else if _, isOptional := options["optional"]; fieldsRequiredByDefault && !isOptional { + return false, Error{t.Name, fmt.Errorf("Missing required field"), false, "required", []string{}} + } + // not required and empty is valid + return true, nil +} + +func typeCheck(v reflect.Value, t reflect.StructField, o reflect.Value, options tagOptionsMap) (isValid bool, resultErr error) { + if !v.IsValid() { + return false, nil + } + + tag := t.Tag.Get(tagName) + + // checks if the field should be ignored + switch tag { + case "": + if v.Kind() != reflect.Slice && v.Kind() != reflect.Map { + if !fieldsRequiredByDefault { + return true, nil + } + return false, Error{t.Name, fmt.Errorf("All fields are required to at least have one validation defined"), false, "required", []string{}} + } + case "-": + return true, nil + } + + isRootType := false + if options == nil { + isRootType = true + options = parseTagIntoMap(tag) + } + + if isEmptyValue(v) { + // an empty value is not validated, checks only required + isValid, resultErr = checkRequired(v, t, options) + for key := range options { + delete(options, key) + } + return isValid, resultErr + } + + var customTypeErrors Errors + optionsOrder := options.orderedKeys() + for _, validatorName := range optionsOrder { + validatorStruct := options[validatorName] + if validatefunc, ok := CustomTypeTagMap.Get(validatorName); ok { + delete(options, validatorName) + + if result := validatefunc(v.Interface(), o.Interface()); !result { + if len(validatorStruct.customErrorMessage) > 0 { + customTypeErrors = append(customTypeErrors, Error{Name: t.Name, Err: TruncatingErrorf(validatorStruct.customErrorMessage, fmt.Sprint(v), validatorName), CustomErrorMessageExists: true, Validator: stripParams(validatorName)}) + continue + } + customTypeErrors = append(customTypeErrors, Error{Name: t.Name, Err: fmt.Errorf("%s does not validate as %s", fmt.Sprint(v), validatorName), CustomErrorMessageExists: false, Validator: stripParams(validatorName)}) + } + } + } + + if len(customTypeErrors.Errors()) > 0 { + return false, customTypeErrors + } + + if isRootType { + // Ensure that we've checked the value by all specified validators before report that the value is valid + defer func() { + delete(options, "optional") + delete(options, "required") + + if isValid && resultErr == nil && len(options) != 0 { + optionsOrder := options.orderedKeys() + for _, validator := range optionsOrder { + isValid = false + resultErr = Error{t.Name, fmt.Errorf( + "The following validator is invalid or can't be applied to the field: %q", validator), false, stripParams(validator), []string{}} + return + } + } + }() + } + + for _, validatorSpec := range optionsOrder { + validatorStruct := options[validatorSpec] + var negate bool + validator := validatorSpec + customMsgExists := len(validatorStruct.customErrorMessage) > 0 + + // checks whether the tag looks like '!something' or 'something' + if validator[0] == '!' { + validator = validator[1:] + negate = true + } + + // checks for interface param validators + for key, value := range InterfaceParamTagRegexMap { + ps := value.FindStringSubmatch(validator) + if len(ps) == 0 { + continue + } + + validatefunc, ok := InterfaceParamTagMap[key] + if !ok { + continue + } + + delete(options, validatorSpec) + + field := fmt.Sprint(v) + if result := validatefunc(v.Interface(), ps[1:]...); (!result && !negate) || (result && negate) { + if customMsgExists { + return false, Error{t.Name, TruncatingErrorf(validatorStruct.customErrorMessage, field, validator), customMsgExists, stripParams(validatorSpec), []string{}} + } + if negate { + return false, Error{t.Name, fmt.Errorf("%s does validate as %s", field, validator), customMsgExists, stripParams(validatorSpec), []string{}} + } + return false, Error{t.Name, fmt.Errorf("%s does not validate as %s", field, validator), customMsgExists, stripParams(validatorSpec), []string{}} + } + } + } + + switch v.Kind() { + case reflect.Bool, + reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, + reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr, + reflect.Float32, reflect.Float64, + reflect.String: + // for each tag option checks the map of validator functions + for _, validatorSpec := range optionsOrder { + validatorStruct := options[validatorSpec] + var negate bool + validator := validatorSpec + customMsgExists := len(validatorStruct.customErrorMessage) > 0 + + // checks whether the tag looks like '!something' or 'something' + if validator[0] == '!' { + validator = validator[1:] + negate = true + } + + // checks for param validators + for key, value := range ParamTagRegexMap { + ps := value.FindStringSubmatch(validator) + if len(ps) == 0 { + continue + } + + validatefunc, ok := ParamTagMap[key] + if !ok { + continue + } + + delete(options, validatorSpec) + + switch v.Kind() { + case reflect.String, + reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, + reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, + reflect.Float32, reflect.Float64: + + field := fmt.Sprint(v) // make value into string, then validate with regex + if result := validatefunc(field, ps[1:]...); (!result && !negate) || (result && negate) { + if customMsgExists { + return false, Error{t.Name, TruncatingErrorf(validatorStruct.customErrorMessage, field, validator), customMsgExists, stripParams(validatorSpec), []string{}} + } + if negate { + return false, Error{t.Name, fmt.Errorf("%s does validate as %s", field, validator), customMsgExists, stripParams(validatorSpec), []string{}} + } + return false, Error{t.Name, fmt.Errorf("%s does not validate as %s", field, validator), customMsgExists, stripParams(validatorSpec), []string{}} + } + default: + // type not yet supported, fail + return false, Error{t.Name, fmt.Errorf("Validator %s doesn't support kind %s", validator, v.Kind()), false, stripParams(validatorSpec), []string{}} + } + } + + if validatefunc, ok := TagMap[validator]; ok { + delete(options, validatorSpec) + + switch v.Kind() { + case reflect.String, + reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, + reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, + reflect.Float32, reflect.Float64: + field := fmt.Sprint(v) // make value into string, then validate with regex + if result := validatefunc(field); !result && !negate || result && negate { + if customMsgExists { + return false, Error{t.Name, TruncatingErrorf(validatorStruct.customErrorMessage, field, validator), customMsgExists, stripParams(validatorSpec), []string{}} + } + if negate { + return false, Error{t.Name, fmt.Errorf("%s does validate as %s", field, validator), customMsgExists, stripParams(validatorSpec), []string{}} + } + return false, Error{t.Name, fmt.Errorf("%s does not validate as %s", field, validator), customMsgExists, stripParams(validatorSpec), []string{}} + } + default: + //Not Yet Supported Types (Fail here!) + err := fmt.Errorf("Validator %s doesn't support kind %s for value %v", validator, v.Kind(), v) + return false, Error{t.Name, err, false, stripParams(validatorSpec), []string{}} + } + } + } + return true, nil + case reflect.Map: + if v.Type().Key().Kind() != reflect.String { + return false, &UnsupportedTypeError{v.Type()} + } + var sv stringValues + sv = v.MapKeys() + sort.Sort(sv) + result := true + for i, k := range sv { + var resultItem bool + var err error + if v.MapIndex(k).Kind() != reflect.Struct { + resultItem, err = typeCheck(v.MapIndex(k), t, o, options) + if err != nil { + return false, err + } + } else { + resultItem, err = ValidateStruct(v.MapIndex(k).Interface()) + if err != nil { + err = prependPathToErrors(err, t.Name+"."+sv[i].Interface().(string)) + return false, err + } + } + result = result && resultItem + } + return result, nil + case reflect.Slice, reflect.Array: + result := true + for i := 0; i < v.Len(); i++ { + var resultItem bool + var err error + if v.Index(i).Kind() != reflect.Struct { + resultItem, err = typeCheck(v.Index(i), t, o, options) + if err != nil { + return false, err + } + } else { + resultItem, err = ValidateStruct(v.Index(i).Interface()) + if err != nil { + err = prependPathToErrors(err, t.Name+"."+strconv.Itoa(i)) + return false, err + } + } + result = result && resultItem + } + return result, nil + case reflect.Interface: + // If the value is an interface then encode its element + if v.IsNil() { + return true, nil + } + return ValidateStruct(v.Interface()) + case reflect.Ptr: + // If the value is a pointer then checks its element + if v.IsNil() { + return true, nil + } + return typeCheck(v.Elem(), t, o, options) + case reflect.Struct: + return true, nil + default: + return false, &UnsupportedTypeError{v.Type()} + } +} + +func stripParams(validatorString string) string { + return paramsRegexp.ReplaceAllString(validatorString, "") +} + +// isEmptyValue checks whether value empty or not +func isEmptyValue(v reflect.Value) bool { + switch v.Kind() { + case reflect.String, reflect.Array: + return v.Len() == 0 + case reflect.Map, reflect.Slice: + return v.Len() == 0 || v.IsNil() + case reflect.Bool: + return !v.Bool() + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return v.Int() == 0 + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + return v.Uint() == 0 + case reflect.Float32, reflect.Float64: + return v.Float() == 0 + case reflect.Interface, reflect.Ptr: + return v.IsNil() + } + + return reflect.DeepEqual(v.Interface(), reflect.Zero(v.Type()).Interface()) +} + +// ErrorByField returns error for specified field of the struct +// validated by ValidateStruct or empty string if there are no errors +// or this field doesn't exists or doesn't have any errors. +func ErrorByField(e error, field string) string { + if e == nil { + return "" + } + return ErrorsByField(e)[field] +} + +// ErrorsByField returns map of errors of the struct validated +// by ValidateStruct or empty map if there are no errors. +func ErrorsByField(e error) map[string]string { + m := make(map[string]string) + if e == nil { + return m + } + // prototype for ValidateStruct + + switch e := e.(type) { + case Error: + m[e.Name] = e.Err.Error() + case Errors: + for _, item := range e.Errors() { + n := ErrorsByField(item) + for k, v := range n { + m[k] = v + } + } + } + + return m +} + +// Error returns string equivalent for reflect.Type +func (e *UnsupportedTypeError) Error() string { + return "validator: unsupported type: " + e.Type.String() +} + +func (sv stringValues) Len() int { return len(sv) } +func (sv stringValues) Swap(i, j int) { sv[i], sv[j] = sv[j], sv[i] } +func (sv stringValues) Less(i, j int) bool { return sv.get(i) < sv.get(j) } +func (sv stringValues) get(i int) string { return sv[i].String() } + +func IsE164(str string) bool { + return rxE164.MatchString(str) +} diff --git a/extra/server-discovery/vendor/github.com/asaskevich/govalidator/wercker.yml b/extra/server-discovery/vendor/github.com/asaskevich/govalidator/wercker.yml new file mode 100644 index 000000000..bc5f7b086 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/asaskevich/govalidator/wercker.yml @@ -0,0 +1,15 @@ +box: golang +build: + steps: + - setup-go-workspace + + - script: + name: go get + code: | + go version + go get -t ./... + + - script: + name: go test + code: | + go test -race -v ./... diff --git a/aux/server-discovery/vendor/github.com/aymerick/douceur/LICENSE b/extra/server-discovery/vendor/github.com/aymerick/douceur/LICENSE similarity index 100% rename from aux/server-discovery/vendor/github.com/aymerick/douceur/LICENSE rename to extra/server-discovery/vendor/github.com/aymerick/douceur/LICENSE diff --git a/aux/server-discovery/vendor/github.com/aymerick/douceur/css/declaration.go b/extra/server-discovery/vendor/github.com/aymerick/douceur/css/declaration.go similarity index 100% rename from aux/server-discovery/vendor/github.com/aymerick/douceur/css/declaration.go rename to extra/server-discovery/vendor/github.com/aymerick/douceur/css/declaration.go diff --git a/aux/server-discovery/vendor/github.com/aymerick/douceur/css/rule.go b/extra/server-discovery/vendor/github.com/aymerick/douceur/css/rule.go similarity index 100% rename from aux/server-discovery/vendor/github.com/aymerick/douceur/css/rule.go rename to extra/server-discovery/vendor/github.com/aymerick/douceur/css/rule.go diff --git a/aux/server-discovery/vendor/github.com/aymerick/douceur/css/stylesheet.go b/extra/server-discovery/vendor/github.com/aymerick/douceur/css/stylesheet.go similarity index 100% rename from aux/server-discovery/vendor/github.com/aymerick/douceur/css/stylesheet.go rename to extra/server-discovery/vendor/github.com/aymerick/douceur/css/stylesheet.go diff --git a/aux/server-discovery/vendor/github.com/aymerick/douceur/parser/parser.go b/extra/server-discovery/vendor/github.com/aymerick/douceur/parser/parser.go similarity index 100% rename from aux/server-discovery/vendor/github.com/aymerick/douceur/parser/parser.go rename to extra/server-discovery/vendor/github.com/aymerick/douceur/parser/parser.go diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/.gitignore b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/.gitignore similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/.gitignore rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/.gitignore diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/CONTRIBUTING.md b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/CONTRIBUTING.md new file mode 100644 index 000000000..cf30e8260 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/CONTRIBUTING.md @@ -0,0 +1,77 @@ +# Contributing + +Thank you for helping us make [our vision](https://cortezaproject.org/about/what-is-corteza/) a reality! +All contributions are welcome; from bug reports, codefixes, and new features! + +## Ground Rules + +Corteza projects are [Apache 2.0 licensed](LICENSE) and accept contributions via GitHub pull requests. + +Cover the [terminology](https://docs.cortezaproject.org/corteza-docs/2022.3/developer-guide/release-cycle/index.html#_terminology) for the development process and versioning. + +Cover the [Git and GitHub](https://docs.cortezaproject.org/corteza-docs/2022.3/developer-guide/release-cycle/index.html#_github) ground rules regarding branch naming and conventions. + +When you wish to start working on a code contribution, assign yourself to a GitHub issue. +If there is no issue, create one beforehand. + +A quick summary on [How to Write a Git Commit Message](https://chris.beams.io/posts/git-commit/): + +1. Separate subject from body with a blank line +2. Limit the subject line to 50 characters +3. Capitalize the subject line +4. Do not end the subject line with a period +5. Use the imperative mood in the subject line +6. Wrap the body at 72 characters +7. Use the body to explain what and why vs. how + +## Core repositories + +### Corteza Server + +Corteza server is the back-end of the Corteza ecosystem. +The core logic is written in GO, using [go-chi](https://pkg.go.dev/github.com/go-chi/chi@v3.3.4+incompatible?utm_source=gopls) for the routing. + +Communication between the Corteza server and web applications is done using the REST API and web sockets. +Communication between back-end services (Corteza server and Corredor) is done using gRPC. + +The [Developer Guide/Corteza Server](https://docs.cortezaproject.org/corteza-docs/2022.3/developer-guide/corteza-server/index.html) covers the [development setup](https://docs.cortezaproject.org/corteza-docs/2022.3/developer-guide/corteza-server/index.html#_development_setup), the [project structure](https://docs.cortezaproject.org/corteza-docs/2022.3/developer-guide/corteza-server/structure.html), and the feature insight documents. + + +### Corteza Web Applications + +The web applications are written in Vue.js and provide the user interface to interact with the entire system. +The repositories: + +1. [corteza-webapp-one](https://github.com/cortezaproject/corteza-webapp-one) +2. [corteza-webapp-admin](https://github.com/cortezaproject/corteza-webapp-admin) +3. [corteza-webapp-compose](https://github.com/cortezaproject/corteza-webapp-compose) +4. [corteza-webapp-workflow](https://github.com/cortezaproject/corteza-webapp-workflow) +4. [corteza-webapp-reporter](https://github.com/cortezaproject/corteza-webapp-reporter) +4. [corteza-webapp-discovery](https://github.com/cortezaproject/corteza-webapp-discovery) + +Communication between the Corteza server and web applications is done using the REST API and web sockets. + +The [Developer Guide/Corteza Web Applications](https://docs.cortezaproject.org/corteza-docs/2022.3/developer-guide/web-applications/index.html) covers the [development setup](https://docs.cortezaproject.org/corteza-docs/2022.3/developer-guide/web-applications/index.html#_development_setup), the [project structure](https://docs.cortezaproject.org/corteza-docs/2022.3/developer-guide/web-applications/structure.html), and the feature insight documents. + +### Documentation + +The documentation is written in [AsciiDoc](https://asciidoc.org/) and compiled using [Antora](https://antora.org/). +The source code is available on the [GitHub cortezaproject/corteza-docs repository](https://github.com/cortezaproject/corteza-docs); the generated output is available on the [documentation page](http://docs.cortezaproject.org/). + +The [Developer Guide/Documentation](https://docs.cortezaproject.org/corteza-docs/2022.3/developer-guide/documentation/index.html) covers the [conventions](https://docs.cortezaproject.org/corteza-docs/2022.3/developer-guide/documentation/index.html#_conventions), [writing guidelines](https://docs.cortezaproject.org/corteza-docs/2022.3/developer-guide/documentation/index.html#documentation-writing-guidelines), as well as some [examples](https://docs.cortezaproject.org/corteza-docs/2022.3/developer-guide/documentation/examples/index.html) to help you get started. + +## Bug reporting + +Please submit any bug reports on the **issues** section of the corresponding GitHub repository. +If you are unsure where to submit the issue, or you are unsure if this is a feature; reach out to us on [our forum](https://forum.cortezaproject.org/). + +## Feature requests + +Feature and improvement requests should be submitted on [our forum](https://forum.cortezaproject.org/). +Before opening a new topic, search around to see if there are any similar topics that would cover your case. + +## DCO + +By contributing to this project you agree to the Developer Certificate of Origin (DCO). +This document was created by the Linux Kernel community and is a simple statement that you, as a contributor, have the legal right to make the contribution. +See the [DCO](DCO) file for details. diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/DCO b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/DCO similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/DCO rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/DCO diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/DEV.md b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/DEV.md new file mode 100644 index 000000000..cff9c2177 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/DEV.md @@ -0,0 +1,91 @@ +# Developer's guide to corteza-locale + +## Notes translation files + +Please note that not old translations follow these rules. +All new features and larger changes should strictly follow them + +### Translation namespaces + - In general, keep **each component** in its **own namespace**; with some exceptions + - Pass translated strings with params into smaller, reusable components + - Use namespace of the larger component when it is split into smaller, private components + - Corteza-vue as collection of reusable components must + - accept translated strings as arguments when there are few translations, or + - use a shared namespace name (like in case of `permissions.yaml`) + +### Translation keys + - keep keys in a structured format, especially when providing translations for larger component split into smaller parts and take advantage of key prefixes + - must be in **kebab-case**; using dash as a delimiter + - must be **descriptive**; + for example: if translations break or key is not translated the meaning should be clear + +## Setting up Corteza + +This guide is for corteza frontend and backend developers. +It shows how to connect translations from corteza-locale repository to frontend web applications and backend server. + +### Prerequisites + +Clone corteza-locale repository to a separate folder. + +### Fronted developers + +#### Using corteza-server Docker container to support webapp development + +##### Configuration with Docker Compose + +See the `docker-compose.yaml` in the root of the repository. + +1. Run it by executing (inside cloned `corteza-locale` repository): +```shell +docker-compose up -d +``` + +2. Fix `config.js` in the web application to point to the server +```js +window.CortezaAPI = `//localhost:1818/api` +``` + +##### Verify the loaded languages + +```shell +docker-compose logs | grep locale | head +``` + +This will show you first couple (head) filtered (grep) log lines. +If some of them contain "language loaded" that reflect the setup in your `corteza-locale/src` you have successfully loaded translations into Corteza server. + +##### Verify by loading translations +```shell +curl 'http://localhost:1818/api/system/locale/en/corteza-webapp-admin' -H "Accept: application/json" -H 'Accept-Language: en' +``` + +### Backend developers + +Corteza server loads, parses and serves all languages files for all frontend web applications and server. + +#### Changes in configuration + +The following chapter assumes your Corteza server development env is already set-up + +Add `LOCALE_PATH` and `LOCALE_LOG` to your .env file +```dotenv +LOCALE_PATH=../corteza-locale/src +LOCALE_LOG=true +``` + +Path can be absolute or relative and should contain subdirectories with languages. +You can remove or comment-out LOCALE_LOG if you find the setting to verbose. + + +##### Verify the loaded languages + +When you (re)start your corteza server yu should see the following log among the first logged lines: + +``` +20:24:42.881 INFO locale locale/locale.go:81 reloading {"src": ["../corteza-locale/src"]} +20:24:42.899 INFO locale locale/load.go:66 language loaded {"tag": "en", "config": "../corteza-locale/src/en/config.yaml"} +``` + +You will see additional log lines for every language loaded. + diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/LICENSE b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/LICENSE similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/LICENSE rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/LICENSE diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/README.md b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/README.md new file mode 100644 index 000000000..0401befdb --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/README.md @@ -0,0 +1,98 @@ +

+ +
+

Corteza translations and locales

+ +
+ + [![DockerHub Downloads Card](https://img.shields.io/docker/pulls/cortezaproject/corteza-server)](https://img.shields.io/docker/pulls/cortezaproject/corteza-server) + [![Latest Version Card](https://img.shields.io/github/v/tag/cortezaproject/corteza-server?label=stable%20version)](https://img.shields.io/github/v/tag/cortezaproject/corteza-server?label=stable%20version) + [![License Card](https://img.shields.io/github/license/cortezaproject/corteza-server)](https://img.shields.io/github/license/cortezaproject/corteza-server) + + [![Go Report Card](https://goreportcard.com/badge/github.com/cortezaproject/corteza-server)](https://goreportcard.com/report/github.com/cortezaproject/corteza-server) + [![CodeCov Report Card](https://img.shields.io/codecov/c/github/cortezaproject/corteza-server)](https://img.shields.io/codecov/c/github/cortezaproject/corteza-server) + +
+

+ +**Corteza Locale** provides the centralized repository for all corteza translations. + +These files are automatically pulled and bundled into corteza-server when it is built. + +Please follow the [developer's guide](DEV.md) to configure in your local development environment with translations. + +## What is Corteza? + +
+ +
+ +Corteza is the only **100% free**, **open-source**, **standardized** and **enterprise-grade** Low-code platform. +It is developed entirely in the public domain and maintained by [Crust Technology](https://www.crust.tech/), its founder. + +With Corteza, you can quickly **build scalable cloud applications** that are **integrable** with external services and **accessible (WCAG 2.1)**. + +### Core features: + +* quick setup, +* flexible and intuitive low-code configuration, +* powerful automation system using workflows and automation scripts, +* flexible reporting capabilities, +* secure RBAC access control system. + +## Online demo + +You can check out Corteza online by creating an account on our community instance https://latest.cortezaproject.org. + +## Deploying Corteza + +Refer to the [DevOps guide](https://docs.cortezaproject.org/corteza-docs/2022.3/devops-guide/index.html) for a complete guide on how to get Corteza up and running. +Additionally, we've provided some [video instructions](https://forum.cortezaproject.org/t/videos-on-how-to-set-up-corteza/91). + +Quick references: + +* [data backup and restore](https://docs.cortezaproject.org/corteza-docs/2022.3/devops-guide/maintenance/backups.html) +* [troubleshooting](https://docs.cortezaproject.org/corteza-docs/2022.3/devops-guide/troubleshooting/index.html) +* [setting up an email relay](https://docs.cortezaproject.org/corteza-docs/2022.3/devops-guide/email-relay.html) +* [setting up sink routes](https://docs.cortezaproject.org/corteza-docs/2022.3/devops-guide/sink-route.html) + +## Upgrading Corteza + +[//]: # (intentionaly using using tags from corteza server here!) +[![Latest Version Card](https://img.shields.io/github/v/tag/cortezaproject/corteza-server?label=latest%20stable%20version)](https://img.shields.io/github/v/tag/cortezaproject/corteza-server?label=latest%20stable%20version) + +Refer to the [changelog](https://docs.cortezaproject.org/corteza-docs/2022.3/changelog/index.html) and the [upgrade guide](https://docs.cortezaproject.org/corteza-docs/2022.3/devops-guide/upgrade/index.html) to upgrade your Corteza instance. + +## Using Corteza + +Refer to the [End-User Guide](https://docs.cortezaproject.org/corteza-docs/2022.3/end-user-guide/index.html) to learn the built-in applications and features from the end-user perspective. + +Quick references: + +* [Corteza CRM](https://docs.cortezaproject.org/corteza-docs/2022.3/end-user-guide/crm/index.html) +* [Corteza Case Management](https://docs.cortezaproject.org/corteza-docs/2022.3/end-user-guide/case-management/index.html) + +## Create with Corteza + +Refer to the [Integrator Guide](https://docs.cortezaproject.org/corteza-docs/2022.3/integrator-guide/index.html) to learn how you can build on the core features to create virtually anything. + +Quick references: + +* [Corteza Compose configuration](https://docs.cortezaproject.org/corteza-docs/2022.3/integrator-guide/compose-configuration/index.html) +* automation using [workflows](https://docs.cortezaproject.org/corteza-docs/2022.3/integrator-guide/automation/workflows/index.html) and [automation scripts](https://docs.cortezaproject.org/corteza-docs/2022.3/integrator-guide/automation/automation-scripts/index.html) +* [using the REST API](https://docs.cortezaproject.org/corteza-docs/2022.3/integrator-guide/accessing-corteza/index.html), + +## Contributing + + + + +Refer to the [CONTRIBUTING.md](CONTRIBUTING.md) for contribution guidelines and code of conduct. +## Community + +Reach out to us on [our forum](https://forum.cortezaproject.org/). + +## License + +Corteza is released under the Apache-2.0 license. +Refer to the [LICENSE](LICENSE) file for additional information. diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/crowdin.yml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/crowdin.yml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/crowdin.yml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/crowdin.yml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/docker-compose.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/docker-compose.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/docker-compose.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/docker-compose.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/locale.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/locale.go similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/locale.go rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/locale.go diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/security.md b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/security.md new file mode 100644 index 000000000..6c1f64ac8 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/security.md @@ -0,0 +1,37 @@ +# Security + +At Corteza, the security of our products and services is important to us. +All of our source code repositories are managed through GitHub organisations. +Here is the list of [Corteza Repositories](https://github.com/orgs/cortezaproject/repositories) + +If you believe you have found a security vulnerability in any Corteza repository, please report it to us as described below. + +## Reporting Security Issues + +**Please do not report security vulnerabilities through public GitHub issues.** + +Instead, please send email to [info@cortezaproject.org](mailto:info@cortezaproject.org). + +You should receive a response within 24 business hours. If for some reason you do not, +please follow up via email to ensure we received your original message. + +Please include the requested information listed below (as much as you can provide) +to help us better understand the nature and scope of the possible issue: + +* Type of issue, +* full paths of source file(s) related to the manifestation of the issue, +* the location of the affected source code (tag/branch/commit or direct URL), +* any special configuration required to reproduce the issue, +* step-by-step instructions to reproduce the issue, +* proof-of-concept or exploit code (if possible), +* impact of the issue, including how an attacker might exploit the issue. + +This information will help us triage your report more quickly. + +## Preferred Languages + +We prefer all communications to be in English. + +## Policy + +[Corteza Privacy Policy](https://cortezaproject.org/privacy-policy/) diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/config.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/config.yaml new file mode 100644 index 000000000..04fb430fc --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/config.yaml @@ -0,0 +1 @@ +name: German diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/authorized-clients.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/authorized-clients.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/authorized-clients.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/authorized-clients.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/change-password.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/change-password.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/change-password.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/change-password.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/create-password.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/create-password.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/create-password.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/create-password.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/error-internal.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/error-internal.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/error-internal.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/error-internal.yaml diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/inc_footer.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/inc_footer.yaml new file mode 100644 index 000000000..93aee3852 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/inc_footer.yaml @@ -0,0 +1,3 @@ +--- +version: Version {{version}} +code-link: Zugang zum Quellcode auf diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/inc_header.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/inc_header.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/inc_header.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/inc_header.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/inc_nav.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/inc_nav.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/inc_nav.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/inc_nav.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/login.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/login.yaml similarity index 92% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/login.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/login.yaml index 5451c0259..b71dafd75 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/login.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/login.yaml @@ -16,7 +16,7 @@ template: request-password-reset: Passwort vergessen? signup: Neuen Account anlegen external: - login-with: Mit {{idp}} anmelden + login-with: Mit {{idp}} anmelden alerts: logged-in: Sie sind nun angemeldet. local-disabled: Lokale Accounts deaktiviert diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/logout.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/logout.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/logout.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/logout.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/mfa-totp-disable.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/mfa-totp-disable.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/mfa-totp-disable.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/mfa-totp-disable.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/mfa-totp.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/mfa-totp.yaml similarity index 72% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/mfa-totp.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/mfa-totp.yaml index 1bc218c6f..667f6a6aa 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/mfa-totp.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/mfa-totp.yaml @@ -16,8 +16,13 @@ template: gauth: Google Authentikator für Android oder iPhone authy: Authy form: - title: "Complete the configuration by entering code from the authenticator application:" - button: Submit + title: "Vervollständigen Sie die Konfiguration durch Eingabe des Codes aus der Authenticator-Anwendung:" + button: Absenden alerts: - text-2FA-enabled: Two factor authentication with TOTP enabled - text-2FA-disabled: Two factor authentication with TOTP disabled + text-MFA-enabled: Zwei-Faktor-Authentifizierung mit TOTP ist aktiviert + text-MFA-disabled: Zwei-Faktor-Authentifizierung mit TOTP ist deaktiviert + +errors: + invalid-code-format: "Invalid code format" + invalid-code: "Invalid code" + diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/mfa.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/mfa.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/mfa.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/mfa.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/oauth2-authorize-client.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/oauth2-authorize-client.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/oauth2-authorize-client.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/oauth2-authorize-client.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/password-reset-requested.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/password-reset-requested.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/password-reset-requested.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/password-reset-requested.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/pending-email-confirmation.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/pending-email-confirmation.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/pending-email-confirmation.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/pending-email-confirmation.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/profile.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/profile.yaml similarity index 81% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/profile.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/profile.yaml index c3d8ba91d..dbd9756ed 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/profile.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/profile.yaml @@ -5,13 +5,15 @@ template: email: label: E-Mail placeholder: email@domain.tld - resend-confirmation-link: Die E-Mail ist nicht verifiziert,, den Bestätigungslink erneut sendenk. + resend-confirmation-link: Die E-Mail ist nicht verifiziert, den Bestätigungslink erneut senden. name: label: Vollständiger Name placeholder: Ihr Vollständiger Name handle: label: Alias placeholder: Kurzname, Nickname oder Alias + preferred-language: + label: Bevorzugte Sprache buttons: submit: Profil Aktualisieren alerts: diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/request-password-reset.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/request-password-reset.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/request-password-reset.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/request-password-reset.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/reset-password.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/reset-password.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/reset-password.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/reset-password.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/security.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/security.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/security.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/security.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/sessions.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/sessions.yaml similarity index 75% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/sessions.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/sessions.yaml index 561a7c45e..cda3178da 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/sessions.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/sessions.yaml @@ -13,5 +13,7 @@ template: today: Heute tomorrow: In einem Tag soon: In {{days}} Tagen - delete: Diese Sitzung Löschen delete-all: Alle Sitzungen Löschen +alerts: + session-deleted: Sitzung gelöscht + delete-sessions-but-current: Alle Sitzungen außer der aktuellen gelöscht diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/signup.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/signup.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/signup.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/auth/signup.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/automation/access_control.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/automation/access-control.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/automation/access_control.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/automation/access-control.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/automation/session.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/automation/session.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/automation/session.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/automation/session.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/automation/trigger.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/automation/trigger.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/automation/trigger.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/automation/trigger.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/automation/workflow.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/automation/workflow.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/automation/workflow.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/automation/workflow.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/access_control.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/access-control.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/access_control.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/access-control.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/attachment.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/attachment.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/attachment.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/attachment.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/chart.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/chart.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/chart.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/chart.yaml diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/field.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/field.yaml new file mode 100644 index 000000000..07b962fdd --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/field.yaml @@ -0,0 +1,14 @@ +system: + ID: Record ID + moduleID: Module ID + namespaceID: Namespace ID + revision: Record revision + meta: Meta data + recordID: Record ID + createdAt: Created at + createdBy: Erstellt bei + deletedAt: Deleted at + deletedBy: Deleted by + ownedBy: Owned by + updatedAt: Updated at + updatedBy: Updated by \ No newline at end of file diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/module.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/module.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/module.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/module.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/namespace.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/namespace.yaml similarity index 99% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/namespace.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/namespace.yaml index 35d4b1cef..710f2051e 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/namespace.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/namespace.yaml @@ -14,4 +14,4 @@ errors: unsupportedExportFormat: unsupported export format unsupportedImportFormat: unsupported import format importMissingNamespace: the import source does not contain a namespace definition - cloneMultiple: not allowed to clone multiple namespaces at once \ No newline at end of file + cloneMultiple: not allowed to clone multiple namespaces at once diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/notifications.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/notifications.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/notifications.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/notifications.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/page.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/page.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/page.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/page.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/record.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/record.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/record.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/compose/record.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/federation/access_control.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/federation/access-control.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/federation/access_control.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/federation/access-control.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/federation/exposed_module.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/federation/exposed-module.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/federation/exposed_module.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/federation/exposed-module.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/federation/module_mapping.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/federation/module-mapping.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/federation/module_mapping.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/federation/module-mapping.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/federation/node_sync.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/federation/node-sync.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/federation/node_sync.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/federation/node-sync.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/federation/node.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/federation/node.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/federation/node.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/federation/node.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/federation/shared_module.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/federation/shared-module.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/federation/shared_module.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/federation/shared-module.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/internal/auth.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/internal/auth.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/internal/auth.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/internal/auth.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/access_control.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/access-control.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/access_control.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/access-control.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/apigw_filter.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/apigw-filter.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/apigw_filter.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/apigw-filter.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/apigw_route.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/apigw-route.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/apigw_route.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/apigw-route.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/application.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/application.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/application.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/application.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/attachment.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/attachment.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/attachment.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/attachment.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/auth_client.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/auth-client.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/auth_client.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/auth-client.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/auth.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/auth.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/auth.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/auth.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/queue.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/queue.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/queue.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/queue.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/reminder.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/reminder.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/reminder.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/reminder.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/report.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/report.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/report.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/report.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/role.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/role.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/role.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/role.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/sink.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/sink.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/sink.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/sink.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/statistics.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/statistics.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/statistics.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/statistics.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/template.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/template.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/template.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/template.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/user.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/user.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/user.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-server/system/user.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/admin.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/admin.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/admin.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/admin.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/automation.permissions.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/automation.permissions.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/automation.permissions.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/automation.permissions.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/automation.scripts.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/automation.scripts.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/automation.scripts.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/automation.scripts.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/automation.sessions.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/automation.sessions.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/automation.sessions.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/automation.sessions.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/automation.workflows.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/automation.workflows.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/automation.workflows.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/automation.workflows.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/compose.automation.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/compose.automation.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/compose.automation.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/compose.automation.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/compose.permissions.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/compose.permissions.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/compose.permissions.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/compose.permissions.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/compose.settings.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/compose.settings.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/compose.settings.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/compose.settings.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/dashboard.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/dashboard.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/dashboard.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/dashboard.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/federation.nodes.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/federation.nodes.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/federation.nodes.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/federation.nodes.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/federation.permissions.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/federation.permissions.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/federation.permissions.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/federation.permissions.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/navigation.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/navigation.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/navigation.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/navigation.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/notification.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/notification.yaml similarity index 99% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/notification.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/notification.yaml index 091b104db..48e9dc667 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/notification.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/notification.yaml @@ -38,6 +38,8 @@ user: unsuspend: success: User unsuspended error: User suspension failed + import: + success: Users imported successfully role: fetch: error: Role fetch failed diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.actionlog.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.actionlog.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.actionlog.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.actionlog.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.apigw.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.apigw.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.apigw.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.apigw.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.applications.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.applications.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.applications.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.applications.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.authclients.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.authclients.yaml similarity index 97% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.authclients.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.authclients.yaml index 1f99baa98..8a1adb9c1 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.authclients.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.authclients.yaml @@ -26,9 +26,9 @@ editor: remove: Remove secret: Secret security: - forbiddenRoles: + prohibitedRoles: description: Roles from this list will be removed from security context when user authorizes this client - label: Forbidden roles + label: Prohibited roles forcedRoles: description: Roles from this list will be always added to security context when user authorizes this client label: Forced roles diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.permissions.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.permissions.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.permissions.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.permissions.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.queues.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.queues.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.queues.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.queues.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.roles.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.roles.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.roles.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.roles.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.settings.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.settings.yaml similarity index 98% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.settings.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.settings.yaml index 2076eab37..2b984a836 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.settings.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.settings.yaml @@ -1,3 +1,4 @@ +--- editor: title: System settings auth: @@ -42,22 +43,17 @@ editor: expires: description: How long will password be valid before it expires. label: Valid for - external: title: External Authentication Providers enabled: Enable external authentication - table: header: provider: Provider info: Issuer, client ID - - standard: enabled: Enabled clientKey: Client key clientSecret: Secret - oidc: add: Add an OIDC provider enabled: Enabled @@ -69,7 +65,6 @@ editor: clientSecret: Secret scope: Scope scopePlaceholder: List out supported OAuth scope values, use space delimited string - saml: enabled: Enabled title: SAML @@ -105,12 +100,10 @@ editor: ident-handle: Name of the IdP field used for filling Corteza user handle or nickname ident-identifier: Name of the IdP field used for filling and matching Corteza user email ident-name: Name of the IdP field used for filling Corteza user full name - - security: - forbidden-roles: + prohibited-roles: description: Roles from this list will be removed from security context when authenticates with this provider - label: Forbidden roles + label: Prohibited roles forced-roles: description: Roles from this list will be always added to security context when authenticates with this provider label: Forced roles diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.templates.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.templates.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.templates.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.templates.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.users.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.users.yaml similarity index 86% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.users.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.users.yaml index 58f3f3c1a..91da34d69 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.users.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/system.users.yaml @@ -89,3 +89,14 @@ list: permissions: Permissions title: Users yaml: YAML +export: + buttonLabel: Export + title: Export users + inclRoleMembership: Include role membership + inclRoles: Include roles + membershipRequiredLabel: Roles can only be exported when role membership is selected + export: Export +import: + buttonLabel: Import + title: Import users + uploadFilePlaceholder: Click or drop files here to import diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/ui.settings.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/ui.settings.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/ui.settings.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/ui.settings.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/ui.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/ui.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/ui.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-admin/ui.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/block.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/block.yaml similarity index 98% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/block.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/block.yaml index d1c8809d1..6ce2bef0c 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/block.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/block.yaml @@ -25,7 +25,7 @@ automation: removeAll: Remove all searchPlaceholder: Filter available scripts by label, script name and description secondaryButton: Secondary - stepID: 'stepID: {{stepID}}' + stepID: 'Starting step ID: {{stepID}}' successButton: Success warningButton: Warning calendar: @@ -154,7 +154,7 @@ record: deleteRecord: Delete record label: Record preview: - blockNoRecord: Can not render this block without a record + blockNoRecord: Cannot render this block without a record fieldsFromModule: Single record block, displaying fields ({{0}}) from module {{1}} untitled: Untitled recordDeleted: This record was deleted @@ -206,7 +206,10 @@ recordList: note: 'Note: If Field value is undefined, the filter will look for records where that field value is undefined.' only: Only operators: + like: Like + notLike: Not Like contains: Contains + notContains: Not contains equal: Equal greaterThan: Greater than lessThan: Less than diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/chart.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/chart.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/chart.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/chart.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/field.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/field.yaml similarity index 97% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/field.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/field.yaml index 98f9cead9..efbc1fba2 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/field.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/field.yaml @@ -139,6 +139,12 @@ selector: systemField: (system field) unselectAll: Unselect all system: + id: Record ID + moduleID: Module ID + namespaceID: Namespace ID + revision: Record revision + meta: Meta data + recordID: Record ID createdAt: Created at createdBy: Erstellt bei deletedAt: Deleted at diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/general.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/general.yaml similarity index 98% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/general.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/general.yaml index dc9c0f50a..57efe1dca 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/general.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/general.yaml @@ -81,7 +81,7 @@ reminder: titleLabel: Title titlePlaceholder: Title listLabel: Reminders - routesTo: 'Includes link to:' + routesTo: Link label snooze: Snooze tooltip: dragAndDrop: Drag and drop to change order diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/module.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/module.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/module.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/module.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/namespace.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/namespace.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/namespace.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/namespace.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/navigation.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/navigation.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/navigation.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/navigation.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/notification.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/notification.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/notification.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/notification.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/onboarding.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/onboarding.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/onboarding.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/onboarding.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/page.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/page.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/page.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/page.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/permission.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/permission.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/permission.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/permission.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/preview.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/preview.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/preview.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/preview.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/sidebar.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/sidebar.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/sidebar.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/sidebar.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-one/app.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-one/app.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-one/app.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-one/app.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-one/layout.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-one/layout.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-one/layout.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-one/layout.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-one/navigation.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-one/navigation.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-one/navigation.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-one/navigation.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-reporter/create.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-reporter/create.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-reporter/create.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-reporter/create.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-reporter/edit.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-reporter/edit.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-reporter/edit.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-reporter/edit.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-reporter/general.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-reporter/general.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-reporter/general.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-reporter/general.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-reporter/list.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-reporter/list.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-reporter/list.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-reporter/list.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-reporter/navigation.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-reporter/navigation.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-reporter/navigation.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-reporter/navigation.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-reporter/notification.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-reporter/notification.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-reporter/notification.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-reporter/notification.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-reporter/permission.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-reporter/permission.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-reporter/permission.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-reporter/permission.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-workflow/navigation.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-workflow/navigation.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-workflow/navigation.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-workflow/navigation.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-workflow/permission.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-workflow/permission.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-workflow/permission.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-workflow/permission.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/config.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/config.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/config.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/config.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/authorized-clients.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/authorized-clients.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/authorized-clients.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/authorized-clients.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/change-password.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/change-password.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/change-password.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/change-password.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/create-password.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/create-password.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/create-password.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/create-password.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/error-internal.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/error-internal.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/error-internal.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/error-internal.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/inc_footer.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/inc_footer.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/inc_footer.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/inc_footer.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/inc_header.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/inc_header.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/inc_header.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/inc_header.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/inc_nav.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/inc_nav.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/inc_nav.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/inc_nav.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/login.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/login.yaml similarity index 87% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/login.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/login.yaml index 5005a0b48..d49c4355d 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/login.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/login.yaml @@ -1,6 +1,5 @@ ---- template: - title: Log in + title: Log in to continue form: email: label: E-mail @@ -16,7 +15,8 @@ template: request-password-reset: Forgot your password? signup: Create a new account external: - login-with: Login with {{idp}} + login-with: Login with {{idp}} + alerts: logged-in: You are now logged-in. local-disabled: Local accounts disabled diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/logout.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/logout.yaml new file mode 100644 index 000000000..52afd168f --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/logout.yaml @@ -0,0 +1,3 @@ +template: + log-out: Logout successful. + log-in: Click here to log in. diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/mfa-totp-disable.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/mfa-totp-disable.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/mfa-totp-disable.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/mfa-totp-disable.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/mfa-totp.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/mfa-totp.yaml similarity index 82% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/mfa-totp.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/mfa-totp.yaml index 4d19d87a4..eb1dbc795 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/mfa-totp.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/mfa-totp.yaml @@ -22,5 +22,9 @@ template: button: Submit alerts: - text-2FA-enabled: Two factor authentication with TOTP enabled - text-2FA-disabled: Two factor authentication with TOTP disabled + text-MFA-enabled: Two factor authentication with TOTP enabled + text-MFA-disabled: Two factor authentication with TOTP disabled + +errors: + invalid-code-format: "Invalid code format" + invalid-code: "Invalid code" diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/mfa.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/mfa.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/mfa.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/mfa.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/oauth2-authorize-client.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/oauth2-authorize-client.yaml similarity index 63% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/oauth2-authorize-client.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/oauth2-authorize-client.yaml index 590b05fbf..33af3e2a4 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/oauth2-authorize-client.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/oauth2-authorize-client.yaml @@ -1,4 +1,3 @@ ---- template: title: Authorize form: @@ -8,8 +7,8 @@ template: allow: Allow deny: Deny links: - mistake: If this is a mistake, please log out. + mistake: If this is a mistake, please log out. errors: - invalid-user: Cannot continue with unauthorized email, visit your profile and resolve the issue. + invalid-user: Cannot continue with unauthorized email, visit your profile and resolve the issue. alerts: denied: cannot authorize {{client}}, no permissions. diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/password-reset-requested.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/password-reset-requested.yaml similarity index 80% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/password-reset-requested.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/password-reset-requested.yaml index 0b9f3bf4b..3b685a6cc 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/password-reset-requested.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/password-reset-requested.yaml @@ -1,7 +1,7 @@ template: title: Password reset requested instructions: If the email you entered is found in our database, you'll receive a password reset link to your inbox in a few moments. - links: Return to the login page + links: Return to the login page alert: invalid-expired-password-token: Invalid or expired password reset token, please repeat password reset request. password-reset-success: Password successfully reset. diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/pending-email-confirmation.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/pending-email-confirmation.yaml new file mode 100644 index 000000000..4f0da6a4d --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/pending-email-confirmation.yaml @@ -0,0 +1,4 @@ +template: + title: Confirm your email + instructions: You should receive email confirmation link to your inbox in a few moments. + links: Create new account or log in. diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/profile.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/profile.yaml similarity index 67% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/profile.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/profile.yaml index cacdb8593..b45cbb2ca 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/profile.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/profile.yaml @@ -1,17 +1,18 @@ ---- template: title: Your profile form: email: label: Email placeholder: email@domain.ltd - resend-confirmation-link: Email is not verified, resend confirmation link. + resend-confirmation-link: Email is not verified, resend confirmation link. name: label: Full name placeholder: Your full name handle: label: Handle placeholder: Short name, nickname or handle + preferred-language: + label: Preferred language buttons: submit: Update profile alerts: diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/request-password-reset.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/request-password-reset.yaml similarity index 65% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/request-password-reset.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/request-password-reset.yaml index 005aa454b..272810cb4 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/request-password-reset.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/request-password-reset.yaml @@ -1,4 +1,3 @@ ---- template: title: Request password reset link form: @@ -7,4 +6,4 @@ template: placeholder: email@domain.ltd buttons: request: Request password reset link via email - links: Create new account or log in. + links: Return to the login page diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/reset-password.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/reset-password.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/reset-password.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/reset-password.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/security.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/security.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/security.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/security.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/sessions.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/sessions.yaml similarity index 73% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/sessions.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/sessions.yaml index 880412f0e..b09a5388c 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/sessions.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/sessions.yaml @@ -15,10 +15,8 @@ template: tomorrow: In 1 day soon: In {{days}} days - delete: Delete this session - - delete-all: Delete all sessions + delete-all: Logout from everywhere alerts: session-deleted: Session deleted - delete-sessions-but-current: All but current sessions deleted + delete-sessions-but-current: All but current login sessions deleted diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/signup.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/signup.yaml similarity index 87% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/signup.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/signup.yaml index df32967f7..7d122b38e 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/signup.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/signup.yaml @@ -15,7 +15,7 @@ template: placeholder: Short name, nickname or handle button: sign-up: Submit - log-in: Already have an account? Log in + log-in: Already have an account? Log in alerts: signup-successful: Sign-up successful. diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/automation/access_control.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/automation/access-control.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/automation/access_control.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/automation/access-control.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/automation/session.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/automation/session.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/automation/session.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/automation/session.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/automation/trigger.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/automation/trigger.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/automation/trigger.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/automation/trigger.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/automation/workflow.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/automation/workflow.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/automation/workflow.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/automation/workflow.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/access_control.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/access-control.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/access_control.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/access-control.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/attachment.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/attachment.yaml similarity index 89% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/attachment.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/attachment.yaml index 95addb078..ebbb05293 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/attachment.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/attachment.yaml @@ -24,3 +24,6 @@ errors: notFound: attachment not found pageNotFound: page not found recordNotFound: record not found + invalidModuleField: invalid module field + tooLarge: uploaded file is too large + notAllowedToUploadThisType: not allowed to upload this type of file diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/chart.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/chart.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/chart.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/chart.yaml diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/field.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/field.yaml new file mode 100644 index 000000000..487023d0a --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/field.yaml @@ -0,0 +1,14 @@ +system: + ID: Record ID + moduleID: Module ID + namespaceID: Namespace ID + revision: Record revision + meta: Meta data + recordID: Record ID + createdAt: Created at + createdBy: Created by + deletedAt: Deleted at + deletedBy: Deleted by + ownedBy: Owned by + updatedAt: Updated at + updatedBy: Updated by diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/module.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/module.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/module.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/module.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/namespace.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/namespace.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/namespace.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/namespace.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/notifications.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/notifications.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/notifications.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/notifications.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/page.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/page.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/page.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/page.yaml diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/record-field.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/record-field.yaml new file mode 100644 index 000000000..5f5f4c924 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/record-field.yaml @@ -0,0 +1,6 @@ +errors: + empty: This field is required + invalidValue: Invalid field value + invalidRef: Invalid field reference + duplicateValueInSet: This value already exists in list + duplicateValue: The value "{{value}}" already exists in another record diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/record.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/record.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/record.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/record.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/access_control.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/access-control.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/access_control.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/access-control.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/exposed_module.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/exposed-module.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/exposed_module.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/exposed-module.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/module_mapping.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/module-mapping.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/module_mapping.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/module-mapping.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/node_sync.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/node-sync.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/node_sync.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/node-sync.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/node.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/node.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/node.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/node.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/shared_module.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/shared-module.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/shared_module.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/shared-module.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/internal/auth.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/internal/auth.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/internal/auth.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/internal/auth.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/access_control.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/access-control.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/access_control.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/access-control.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/apigw_filter.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/apigw-filter.yaml similarity index 69% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/apigw_filter.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/apigw-filter.yaml index 7dc6ce943..b77f0d152 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/apigw_filter.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/apigw-filter.yaml @@ -1,4 +1,6 @@ errors: + asyncRouteTooManyProcessers: processer already exists for this async route + asyncRouteTooManyAfterFilters: no after filters are allowd for this async route invalidID: invalid ID invalidRoute: invalid route notAllowedToCreate: not allowed to create a filter diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/apigw_route.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/apigw-route.yaml similarity index 90% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/apigw_route.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/apigw-route.yaml index c14e3f8cb..00ff98bfe 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/apigw_route.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/apigw-route.yaml @@ -9,4 +9,5 @@ errors: notAllowedToRead: not allowed to read this route notAllowedToUndelete: not allowed to undelete this route notAllowedToUpdate: not allowed to update this route + notAllowedToSearch: not allowed to list or search routes notFound: route not found diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/application.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/application.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/application.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/application.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/attachment.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/attachment.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/attachment.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/attachment.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/auth_client.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/auth-client.yaml similarity index 90% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/auth_client.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/auth-client.yaml index 05cbabc64..222bdc94b 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/auth_client.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/auth-client.yaml @@ -10,3 +10,5 @@ errors: unableToChangeDefaultClientHandle: unable to change the handle of the default auth client unableToDeleteDefaultClient: unable to delete the default auth client unableToDisableDefaultClient: unable to disable the default auth client + unknownGrantType: unknown grant type + unknownScope: unknown scope diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/auth.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/auth.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/auth.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/auth.yaml diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/credentials.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/credentials.yaml new file mode 100644 index 000000000..b23eeacf7 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/credentials.yaml @@ -0,0 +1,4 @@ +errors: + notFound: credentials not found + invalidID: invalid ID + notAllowedToManage: not allowed to manage credentials for this user diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/dal-connection.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/dal-connection.yaml new file mode 100644 index 000000000..b5af95ef9 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/dal-connection.yaml @@ -0,0 +1,13 @@ +errors: + notFound: connection not found + invalidID: invalid ID + invalidEndpoint: invalid endpoint + existsEndpoint: connection with this DNS already exists + alreadyExists: connection by that DNS already exists + notAllowedToCreate: not allowed to create a connection + notAllowedToRead: not allowed to read this connection + notAllowedToSearch: not allowed to list or search connections + notAllowedToUpdate: not allowed to update this connection + notAllowedToDelete: not allowed to delete this connection + notAllowedToUndelete: not allowed to undelete this connection + notAllowedToExec: not allowed to execute this connection diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/dal-sensitivity-level.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/dal-sensitivity-level.yaml new file mode 100644 index 000000000..9459c1ab0 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/dal-sensitivity-level.yaml @@ -0,0 +1,8 @@ +errors: + alreadyExists: sensitivity level by that DNS already exists + existsEndpoint: sensitivity level with this DNS already exists + generic: failed to complete request due to internal error + invalidEndpoint: invalid endpoint + invalidID: invalid ID + notAllowedToManage: not allowed to manage sensitivity level + notFound: sensitivity level not found diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/data-privacy.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/data-privacy.yaml new file mode 100644 index 000000000..e4bbd3035 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/data-privacy.yaml @@ -0,0 +1,9 @@ +errors: + notFound: data privacy request not found + invalidID: invalid ID + invalidKind: invalid kind + invalidStatus: invalid status + notAllowedToRead: not allowed to read this data privacy request + notAllowedToSearch: not allowed to search or list data privacy request + notAllowedToCreate: not allowed to create data privacy request + notAllowedToApprove: not allowed to approve/reject data privacy request diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/queue.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/queue.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/queue.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/queue.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/reminder.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/reminder.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/reminder.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/reminder.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/report.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/report.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/report.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/report.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/role.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/role.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/role.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/role.yaml diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/settings.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/settings.yaml new file mode 100644 index 000000000..edd638125 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/settings.yaml @@ -0,0 +1,8 @@ +errors: + notAllowedToRead: not allowed to read this setting + notAllowedToManage: not allowed to manage this setting + invalidPasswordMinLength: password constraint minimum length should be at least 8 characters + invalidPasswordMinUpperCase: password constraint minimum upper case count should not be a negative number + invalidPasswordMinLowerCase: password constraint minimum lower case count should not be a negative number + invalidPasswordMinNumCount: password constraint minimum number count should not be a negative number + invalidPasswordMinSpecialCharCount: password constraint minimum special character count should not be a negative number diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/sink.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/sink.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/sink.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/sink.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/statistics.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/statistics.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/statistics.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/statistics.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/template.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/template.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/template.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/template.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/user.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/user.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/user.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/user.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/admin.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/admin.yaml similarity index 94% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/admin.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/admin.yaml index 9ba765687..41abf07ce 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/admin.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/admin.yaml @@ -71,7 +71,10 @@ automation: warning: "" title: List of automation script general: + resource-list: + no-items: No matches for your search notFound: 'Not found' + loading: Loading label: "no": "No" submit: Submit @@ -82,6 +85,9 @@ general: pagination: next: Next prev: Prev + showing: '{{from}} - {{to}} of {{count}} items' + single: One item + single_plural: '{{count}} items' navigation: adminPanel: Admin panel automation: Automation diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/automation.scripts.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/automation.scripts.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/automation.scripts.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/automation.scripts.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/automation.sessions.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/automation.sessions.yaml similarity index 93% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/automation.sessions.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/automation.sessions.yaml index 489045194..322856a5d 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/automation.sessions.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/automation.sessions.yaml @@ -13,6 +13,8 @@ editor: status: Status title: Basic information workflowID: WorkflowID + openWorkflow: Open workflow + cancel: Cancel session title: Session list: columns: @@ -20,6 +22,7 @@ list: createdAt: Created At eventType: Event type sessionID: SessionID + state: State status: Status workflowID: WorkflowID filterForm: diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/automation.workflows.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/automation.workflows.yaml similarity index 80% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/automation.workflows.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/automation.workflows.yaml index 6e9efbbd0..470f2c6c4 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/automation.workflows.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/automation.workflows.yaml @@ -4,7 +4,8 @@ editor: delete: Delete deletedAt: Deleted at enabled: Enabled - handle: Handle + handle: Handle * + invalid-handle-characters: Should be at least 2 characters long and start with a letter. Can contain only letters, numbers, dashes, underscores and dots id: ID name: Name openBuilder: Open builder @@ -30,6 +31,11 @@ list: enabled: Enabled handle: Handle name: Name + state: State + export: Export + rows: + filters: + deleted: Deleted filterForm: deleted: label: deleted workflows diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/compose.automation.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/compose.automation.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/compose.automation.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/compose.automation.yaml diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/compose.settings.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/compose.settings.yaml new file mode 100644 index 000000000..5e07dd9f8 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/compose.settings.yaml @@ -0,0 +1,25 @@ +editor: + title: Compose settings + basic: + attachments: + max-size: Max size (MB) + page: Page attachments + record: Record attachments + type: + description: 'MIME types, separated with ",". Example: "text/plain,text/csv"' + whitelist: File type whitelist + title: Basic + ui: + title: User interface + sidebar: + title: Sidebar + hide-namespace-list: Hide list of namespaces + hide-namespace-list-link: Hide link to list of all namespaces + record-toolbar: + title: Record Toolbar + hide-submit: Hide submit button + hide-delete: Hide delete button + hide-edit: Hide edit button + hide-new: Hide new button + hide-clone: Hide clone button + hide-back: Hide back link diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/dashboard.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/dashboard.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/dashboard.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/dashboard.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/expressions-help.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/expressions-help.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/expressions-help.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/expressions-help.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/federation.nodes.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/federation.nodes.yaml similarity index 96% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/federation.nodes.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/federation.nodes.yaml index cc8e8b788..01f1920ab 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/federation.nodes.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/federation.nodes.yaml @@ -15,7 +15,7 @@ editor: deletedAt: Deleted at email: Admin Email enabled: Enabled - name: Server name + name: Server name * status: Status tags: label: Tags @@ -23,7 +23,7 @@ editor: title: Basic information undelete: Undelete updatedAt: Updated at - url: Server URL + url: Server URL * title: create: Create Federated Node edit: Edit Federated Node @@ -39,7 +39,7 @@ list: query: label: Filter servers list placeholder: Filter servers by name - loading: Loading servers + loading: Loading federated nodes new: New numFound: '{{count}} server found' numFound_plural: '{{count}} servers found' diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/general.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/general.yaml new file mode 100644 index 000000000..9ad591eb3 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/general.yaml @@ -0,0 +1,16 @@ +label: + plus-add: + Add + clear: Clear + none: None + now: Now + today: Today + routes: Routes + requests: Requests + refresh: Refresh + loadMore: Load more + loading: Loading + submit: Submit + delete: Delete + undelete: Undelete + fileTypeNotAllowed: File type not allowed + diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/navigation.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/navigation.yaml similarity index 91% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/navigation.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/navigation.yaml index b250bf784..09ca4809e 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/navigation.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/navigation.yaml @@ -8,6 +8,8 @@ system: apigw: Integration Gateway applications: Applications authclients: Auth Clients + connections: Connections + sensitivityLevel: Sensitivity Levels permissions: Permissions queues: Messaging Queues roles: Roles diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/notification.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/notification.yaml new file mode 100644 index 000000000..179305b75 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/notification.yaml @@ -0,0 +1,271 @@ +general: + error: Error + success: Success + warning: Warning +notAllowed: Not allowed to access Admin Area. Redirecting +list: + load: + error: 'Failed to load resource list' +user: + external-auth-providers: + error: External auth providers fetch failed + success: External auth providers updated + fetch: + error: User fetch failed + roles: + error: Role fetch failed + update: + success: User updated + error: User update failed + create: + success: User created + error: User create failed + delete: + success: User deleted + error: User delete failed + undelete: + success: User restored + error: User restore failed + membershipUpdate: + success: Membership updated + error: Membership update failed + passwordChange: + success: Password changed + error: Password change failed + sessionsRevoke: + success: Sessions revoked + error: Session revoke failed + suspend: + success: User suspended + error: User suspension failed + unsuspend: + success: User unsuspended + error: User suspension failed + import: + success: Users imported successfully +role: + fetch: + error: Role fetch failed + create: + success: Role created + error: Role create failed + update: + success: Role updated + error: Role update failed + delete: + success: Role deleted + error: Role delete failed + undelete: + success: Role restored + error: Role restore failed + archive: + success: Role archived + error: Role archive failed + unarchive: + success: Role unarchived + error: Role unarchive failed + membershipUpdate: + success: Membership updated + error: Membership update failed +application: + fetch: + error: Application fetch failed + update: + success: Application updated + error: Application update failed + create: + success: Application created + error: Application create failed + delete: + success: Application deleted + error: Application delete failed + undelete: + success: Application restored + error: Application restore failed + assetsUpload: + error: Application assets upload failed +template: + fetch: + error: Template fetch failed + fetchPartials: + error: Partial templates fetch failed + create: + success: Template created + error: Template create failed + update: + success: Template updated + error: Template update failed + delete: + success: Template deleted + error: Template delete failed + undelete: + success: Template restored + error: Template restore failed + driver: + error: Template render drivers fetch failed + preview: + error: Template preview fetch failed +authclient: + fetch: + error: Auth Client fetch failed + create: + success: Auth Client created + error: Auth Client create failed + update: + success: Auth Client updated + error: Auth Client update failed + delete: + success: Auth Client deleted + error: Auth Client delete failed + undelete: + success: Auth Client restored + error: Auth Client restore failed +queue: + fetch: + error: Queue fetch failed + create: + success: Queue created + error: Queue create failed + update: + success: Queue updated + error: Queue update failed + delete: + success: Queue deleted + error: Queue delete failed + undelete: + success: Queue restored + error: Queue restore failed +gateway: + fetch: + error: Route fetch failed + create: + success: Route created + error: Route create failed + update: + success: Route updated + error: Route update failed + filter: + fetch: + error: Filter fetch failed + update: + success: Filters updated + error: Filters update failed + delete: + success: Route deleted + error: Route delete failed + undelete: + success: Route restored + error: Route restore failed +workflow: + fetch: + error: Workflow fetch failed + create: + success: Workflow created + error: Workflow create failed + update: + success: Workflow updated + error: Workflow update failed + delete: + success: Workflow deleted + error: Workflow delete failed + undelete: + success: Workflow restored + error: Workflow restore failed +session: + fetch: + error: Session fetch failed + trigger: + error: Trigger fetch failed + cancel: + success: Session canceled + error: Session cancel failed +federation: + fetch: + error: Node fetch failed + create: + success: Node created + error: Node create failed + update: + success: Node updated + error: Node update failed + delete: + success: Node deleted + error: Node delete failed + undelete: + success: Node restored + error: Node restore failed + url: + error: Generated URL fetch failed + email: + success: Email sent + error: Failed to send email + pair: + success: Node paired + error: Failed to pair node + handshake: + success: Handshake complete paired + error: Handshake failed +sensitivityLevel: + create: + success: Sensitivity level created + error: Sensitivity level create failed + delete: + success: Sensitivity level deleted + error: Sensitivity level delete failed + fetch: + success: Sensitivity level fetched + error: Sensitivity level fetch failed + undelete: + success: Sensitivity level restored + error: Sensitivity level restore failed + update: + success: Sensitivity level updated + error: Sensitivity level update failed +settings: + system: + fetch: + error: System settings fetch failed + auth: + success: Auth settings updated + error: Auth settings update failed + external: + success: External settings updated + error: External settings update failed + compose: + fetch: + error: Compose settings fetch failed + update: + success: Compose settings updated + error: Compose settings update failed + ui: + fetch: + error: UI settings fetch failed + update: + success: UI settings updated + error: UI settings update failed +permissions: + fetch: + error: Permissions fetch failed + update: + success: Permissions updated + error: Permissions update failed + clone: + success: Permissions cloned + error: Permissions clone failed + role: + error: Failed to add role +connection: + fetch: + error: Connection fetch failed + update: + success: Connection updated + error: Connection update failed + create: + success: Connection created + error: Connection create failed + delete: + success: Connection deleted + error: Connection delete failed + undelete: + success: Connection restored + error: Connection restore failed diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/permissions.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/permissions.yaml similarity index 81% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/permissions.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/permissions.yaml index 5e7958322..7449749cb 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/permissions.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/permissions.yaml @@ -3,9 +3,40 @@ # - inline permission table (admin interface only) # - modal permission table (common perm. interface) ui: - reset-back: Reset back to "{{current}}" - save-changes: Save changes + save: Save changes + cancel: Cancel set-for: Set permissions for {{target}} + loading: Loading permissions + + edit: + title: Edit permissions + label: User roles + description: Select role to set permissions + edit-or-eval: Edit or evaluate permissions + + evaluate: + title: Evaluated permissions + description: Evaluate applied permissions + + add: + label: Add + title: Evaluate permissions + save: Save & Close + edit: + description: Select a role that you wish to edit permissions for + evaluate: + description: Select a combination of roles or a user to evaluate + role: + label: Roles + placeholder: Select role(s) + user: + label: Users + placeholder: Search or select a user + + tooltip: + unknown-context: + user: Can not evaluate permission for a user with contextual role on a non-specific resource + role: Can not evaluate permission for contextual role on a non-specific resource access: allow: Allow @@ -17,14 +48,6 @@ ui: click-on-cell-to-allow: Click on permission/role cell to allow a specific operation alt-click-to-deny: Use Alt-Click to set explicit deny on operation - not-allowed: Not allowed to set permissions - loading: Loading permissions - - role: - add-new: Add new role - add: Add role - no-role-selected: No role selected - title: automation: Automation permissions system: System permissions @@ -34,6 +57,7 @@ ui: clone: clone: Clone label: Clone permissions + pick-role: Pick a role title: Clone permissions to description: This will clone all the permissions of the current role and apply them to the selected @@ -145,6 +169,16 @@ resources: title: Create new report reports.search: title: List and search reports + dal-connections.search: + title: Search connections + dal-connection.create: + title: Create connections + dal-sensitivity-level.manage: + title: Manage connection sensitivity level + data-privacy-requests.search: + title: Search data privacy requests + data-privacy-request.create: + title: Create data privacy requests application: label: Applications @@ -204,6 +238,26 @@ resources: specific: Update client "{{target}} title: Update any client + dal-connection: + label: Connections + all: all connections + specific: connection "{{target}}" + operations: + read: + description: 'Default: deny' + specific: Read connection "{{target}} + title: Read any connection + update: + description: 'Default: deny' + specific: Update connection "{{target}} + title: Update any connection + delete: + description: 'Default: deny' + specific: Delete connection "{{target}} + title: Delete any connection + dal-config: + manage: + title: Manage any connections role: label: Roles all: all roles @@ -234,27 +288,27 @@ resources: delete: description: 'Default: deny' specific: Delete {{target}} - title: Delete any role + title: Delete any queue members.manage: description: 'Default: deny' specific: Manage members for {{target}} - title: Manage members for any role + title: Manage members for any queue read: description: 'Default: deny' specific: Read {{target}} - title: Read any role + title: Read any queue update: description: 'Default: deny' specific: Update {{target}} - title: Update any role + title: Update any queue queue.read: description: 'Default: deny' specific: Read messages from {{target}} - title: Read messages from any role + title: Read messages from any queue queue.write: description: 'Default: deny' specific: Write messages to {{target}} - title: Write messages to any role + title: Write messages to any queue template: label: Templates @@ -306,6 +360,10 @@ resources: all: all users specific: user "{{target}}" operations: + credentials: + manage: + specific: Manage {{target}}'s credentials + title: Manage any user delete: description: 'Default: deny' specific: Delete {{target}} @@ -339,6 +397,19 @@ resources: specific: Update {{target}} title: Update any user + data-privacy-request: + label: Privacy Requests + all: all requests + specific: request "{{target}}" + operations: + read: + description: 'Default: deny' + specific: Read {{target}} + title: Read any request + approve: + description: 'Default: deny' + specific: Approve {{target}} + title: Approve any request federation: component: label: Federation component @@ -406,6 +477,8 @@ resources: operations: delete: title: Delete any module + owned-record.create: + title: Manage owner when creating record of any module read: title: Read any module record.create: @@ -462,3 +535,7 @@ resources: title: Read any record update: title: Update any record + owner.manage: + title: Manage ownership of any record + revisions.search: + title: Access revisions of any record diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.actionlog.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.actionlog.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.actionlog.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.actionlog.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.apigw.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.apigw.yaml similarity index 50% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.apigw.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.apigw.yaml index 7bf4f226a..10741d89c 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.apigw.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.apigw.yaml @@ -1,39 +1,38 @@ list: + export: Export title: 'Integration Gateway' new: 'New' permissions: 'Permissions' + profiler: 'Profiler' yaml: 'YAML' loading: 'Loading routes' numFound: '{{count}} route found' numFound_plural: '{{count}} routes found' - filterForm: query: label: 'Filter route list' placeholder: 'Filter routes by name' - - excluded: label: 'Without' - - inclusive: label: 'Including' - - exclusive: label: 'Only' - - deleted: label: 'Deleted routes' - + handle: + placeholder: 'Filter endpoints by path' columns: endpoint: 'Endpoint' createdAt: 'Created' enabled: 'Enabled' + method: 'Method' actions: '' + state: State + rows: + filters: + deleted: Deleted editor: title: 'Edit route' @@ -88,16 +87,17 @@ editor: workflow: 'Workflow' status: 'HTTP Status' jsfunc: 'Function' + input: 'Input' httpStatus: - none: No Status - '300': 300 - Multiple Choices - '301': 301 - Moved Permanently - '302': 302 - Found - '303': 303 - See Other - '304': 304 - Not Modified - '307': 307 - Temporary Redirect - '308': 308 - Permanent Redirect + none: 'No Status' + '300': '300 - Multiple Choices' + '301': '301 - Moved Permanently' + '302': '302 - Found' + '303': '303 - See Other' + '304': '304 - Not Modified' + '307': '307 - Temporary Redirect' + '308': '308 - Permanent Redirect' placeholders: workflow: 'Select a workflow' @@ -109,5 +109,64 @@ editor: help: expression: - example: Example == "match string" && match(SecondParam, "^foo\\s.*$") - link: Documentation + example: 'Example == "match string" && match(SecondParam, "^foo\\s.*$")' + link: 'Documentation' + +profiler: + label: 'Profiler' + title: 'Integration Gateway Profiler' + refreshingIn: Refreshing in {{seconds}}s + description: + globalEnabled: 'Showing routes for all incoming requests' + globalDisabled: 'Showing only registered routes with profiler prefilter' + + hit: + title: 'Request Details' + general: + label: General + id: 'Request ID' + route: 'Request Route' + URL: 'Request URL' + method: 'Request Method' + statusCode: 'Status Code' + headers: 'Request Headers' + remoteAddress: 'Remote Address' + duration: 'Duration' + start: 'Start' + end: 'End' + openRoute: Open Route + headers: + label: 'Headers' + body: + label: 'Body' + + + filterForm: + query: + label: 'Filter route list' + placeholder: 'Filter routes by name' + excluded: + label: 'Without' + inclusive: + label: 'Including' + exclusive: + label: 'Only' + deleted: + label: 'Deleted routes' + + columns: + actions: '' + path: 'Route' + count: 'Count' + content_length: 'Content Length' + http_method: 'Method' + http_status_code: 'Status Code' + size_min: 'Size (min)' + size_max: 'Size (max)' + size_avg: 'Size (avg)' + time_min: 'Time (min)' + time_max: 'Time (max)' + time_avg: 'Time (avg)' + time_start: 'Start time' + time_finish: 'Finish time' + time_duration: 'Duration' diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.applications.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.applications.yaml similarity index 92% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.applications.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.applications.yaml index 7c9780dbb..7f75a1038 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.applications.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.applications.yaml @@ -5,7 +5,7 @@ editor: deletedAt: Deleted at enabled: Enabled id: ID - name: Name + name: Name * title: Basic information undelete: Undelete updatedAt: Updated at @@ -20,9 +20,10 @@ editor: label: Configuration listed: Listed logo: - description: Logo used in the application selector label: Logo + description: Logo used in the application selector placeholder: Choose a logo or drop it here... + reset: Reset name: description: Name used in the application selector label: Name @@ -38,6 +39,11 @@ list: enabled: Enabled name: Name appListName: App selector name + state: State + export: Export + rows: + filters: + deleted: Deleted filterForm: deleted: label: deleted applications diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.authclients.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.authclients.yaml similarity index 89% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.authclients.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.authclients.yaml index 2d3360145..429344db0 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.authclients.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.authclients.yaml @@ -17,9 +17,9 @@ editor: client_credentials: Will be used to authenticate machines (grant type = client_credentials) handle: disabledFootnote: Unable to change the handle of the default auth client - label: Handle + label: Handle * placeholder-handle: handle (a - z, 0 - 9, underscore, dash) - invalid-handle-characters: Should be at least 2 characters long and start with a letter. Can contains only letters, numbers, dash, underscore and dot + invalid-handle-characters: Should be at least 2 characters long and start with a letter. Can contain only letters, numbers, dashes, underscores and dots name: Name no-time: No time selected profile: Allow client access to user's profile @@ -27,9 +27,9 @@ editor: remove: Remove secret: Secret security: - forbiddenRoles: + prohibitedRoles: description: Roles from this list will be removed from security context when user authorizes this client - label: Forbidden roles + label: Prohibited roles forcedRoles: description: Roles from this list will be always added to security context when user authorizes this client label: Forced roles @@ -40,6 +40,9 @@ editor: description: Only roles in this list will be added into security context when user authorizes this client label: Permitted roles title: Basic information + tooltip: + regenerate-secret: Regenerate secret + reset-value: Reset value trusted: description: When client is trusted users do not see authorization step label: Trusted @@ -69,6 +72,10 @@ list: handle: Handle meta: name: Name + state: State + rows: + filters: + deleted: Deleted filterForm: deleted: label: deleted clients diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.connections.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.connections.yaml new file mode 100644 index 000000000..31a000091 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.connections.yaml @@ -0,0 +1,110 @@ +primary: + title: Primary database + name: Name + handle: Handle + location: Location + ownership: Ownership + sensitivity-level: Sensitivity level + +list: + title: List of database connections + add-button: Add connection + loading: Loading connections + filterForm: + deleted: + label: deleted connections + excluded: + label: Without + exclusive: + label: Only + inclusive: + label: Including + columns: + name: Name + location: Location + ownership: Ownership + createdAt: Created + +editor: + title: + edit: Edit connection + create: New connection + basic: + title: Basic settings + form: + name: + label: Name + placeholder: Data lake + description: '' + handle: + label: Handle * + placeholder: simplified_connection_name + description: + invalid-characters: Should be at least 2 characters long and start with a letter. Can contain only letters, numbers, dashes, underscores and dots + location-name: + label: Location name + placeholder: Name of the location where the data is stored + description: Name of the city, country, continent, etc. + location-geometry: + label: Location coordinates + description: Coordinates of the location where the data is stored + placeholder: + ownership: + label: Ownership + placeholder: ACME ltd. + description: Name of the company or person who owns the data + sensitivity-level: + label: Highest allowed sensitivity level + placeholder: Select a sensitivity level + description: Highest allowed level of sensitivity for the data stored (as set on fields of the module that uses this connection) + + properties: + title: Connection and database properties + form: + data-at-rest-encryption: + checkbox: + label: Encrypt data at rest enabled + notes: + label: Notes on encryption + description: Internal notes on data-at-rest encryption (disk encryption) + data-at-rest-protection: + checkbox: + label: Data at rest protection provided + notes: + label: Notes on data at rest protection + description: Internal notes on data-at-rest protection (physical protection) + data-at-transit-encryption: + checkbox: + label: Encrypt data at transit enabled + notes: + label: Notes on data at transit encryption (network encryption) + description: Internal notes on data-at-transit encryption (network encryption) + data-restoration: + checkbox: + label: Data at rest backup and restoration implemented + notes: + label: Notes on data restoration + description: Internal notes on data-restoration + + dal: + title: Data access layer configuration and connection parameters + form: + model-ident: + label: Default table or container name + placeholder: compose_record + description: | + Identifier can contain placeholders like {{module}} (replaced with module handle) and/or {{namespace}} (replace with namespace handle). + When set it is used as a default for modules without configure ident. + + type: + label: Connection and parameter type + placeholder: corteza::dal:connection:dsn + description: Type of the connection and parameter, e.g. corteza::dal:connection:dsn + + params: + label: Connection parameters + placeholder: postgres://user:pass@host:port/dbname + description: 'Connection parameters, e.g.: {"dsn": "postgres://user:pass@host:port/dbname"}' + + connectivity-issues: Connection issues + no-access-warning: No permissions to manage data access layer configuration and connection parameters for this connection diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.email.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.email.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.email.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.email.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.queues.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.queues.yaml similarity index 80% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.queues.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.queues.yaml index 1a52b6073..6a4a8ac1c 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.queues.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.queues.yaml @@ -6,7 +6,8 @@ editor: deletedAt: Deleted at dispatch_events: Dispatch events dispatch_events_desc: Dispatch events notifies the eventbus of queue message changes (new, processed, ...) - name: Queue name + name: Queue name * + invalid-handle-characters: Should be at least 2 characters long and start with a letter. Can contain only letters, numbers, dashes, underscores and dots poll_delay: Polling changes delay poll_delay_empty: 'Poll delay will not be used; to enable, use duration format (ie: 1h / 1m15s / 1h90s)' poll_delay_set: Poll delay will be used; if empty, it will not be used. @@ -22,7 +23,12 @@ list: actions: Actions consumer: Consumer createdAt: Created At + state: State queue: Queue + export: Export + rows: + filters: + deleted: Deleted filterForm: deleted: label: deleted queues diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.roles.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.roles.yaml similarity index 85% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.roles.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.roles.yaml index 5ef473f55..4a7af3cd8 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.roles.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.roles.yaml @@ -5,10 +5,10 @@ editor: createdAt: Created at delete: Delete deletedAt: Deleted at - handle: Handle + handle: Handle * placeholder-handle: handle (a - z, 0 - 9, underscore, dash) - invalid-handle-characters: Should be at least 2 characters long and start with a letter. Can contains only letters, numbers, dash, underscore and dot - name: Role name + invalid-handle-characters: Should be at least 2 characters long and start with a letter. Can contain only letters, numbers, dashes, underscores and dots + name: Role name * title: Basic information unarchive: Unarchive undelete: Undelete @@ -40,6 +40,11 @@ list: enabled: Enabled handle: Handle name: Name + state: State + rows: + filters: + archived: Archived + deleted: Deleted filterForm: archived: label: archived roles diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.sensitivityLevel.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.sensitivityLevel.yaml new file mode 100644 index 000000000..ebb748c73 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.sensitivityLevel.yaml @@ -0,0 +1,42 @@ +editor: + new: New + title: + create: Create sensitivity level + edit: Edit sensitivity level + info: + title: Basic Information + handle: + label: Handle * + placeholder: handle (a - z, 0 - 9, underscore, dash) + invalid-characters: Should be at least 2 characters long and start with a letter. Can contain only letters, numbers, dashes, underscores and dots + name: Name + description: Description + level: Level {{level}} + createdAt: Created at + delete: Delete + deletedAt: Deleted at + undelete: Undelete + updatedAt: Updated at + +list: + title: Sensitivity Levels + loading: Loading sensitivity levels + new: New + columns: + actions: '' + 'meta.name': Name + level: Level + createdAt: Created + state: State + rows: + filters: + deleted: Deleted + filterForm: + deleted: + label: deleted sensitivity levels + excluded: + label: Without + exclusive: + label: Only + inclusive: + label: Including diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.settings.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.settings.yaml similarity index 89% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.settings.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.settings.yaml index 6c87b55cb..ed9e52fc2 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.settings.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.settings.yaml @@ -13,10 +13,14 @@ editor: ignored-security: The system is configured to ignore password security constraints which is insecure on production deployments. If this is a production deployment, please contact your administrator to update the system configuration (the AUTH_PASSWORD_SECURITY .env variable). min-length: Minimum length min-length-description: Must be at least 8 characters - min-num-count: Minimum number of numbers - min-num-count-description: The password must include the specified number of numbers (disabled if set to 0) + min-num-count: Minimum number of digits + min-num-count-description: The password must include the specified number of digits (disabled if set to 0) min-special-count: Minimum number of special characters min-special-count-description: The password must include the specified number of special characters (disabled if set to 0) + min-upper-case-length: Minimum number of upper case characters + min-upper-case-description: The password must include the specified number of upper case characters (disabled if set to 0) + min-lower-case-length: Minimum number of lower case characters + min-lower-case-description: The password must include the specified number of lower case characters (disabled if set to 0) signup: email-confirmation-required: Signup email confirmation required enabled: Signup enabled @@ -109,9 +113,9 @@ editor: security: - forbidden-roles: + prohibited-roles: description: Roles from this list will be removed from security context when authenticates with this provider - label: Forbidden roles + label: Prohibited roles forced-roles: description: Roles from this list will be always added to security context when authenticates with this provider label: Forced roles diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.templates.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.templates.yaml similarity index 90% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.templates.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.templates.yaml index 6f712103c..8d99cc3de 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.templates.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.templates.yaml @@ -26,9 +26,9 @@ editor: createdAt: Created at delete: Delete deletedAt: Deleted at - handle: Handle + handle: Handle * placeholder-handle: handle (a - z, 0 - 9, underscore, dash) - invalid-handle-characters: Should be at least 2 characters long and start with a letter. Can contains only letters, numbers, dash, underscore and dot + invalid-handle-characters: Should be at least 2 characters long and start with a letter. Can contain only letters, numbers, dashes, underscores and dots meta: description: Description short: Short name @@ -51,6 +51,11 @@ list: language: Language meta: short: Short name + state: State + export: Export + rows: + filters: + deleted: Deleted filterForm: deleted: label: deleted templates diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.users.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.users.yaml similarity index 75% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.users.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.users.yaml index cf1ac0c4d..b599e92e9 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.users.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.users.yaml @@ -1,13 +1,17 @@ editor: + external-auth-providers: + label: Label + title: Manage external auth providers + type: Type info: confirmEmail: Confirm email address createdAt: Created at delete: Delete deletedAt: Deleted at - email: Email - handle: Handle + email: Email * + handle: Handle * placeholder-handle: handle (a - z, 0 - 9, underscore, dash) - invalid-handle-characters: Should be at least 2 characters long and start with a letter. Can contains only letters, numbers, dash, underscore and dot + invalid-handle-characters: Should be at least 2 characters long and start with a letter. Can contain only letters, numbers, dashes, underscores and dots name: Full name revokeAllSession: Revoke all active sessions suspend: Suspend @@ -64,6 +68,12 @@ list: enabled: Enabled handle: Handle name: Name + state: State + export: Export + rows: + filters: + deleted: Deleted + suspended: Suspended filterForm: deleted: label: deleted users @@ -85,3 +95,14 @@ list: permissions: Permissions title: Users yaml: YAML +export: + buttonLabel: Export + title: Export users + inclRoleMembership: Include role membership + inclRoles: Include roles + membershipRequiredLabel: Roles can only be exported when role membership is selected + export: Export +import: + buttonLabel: Import + title: Import users + uploadFilePlaceholder: Click or drop files here to import diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/ui.settings.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/ui.settings.yaml new file mode 100644 index 000000000..76e71a640 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/ui.settings.yaml @@ -0,0 +1,50 @@ +editor: + title: 'User Interface Settings' + + mainLogo: + title: 'Main logo' + + uploader: + instructions: 'Click or drop main logo here to upload' + uploading: 'Uploading main logo' + + iconLogo: + title: 'Icon logo' + + uploader: + instructions: 'Click or drop icon logo image here to upload' + uploading: 'Uploading icon logo' + + favicon: + title: 'Favicon' + + uploader: + instructions: 'Click or drop favicon file here to upload' + uploading: 'Uploading favicon' + + topbar: + title: Topbar + + general: General + + app-selector: + hide: Hide app selector + help: + title: Help + hide: Hide help + hide-forum-link: Hide forum link + hide-documentation-link: Hide documentation link + hide-feedback-link: Hide feedback link + profile: + title: Profile + hide: Hide profile + hide-profile-link: Hide profile link + hide-change-password-link: Hide change password link + + links: + title: Custom links + handle: Name + invalid-handle-characters: Should be at least 2 characters long and start with a letter. Can contain only letters, numbers, dashes, underscores and dots + url: URL + new-tab: New tab + diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/ui.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/ui.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/ui.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/ui.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/block.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/block.yaml similarity index 83% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/block.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/block.yaml index 13f789385..f4b8a32d9 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/block.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/block.yaml @@ -24,7 +24,7 @@ automation: removeAll: Remove all searchPlaceholder: Filter available scripts by label, script name and description secondaryButton: Secondary - stepID: 'stepID: {{stepID}}' + stepID: 'Starting step ID: {{stepID}}' successButton: Success warningButton: Warning calendar: @@ -95,8 +95,9 @@ chart: chartId: Chart preview (ID {{0}}) searchPlaceholder: Type here to search all charts in this namespace content: - label: Content ok: Ok + label: Content + openLinkInNewTab: Open link in a new tab urlPlaceholder: https://example.tld file: label: File @@ -107,6 +108,7 @@ general: descriptionLabel: Description descriptionPlaceholder: Block description headerStyle: Block header style (color) + wrap: Display block as a card label: add: Add back: Back @@ -133,6 +135,7 @@ general: titlePlaceholder: Block title tooltip: dragAndDrop: Drag and drop to change order + translations: Field translations iframe: label: IFrame pickURLField: Pick an URL field @@ -190,7 +193,7 @@ record: moduleOrPageNotSet: 'RecordList block error: module or page option not set' moduleMismatch: Module incompatible, module mismatch preview: - blockNoRecord: Can not render this block without a record + blockNoRecord: Cannot render this block without a record fieldsFromModule: Single record block, displaying fields ({{0}}) from module {{1}} untitled: Untitled recordDeleted: This record was deleted @@ -248,7 +251,10 @@ recordList: note: 'Note: If Field value is undefined, the filter will look for records where that field value is undefined.' only: Only operators: + like: Like + notLike: Not Like contains: Contains + notContains: Not contains equal: Equal greaterThan: Greater than lessThan: Less than @@ -340,16 +346,27 @@ recordList: prefilterLabel: Prefilter records prefilterPlaceholder: field1 = 1 AND field2 = 232 presortFootnote: Simplified SQL condition (ORDER BY ...) syntax is supported. + presortToggleInput: Toggle input type presortHideSort: Hide sorting presortLabel: Presort records presortPlaceholder: field1 DESC, field2 ASC showTotalCount: Show total record count + openInNewTab: Open records in a new tab + linkToParent: Link to parent record + tooltip: + clone: Clone record + edit: Edit record + undelete: Undelete record + reminder: Reminder + view: View record recordPage: record page refField: footnote: Field that links records with the parent record label: Parent field selectable: Enable record selection selected: '{{count}} of {{total}} records selected' + sort: + tooltip: Sort column recordOrganizer: descriptionField: footnote: Field value will be used as record description @@ -372,6 +389,54 @@ recordOrganizer: preview: label: 'Record Organizer block for module {{0}}. Label field {{1}}, Description field {{2}}. Value setting field: {{3}}, Sorted by position field: {{4}}.' moduleNotSelected: Record Organizer module not selected. + addNewRecord: + Add new record + +recordRevisions: + label: Record revisions + + viewer: + errors: + no-record: No record found to display revisions for. + disabled-on-module: Record revisions are disabled on this module. + + show-revisions: Show record revisions ({{ revision }}) + show-changes: "{{ count }} change(s)" + revisions: + columns: + timestamp: + label: Timestamp + operation: + label: Operation + user: + label: User + changes: + columns: + field: + label: Field + old-value: + label: Old value + new-value: + label: New value + + configurator: + label: Record revisions + preload: Preload record revisions + errors: + invalid-module-id: Field does not contain a valid module ID. + fields: + label: Configure fields to display in record revisions changes + show-all: + label: Show changes for all fields + columns: + label: + label: Label + kind: + label: Type + displayed-fields: + label: Show + expanded-references: + label: Expand references + socialFeed: label: Twitter feed noInput: No input for displaying social feed... @@ -406,3 +471,51 @@ comment: footnote: 'Field value will be used as reference' navigation: chart: Charts +report: + label: Report + scenario: + label: Scenario + element: + label: Display element + description: Display elements are grouped by their respective block + +progress: + add: + Add + aggregate: + label: Aggregation operation + select: Select aggregation operation + animated: Animated + default-variant: Default variant + display-options: Display options + fetch-failed: Failed to fetch progress bar report + field: + label: Field + select: Select field + label: Progress bar + module: + select: Select module + label: Module + preview: Live example + show: + value: Show value + relative: Show relative + progress: Show progress + tab: + label: Progress + thresholds: Thresholds + threshold: + label: Threshold + variant: Set which variant to show if value is equal or larger than the threshold + value: + label: Value + max: Maximum value + variant: + default: Dark + danger: Danger + dark: Dark + info: Info + light: Light + primary: Primary + secondary: Secondary + success: Success + warning: Warning diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/chart.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/chart.yaml similarity index 87% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/chart.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/chart.yaml index f7a7c7cd3..c5bb0348c 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/chart.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/chart.yaml @@ -11,7 +11,7 @@ general: value: Value placeholder: handle: handle (a - z, 0 - 9, underscore, dash) - invalid-handle-characters: Should be at least 2 characters long and start with a letter. Can contains only letters, numbers, dash, underscore and dot + invalid-handle-characters: Should be at least 2 characters long and start with a letter. Can contain only letters, numbers, dashes, underscores and dots edit: dimension: calculateLabelCount: Calculate how many labels can be shown @@ -31,10 +31,17 @@ edit: gaugeSteps: Steps label: Dimensions skipMissingValues: Skip missing values + optionsPicker: + searchPlaceholder: Type here to search among select options + availableItems: Available options + selectAllItems: Select all + selectedItems: Selected options + unselectAllItems: Unselect all + noItemsFound: No options found filter: customize: Customize filter label: Filters - noFilter: (no filter) + noFilter: Select a predefined filter or make a custom one recordsCreatedLastMonth: Records created last month recordsCreatedLastQuarter: Records created last quarter recordsCreatedLastYear: Records created last year @@ -86,6 +93,7 @@ edit: placeholder: Select metric output relative: Show relative value relativePrecision: 'Precision:' + cumulative: Cumulative title: Metrics module: label: Module diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/field.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/field.yaml similarity index 75% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/field.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/field.yaml index 51f22fc90..4a2d78dd8 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/field.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/field.yaml @@ -1,5 +1,8 @@ +available-items: Available fields +selected-items: Selected fields defaultFieldValue: Default field value defaultValue: Default value +required-field: This field is required kind: bool: checkedValueLabel: Value when checked @@ -29,7 +32,7 @@ kind: grid: Grid list: List maxSizeLabel: Maximum file size - mimetypesFootnote: 'MIME types, sepparated with ",". Example: "text/plain,text/csv"' + mimetypesFootnote: 'MIME types, separated with ",". Example: "text/plain,text/csv"' mimetypesLabel: File type allow list modeFootnote: How files are represented in record page blocks modeLabel: View mode @@ -50,18 +53,44 @@ kind: prefixPlaceholder: Prefix suffixLabel: Suffix suffixPlaceholder: Suffix + displayType: + label: Display type + number: Number + progress: Progress bar + maximumValue: Maximum value + progress: + animated: Animated + show: + value: Show value + relative: Show relative + progress: Show progress + showRelative: Show relative + variants: + default: Default variant + danger: Danger + dark: Dark + info: Info + light: Light + primary: Primary + secondary: Secondary + success: Success + warning: Warning + thresholds: + label: Thresholds + description: Set which variant to show if value is equal or larger than the threshold record: currentUnnamedModule: (Current unnamed module) label: Record moduleLabel: Module name modulePlaceholder: Pick module + queryFieldsLabel: Query fields on search + moduleField: Module field + fieldFromModuleField: Label field from related module field + pickField: Pick field + suggestionPlaceholder: Start typing to search for records prefilterFootnote: Simplified SQL condition (WHERE ...) syntax is supported. Variables like {{0}}, {{1}} and {{2}} are evaluated (when available) prefilterLabel: Prefilter records prefilterPlaceholder: field1 = 1 AND field2 = 232 - queryFieldsLabel: Query fields on search - recordFieldLabel: Record label from field - recordFieldPlaceholder: Pick field - suggestionPlaceholder: Start typing to search for records select: label: Select optionAdd: Add @@ -81,6 +110,7 @@ kind: multiLine: Multi line richText: Use Rich Text Editor url: + example: 'Example URL: https://example.com' label: URL preventToLink: Don't turn Url into a link sshOnly: Only allow SSL (https) Url @@ -95,7 +125,14 @@ kind: roles: label: User roles placeholder: Filter by user roles + geometry: + label: Geometry + latitude: Latitude + longitude: Longitude + clickToPlaceMarker: Click to place a marker or click on a marker to remove it + initialZoomAndPosition: Set initial map zoom and position noPermission: No permission to read field value +no-items-found: No items found options: description: label: @@ -138,7 +175,19 @@ selector: selected: Selected fields systemField: (system field) unselectAll: Unselect all +privacy: + sensitivity-level: + label: Sensitivity level + placeholder: Select a sensitivity level + usage-disclosure: + label: Sensitive field usage disclosure (visible on data-privacy console) system: + id: Record ID + moduleID: Module ID + namespaceID: Namespace ID + revision: Record revision + meta: Meta data + recordID: Record ID createdAt: Created at createdBy: Created by deletedAt: Deleted at diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/general.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/general.yaml similarity index 88% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/general.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/general.yaml index 61bfd2916..0f2f19b92 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/general.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/general.yaml @@ -1,20 +1,28 @@ label: + app-name: + public: Low Code + private: Low Code - Admin actions: Actions active: Active add: Add + add-with-plus: + Add addNew: Add new addValue: Add new value + ascending: Ascending attachmentFileInfo: '(File size: {{0}}, uploaded {{1}})' attributes: Attributes back: Back backWithoutSave: Back (without saving changes) + block: Block browse: Browse buttons: Buttons cancel: Cancel + clear: Clear clone: Clone close: Close create: Create delete: Delete + descending: Descending description: Description download: Download dropFiles: Click or drop files here to upload @@ -34,14 +42,16 @@ label: multi: Multi value name: Name next: Next - "no": "No" + no: No noHandle: No handle none: None + now: Now ok: Ok openBookmarks: Open bookmarks pageBuilder: Page builder permissions: Permissions private: Private + privacy: Privacy processing: Processing... record: Record recordPage: Record page @@ -49,11 +59,14 @@ label: remove: Remove removeDefault: Remove default required: Required + reset: Reset + sensitive: Sensitive save: Save saveAndClose: Save and close status: Status timeHour: '{{t}}h' timeMinute: '{{t}}min' + today: Today title: Title type: Type updatedAt: Updated at @@ -62,7 +75,7 @@ label: urlPlaceholder: https://example.tld validation: Validation view: View - "yes": "Yes" + yes: Yes navigation: chart: Charts namespace: Namespaces @@ -88,6 +101,7 @@ reminder: snooze: Snooze tooltip: dragAndDrop: Drag and drop to change order + field: Configure field fieldKinds: Bool: label: Checkbox (Y/N) @@ -113,6 +127,8 @@ fieldKinds: label: Geometry field: selectAll: Select all + tooltip: + permissions: Field permissions unselectAll: Unselect all kind: user: diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/module.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/module.yaml new file mode 100644 index 000000000..a7174fb6a --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/module.yaml @@ -0,0 +1,199 @@ +allRecords: + create: + title: Create record for module "{{name}}" + edit: + title: Edit record for module "{{name}}" + label: All records + list: + title: All records for module "{{name}}" + columns: + title: Configure columns + description: The columns picked won't be saved after you refresh the page + view: + title: View record for module "{{name}}" +block: + record: + recordDeleted: This record was deleted + loadFailed: Could not load record +createLabel: New Module +edit: + create: Create module + edit: Edit module + fields: + label: Fields + federationSettings: + downstream: + allFields: All Fields + description: 'Match federated fields with existing ones:' + title: Map + error: + fetch: + data: Error fetching server data + exposed: Error fetching exposed module info + shared: Error fetching shared module info + mmap: Error fetching module mapping info + node: Error fetching nodes info + persist: + exposed: Error persisting exposed module info + shared: Error persisting shared module info + mmap: Error persisting module mapping info + general: + receive: Receive new records from another organization (downstream) + send: Send new records to the federated network (upstream) + title: General + noNodes: No federated servers available + noPermission: No permission to manage exposed module + pickModule: Pick a federated module + pickModuleField: Pick a module field + pickServer: Pick a federated server + specificTitle: Federation Settings ({{handle}}) + title: Federation Settings + upstream: + copyFrom: Copy settings from + allFields: All Fields + description: Select the fields you want to share with the selected network + title: Expose + discoverySettings: + title: Discovery settings + public: Public + private: Private + protected: Protected + fieldPermissions: Field permissions + manageRecordFields: Manage record fields + moduleFieldSettings: Module field settings + moduleInfo: Module info + newField: Add new field + recordPermissions: Record permissions + reorderFields: Reorder fields + specificFieldSettings: Field settings ({{name}}) + steps: + recordList: Page with record list + recordPage: Record page + systemFields: 'System fields:' + tooltip: + attributes: Select if the field can hold multiple values, if it's required field or if contains sensitive data + name: Should be at least 2 characters long and start with a letter. Can contain only letters, numbers, dashes, underscores and dots + private: Sensitive data + required: Required field + title: The name displayed in form input / data lists + + issues: + label: Issues ({{count}}) + + + config: + dal: + title: Data store + connection: + label: Database connection + placeholder: Select a database connection + description: Changing the connection will reset the sensitivity level configuration on the module and fields, if the sensitivity level is incompatible with the new connection + ident: + label: Collection or database table name + placeholder: compose_record + description: "Name of the database table or collection where records can be accessed and stored. Supports partitioning placeholders: {{module}} for module handle and {{namespace}} for namespace handle" + + connections: + fetch-failed: Could not fetch available connections + + + module-fields: + label: Module field mapping and encoding + description: | + Configure how record fields are stored and read from the database. + Default behaviour is to encode values into JSON and store them in a single field. + Alternatively you can use columns with the same name as the field name (Column) + or use an Alias and store the value directly in the column. + + system-fields: + label: System field mapping and encoding + description: | + System fields are used to store metadata about the record. + Configure to skip or store them into a column with the same name (Column), + a different column (Alias) or encode them into JSON. + + encoding-strategy: + ident: + placeholder: Field or database table column name + + strategies: + plain: + label: Column + alias: + label: Alias + json: + label: JSON + + + privacy: + title: Privacy Settings + sensitivity-level: + label: Highest allowed allowed sensitivity level + placeholder: Select a sensitivity level + description: Highest allowed level of sensitivity for fields on this module, changing this value will reset the sensitivity level of fields if they are incompatible. + usage-disclosure: + label: Sensitive data usage disclosure (visible on data-privacy console) + + sensitivity-levels: + fetch-failed: Could not fetch sensitivity levels + + record-revisions: + title: Record Revisions + enabled: Enable record revisions + ident: + label: Identifier + placeholder: compose_record_revisions + description: 'Name of the database table or collection where revisions records can be accessed and stored. Supports partitioning placeholders: {{module}} for module handle and {{namespace}} for namespace handle' + + validation: + title: Validation + + record-duplication: + title: Record duplication detection + strict-fields: + label: Strict duplicate value validation + description: Record will not be saved when a duplicate value is detected in the selected fields in any existing record of this module + non-strict-fields: + label: Soft duplicate value validation + description: Record will be saved and user will be presented with a warning when a duplicate value is detected in the selected fields in any existing record of this module + + +federated: Federated +forModule: + recordList: Record List for module + recordListPage: Record List page for module + recordPage: Record page for module +general: + fields: Module fields + label: + attributes: Attributes + handle: Handle + name: Name * + permissions: Permissions + title: Title + type: Type + saveAndClose: Save and close + placeholder: + handle: Handle + sample: Sample + invalid-handle-characters: Should be at least 2 characters long and start with a letter. Can contain only letters, numbers, dashes, underscores and dots +import: Module import +navigation: + module: Modules +newLabel: Module Name * +newPlaceholder: Name used on the list of modules +noModule: No modules +noModuleFilter: No module matches your search + +recordPage: + create: Create record page + edit: Edit record page +recordListPage: + create: Create record list page + edit: Edit record list page +related-pages: Related Pages +searchPlaceholder: Type here to search all modules in this namespace +title: List of Modules +tooltip: + permissions: Module permissions + diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/namespace.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/namespace.yaml similarity index 72% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/namespace.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/namespace.yaml index 89bb409dd..6a69df192 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/namespace.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/namespace.yaml @@ -1,7 +1,8 @@ +manage-view: + label: Manage namespaces application: label: Enable on application list clickOpen: Click to open -create: Create new namespace import: buttonLabel: Import namespace title: Import namespace @@ -42,9 +43,32 @@ slug: description: The short name will be used in the URL label: Short name * placeholder: Enter a short name for the namespace - invalid-handle-characters: Should be at least 2 characters long and start with a letter. Can contains only letters, numbers, dash, underscore and dot + invalid-handle-characters: Should be at least 2 characters long and start with a letter. Can contain only letters, numbers, dashes, underscores and dots subtitle: label: Subtitle placeholder: Enter namespace subtitle title: Low Code Namespaces +tooltip: + translations: Namespace translations visit: Visit namespace + + +manage: + title: Manage namespaces + list-view: Back to namespace list + + disabled: Disabled + noResults: No namespaces found + + toolbar: + buttons: + create: Create new namespace + permissions: Permissions + search: + placeholder: Type here to search among all namespaces... + + table: + columns: + name: Name + handle: Handle + last-change: Last change diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/navigation.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/navigation.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/navigation.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/navigation.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/notification.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/notification.yaml similarity index 83% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/notification.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/notification.yaml index 937bed5ca..6a705595b 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/notification.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/notification.yaml @@ -7,6 +7,7 @@ chart: invalidConfig: missingDimensionsField: Dimensions field not defined missingDimensionsModifier: Dimensions modifier not defined + missingDimensionsSteps: Dimensions steps are not defined missingMetricsAggregate: Metrics aggregate not defined missingMetricsField: Metrics field not defined missingMetricsType: Metrics chart type not defined @@ -86,3 +87,20 @@ record: unexpectedValue: Unexpected value for record module ({{type}}) updateFailed: Could not update record validationErrors: check error messages on the form + validationWarnings: Record saved successfully, check warning messages on the form + staleDataRefresh: Stale record data, all unsaved changes will be lost. Do you wish to refresh the data now? +record-list: + corrupted-filter: Corrupted filter + incorrect-filter-structure: Incorrect structure of filter {{filterID}} +report: + listFetchFailed: Failed to fetch reports + fetchFailed: Failed to fetch report + runFailed: Failed to run report +translations: + saved: Translations saved + saveFailed: Could not save translations +connection: + read-failed: Failed to read connection +sensitivity-level: + fetch-failed: Failed to fetch sensitivity levels + diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/onboarding.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/onboarding.yaml similarity index 88% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/onboarding.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/onboarding.yaml index 6a73fe507..fb38b0f31 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/onboarding.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/onboarding.yaml @@ -22,3 +22,7 @@ step: page: create: Build Page view: Your Pages +tooltip: + page-configuration: + edit: Edit page + list: Page translations diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/page.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/page.yaml similarity index 72% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/page.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/page.yaml index e2e30a1ad..09dcf1dd0 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/page.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/page.yaml @@ -10,7 +10,7 @@ block: handle: handle (a - z, 0 - 9, underscore, dash) sample: Sample title: Add new block - invalid-handle-characters: Should be at least 2 characters long and start with a letter. Can contains only letters, numbers, dash, underscore and dot + invalid-handle-characters: Should be at least 2 characters long and start with a letter. Can contain only letters, numbers, dashes, underscores and dots changeBlock: Change existing block build: addBlock: Add block @@ -42,6 +42,21 @@ notVisible: Hidden pageMoveFailed: Could not move this page reordered: Page reordered title: List of Pages +tooltip: + view: View page + edit: + page: Edit page + block: Edit block view: View visible: Visible -deleteDisabled: Remove the sub-pages to delete this page +delete: + rebase: Update parent of sub-pages + cascade: Delete sub-pages +public: + record: + create: + title: Creating record for module "{{name}}" + edit: + title: Editing record for module "{{name}}" + view: + title: Viewing record for module "{{name}}" diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/permissions.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/permissions.yaml similarity index 76% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/permissions.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/permissions.yaml index 23b07b83a..0ae64fca2 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/permissions.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/permissions.yaml @@ -1,7 +1,32 @@ ui: - reset-back: Reset back to "{{current}}" - save-changes: Save changes + save: Save changes + cancel: Cancel set-for: Set permissions for {{target}} + loading: Loading permissions + + edit: + label: User roles + description: Select role to set permissions + + evaluate: + label: Evaluate + description: Evaluate applied permissions + + add: + label: Add + title: Evaluate permissions + save: Save & Close + role: + label: Roles + placeholder: Select role(s) + user: + label: Users + placeholder: Search or select a user + + tooltip: + unknown-context: + user: Can not evaluate permission for a user with contextual role on a non-specific resource + role: Can not evaluate permission for contextual role on a non-specific resource access: allow: Allow @@ -30,6 +55,7 @@ resources: module: all: all modules specific: module "{{target}}" + tooltip: Module permissions operations: delete: description: 'Default: deny' @@ -51,11 +77,17 @@ resources: description: 'Default: deny' specific: Update module "{{target}}" title: Update any module + 'owned-record.create': + description: 'Default: deny' + specific: Manage owner when creating record "{{target}}" + title: Manage owner when creating record of any module + all-specific: Manage owner when creating record of module "{{ target }}" module-field: all: all module fields specific: field "{{target}}" all-specific: all module fields of module "{{ target }}" + tooltip: Module field permissions operations: record.value.read: description: 'Default: deny' @@ -71,6 +103,7 @@ resources: namespace: all: all namespaces specific: namespace "{{target}}" + tooltip: Namespace permissions operations: chart.create: description: "" @@ -116,6 +149,7 @@ resources: page: all: all pages specific: page "{{target}}" + tooltip: Page permissions operations: delete: description: 'Default: deny' @@ -134,6 +168,7 @@ resources: all: all records specific: record "{{target}}" all-specific: all records of module "{{ target }}" + tooltip: Record permissions operations: delete: description: 'Default: deny' @@ -150,3 +185,13 @@ resources: specific: Update record "{{target}}" title: Update records of any module all-specific: Update records of module "{{ target }}" + 'owner.manage': + description: 'Default: deny' + specific: Manage owner of record "{{target}}" + title: Manage record owners of any module + all-specific: Manage record owners of module "{{ target }}" + 'revisions.search': + description: 'Default: deny' + specific: Access revisions of record "{{target}}" + title: Access record revisions + all-specific: Access record revisions diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/preview.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/preview.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/preview.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/preview.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/resource-translator.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/resource-translator.yaml similarity index 62% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/resource-translator.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/resource-translator.yaml index 08bcfc603..c377b0a64 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/resource-translator.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/resource-translator.yaml @@ -4,14 +4,20 @@ translator: missing-translation: Missing translation resources: + chart: + title: Chart "{{ handle }}" namespace: title: Namespace "{{ handle }}" + tooltip: Namespace translations module: title: Module "{{ handle }}" + tooltip: Module translations field: title: Module field "{{ name }}" - + tooltip: Field translations page: title: Page "{{ handle }}" + tooltip: Page translations block: title: "Page block #{{ blockID }}" + tooltip: Block translations diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/sidebar.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/sidebar.yaml similarity index 56% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/sidebar.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/sidebar.yaml index 6f8c59b09..724f4ec28 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/sidebar.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-compose/sidebar.yaml @@ -1,9 +1,11 @@ adminPanel: Admin panel chart: Charts -namespaceList: Namespace list +manageNamespaces: Manage namespaces module: Modules noPages: No pages page: Pages pickNamespace: Select a namespace publicPages: Public pages -searchPlaceholder: Search pages... +searchPlaceholder: + admin: Search resources... + public: Search pages... diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-discovery/filters.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-discovery/filters.yaml similarity index 92% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-discovery/filters.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-discovery/filters.yaml index 4a84eb698..c838646ed 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-discovery/filters.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-discovery/filters.yaml @@ -10,3 +10,5 @@ types: aggregation-groups: modules: Modules namespaces: Namespaces + +reset: Reset diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-discovery/general.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-discovery/general.yaml new file mode 100644 index 000000000..43af6853d --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-discovery/general.yaml @@ -0,0 +1,2 @@ +federated: Federated +no-values: No values \ No newline at end of file diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-discovery/navigation.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-discovery/navigation.yaml new file mode 100644 index 000000000..639b40ec1 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-discovery/navigation.yaml @@ -0,0 +1,11 @@ +discovery: Discovery +help: + documentation: Documentation + feedback: Send feedback + forum: Help + version: 'Version:' +userSettings: + changePassword: Change password + loggedInAs: Logged in as {{user}} + logout: Logout + profile: Profile diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-discovery/notification.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-discovery/notification.yaml new file mode 100644 index 000000000..df5d4895e --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-discovery/notification.yaml @@ -0,0 +1,6 @@ +general: + error: Error + success: Success + warning: Warning +search: + failed: Search failed \ No newline at end of file diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-discovery/search.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-discovery/search.yaml similarity index 69% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-discovery/search.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-discovery/search.yaml index dd74776e5..fe1013f4e 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-discovery/search.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-discovery/search.yaml @@ -1,7 +1,6 @@ notification: search-error: There was problem getting search result input-placeholder: Enter search text -search-results: Search Results card: button-text: Show more type: Type @@ -12,4 +11,8 @@ card: email: Email record: Record fields: Fields - +tooltip: + map: Toggle map +range: Showing {{actual}} of {{all}} results +discovering: Discovering +no-results: No results diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-one/app.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-one/app.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-one/app.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-one/app.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-one/layout.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-one/layout.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-one/layout.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-one/layout.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-one/navigation.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-one/navigation.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-one/navigation.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-one/navigation.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-one/onboarding-tour.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-one/onboarding-tour.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-one/onboarding-tour.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-one/onboarding-tour.yaml diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-privacy/dashboard.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-privacy/dashboard.yaml new file mode 100644 index 000000000..8bbbe038d --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-privacy/dashboard.yaml @@ -0,0 +1,31 @@ +title: Data Privacy Console +connection-location: Connection Location +description: + first: The Data Privacy Console enables you to access the overview of your personal data, request data deletion or data export. + second: These actions are subject to validation by the DC (Data Controller) of your organization. +user-options: + data-overview: + title: Data Overview + description: Review your profile information and your personal data stored in Corteza applications + button-label: View your data + privacy-requests: + title: Privacy Requests + description: Access, manage or export a list of all your privacy-related (deletion, export, correction) requests + button-label: Your privacy requests + export: + title: Data Export + description: Open a new data export request by selecting the data type, date range and outcome file format + button-label: Request data export + delete: + title: Data Deletion + description: Request for your selected personal data to be deleted from the system + button-label: Request data deletion +dc-options: + privacy-requests: + title: Privacy Requests + description: Access, manage or export a list of all privacy-related (deletion, export, correction) requests + button-label: Incoming privacy requests + sensitive-data: + title: Sensitive Data + description: Overview of all modules with sensitive data fields + button-label: List of sensitive data diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-privacy/data-overview.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-privacy/data-overview.yaml new file mode 100644 index 000000000..1613231b5 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-privacy/data-overview.yaml @@ -0,0 +1,19 @@ +title: Data Overview + +data-types: + profile-information: + title: Profile Information + description: Your contact information, names, surname, nickname, profile picture + application-data: + title: Application Data + description: Your personal data stored in Corteza + +application: + title: Application Data + connection: + label: Connection + placeholder: Select a Connection + no-data-available: No data available + private-fields: Private Fields + request-correction: Request Correction + request-deletion: Request Deletion diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-privacy/general.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-privacy/general.yaml new file mode 100644 index 000000000..fd49fc858 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-privacy/general.yaml @@ -0,0 +1,15 @@ +label: + back: Back + +resourceList: + loading: Loading + noItems: No items + notFound: Not found + search: + placeholder: Type here to search items + pagination: + next: Next + prev: Previous + showing: '{{from}} - {{to}} of {{count}} items' + single: One item + single_plural: '{{count}} items' \ No newline at end of file diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-privacy/map.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-privacy/map.yaml new file mode 100644 index 000000000..8d2311ad7 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-privacy/map.yaml @@ -0,0 +1,4 @@ +location: Location +name: Name +server-details: Server Details +unnamed-location: Unnamed location \ No newline at end of file diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-privacy/module-records.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-privacy/module-records.yaml new file mode 100644 index 000000000..8b47bff6e --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-privacy/module-records.yaml @@ -0,0 +1,3 @@ +module: Module +namespace: Namespace +no-records: No records \ No newline at end of file diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-discovery/navigation.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-privacy/navigation.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-discovery/navigation.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-privacy/navigation.yaml diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-privacy/notification.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-privacy/notification.yaml new file mode 100644 index 000000000..450f5d6c4 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-privacy/notification.yaml @@ -0,0 +1,11 @@ +general: + error: Error + success: Success + warning: Warning +search: + failed: Search failed +list: + load: + error: Failed to load resource list +connection-load-failed: Failed to load connections +sensitive-data-fetch-failed: Failed to fetch sensitive data \ No newline at end of file diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-privacy/request.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-privacy/request.yaml new file mode 100644 index 000000000..0eccc5dfe --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-privacy/request.yaml @@ -0,0 +1,81 @@ +comments: + enter: Enter comment... + label: Comments + sort: + first: + newest: Newest first + oldest: Oldest first + submit: Submit + unknown: + date: Unknown date + user: Unknown user + +kind: + correct: Correction Request + delete: Deletion Request + export: Export Request + +status: + canceled: Canceled + pending: Pending + rejected: Rejected + approved: Approved + +list: + title: Privacy Requests + export: Export + columns: + kind: Type + requestedAt: Requested at + requestedBy: Requested by + status: Status + request: + approve: Approve Requests + cancel: Cancel Request + reject: Reject Requests + +edit: + correct: + private-fields: Private Fields + no-data-available: No data available + submit: Submit Correction Request + connection: + label: Connection + placeholder: Select a Connection + delete: + private-fields: Private Fields + no-data-available: No data available + submit: Delete Selected Data + connection: + label: Connection + placeholder: Select a Connection + export: + submit: Export Selected Data + data-type: + label: Data Type to export + profile-information: Profile Information + application-data: Application Data + date-range: + label: Date Range + all: All of my data + file-format: + label: File Format + json: JSON + csv: CSV + +view: + approve: Approve request + cancel: Cancel request + reject: Reject request + export: + data-type: + label: Data Type to export + profile-information: Profile Information + application-data: Application Data + date-range: + label: Date Range + all: All of my data + file-format: + label: File Format + json: JSON + csv: CSV diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-privacy/sensitive-data.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-privacy/sensitive-data.yaml new file mode 100644 index 000000000..d83cda4fe --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-privacy/sensitive-data.yaml @@ -0,0 +1,11 @@ +list: + title: Sensitive Modules + columns: + module: Module + namespace: Namespace + connection: Connection + location: Location + ownership: Ownership + module: + enable: Enable modules + disable: Disable modules diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/builder.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/builder.yaml similarity index 57% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/builder.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/builder.yaml index e48587e86..c89b021b7 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/builder.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/builder.yaml @@ -1,9 +1,6 @@ add: - label: Add - with-plus: '+ Add' datasource: Add datasource display-element: Add display element -ascending: Ascending available: Available block: description: Block description @@ -13,19 +10,21 @@ block: datasource: label: Datasource types: - load: + load: label: Load - loads-data-from-specified-resource-such-as-compose-records: Loads data from a specified resource, such as Compose records + data-from-resource: Loads data from a specified resource, such as Compose records + link: + label: Link + load-datasources: Links two Load datasources with a unique column that links them together, such as a Compose record selector join: label: Join - joins-two-load-datasources-such-as-compose-record-selector: Joins two Load datasources with a unique column that links them together, such as a Compose record selector - group: - label: Group - groups-data-from-load-datasource-like-counting-number-of-accounts-with-same-status: Groups data from a load datasource based on a column value and aggregates it, such as counting the number of Accounts with the same status + load-datasources: Joins two datasources with a unique column that joins them together, such as a Compose record selector. The join step produces a single set of rows in contrast to the link step which produces an independent data frame for each local row + aggregate: + label: Aggregate + load-datasource: Aggregates data from a load datasource based on a column value and aggregates it, such as counting the number of Accounts with the same status datasources: label: Datasources save: Save Datasources -descending: Descending description: Description display-elements: types: @@ -37,7 +36,6 @@ element: Element elements: Elements filter-expression: Filter expression general: General -grab: '.grab' joined-datasource-handling: Joined datasource handling layout: Layout layout-options: @@ -45,7 +43,6 @@ layout-options: vertical: Vertical limit: Limit no-blocks-added: No blocks added yet -none: None or: Or pick-scenario: Pick a scenario prefilter: Prefilter @@ -58,10 +55,17 @@ scenarios: label: Scenarios save: Save Scenarios title: Title +tooltip: + edit: + report: Edit report + block: Edit block + configure-scenarios: Configure scenarios available-columns: Available columns selected-columns: Selected columns +no-columns-found: No columns found type-to-search: Type here to search among columns selected: Selected select-all: Select all unselect-all: Unselect all value: Value +name: Name diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/create.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/create.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/create.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/create.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/datasources.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/datasources.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/datasources.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/datasources.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/display-element.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/display-element.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/display-element.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/display-element.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/edit.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/edit.yaml similarity index 75% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/edit.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/edit.yaml index bfaca48e8..f6d126385 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/edit.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/edit.yaml @@ -1,6 +1,6 @@ description: Description handle-with-star: 'Handle*' -invalid-handle-characters: Should be at least 2 characters long and start with a letter. Can contains only letters, numbers, dash, underscore and dot +invalid-handle-characters: Should be at least 2 characters long and start with a letter. Can contain only letters, numbers, dashes, underscores and dots name: Name name-with-star: 'Name*' new-report: New Report @@ -12,3 +12,5 @@ report: edit: Edit Report placeholder-handle: handle (a - z, 0 - 9, underscore, dash) title: Edit report +tooltip: + view-report: View report diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/general.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/general.yaml new file mode 100644 index 000000000..5bd8d241c --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/general.yaml @@ -0,0 +1,17 @@ +label: + add: Add + and: And + ascending: Ascending + back: Back + clear: Clear + delete: Delete + descending: Descending + name: Name + none: None + now: Now + ok: Ok + or: Or + openLinkInNewTab: Open link in a new tab + save: Save + today: Today + urlPlaceholder: https://example.tld \ No newline at end of file diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/list.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/list.yaml similarity index 82% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/list.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/list.yaml index a2a0586cf..42e843306 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/list.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/list.yaml @@ -6,4 +6,6 @@ report: new: New Report searchPlaceholder: Type here to search reports title: Reports +tooltip: + permissions: Report permissions untitledTitle: Untitled report diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/navigation.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/navigation.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/navigation.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/navigation.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/notification.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/notification.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/notification.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/notification.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/permissions.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/permissions.yaml similarity index 51% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/permissions.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/permissions.yaml index c176353b2..35bd19994 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/permissions.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/permissions.yaml @@ -1,7 +1,31 @@ ui: - reset-back: Reset back to "{{current}}" - save-changes: Save changes + save: Save changes + cancel: Cancel set-for: Set permissions for {{target}} + loading: Loading permissions + + edit: + label: User roles + description: Select role to set permissions + + evaluate: + description: Evaluate applied permissions + + add: + label: Add + title: Evaluate permissions + save: Save & Close + role: + label: Roles + placeholder: Select role(s) + user: + label: Users + placeholder: Search or select a user + + tooltip: + unknown-context: + user: Can not evaluate permission for a user with contextual role on a non-specific resource + role: Can not evaluate permission for contextual role on a non-specific resource access: allow: Allow @@ -13,6 +37,7 @@ resources: report: all: all reports specific: report "{{target}}" + tooltip: Report permissions operations: delete: description: "" diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/scenarios.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/scenarios.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/scenarios.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/scenarios.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/sidebar.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/sidebar.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/sidebar.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/sidebar.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/view.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/view.yaml similarity index 67% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/view.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/view.yaml index 9819c22d5..a1171838c 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/view.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-reporter/view.yaml @@ -2,3 +2,6 @@ pick-scenario: Pick a scenario report: builder: Report Builder view: Report View +tooltip: + edit: + report: Edit report diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/configurator.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/configurator.yaml similarity index 54% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/configurator.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/configurator.yaml index bf0a7063d..591965efa 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/configurator.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/configurator.yaml @@ -1,8 +1,14 @@ configuration: Configuration edge: Edge target: Target +tooltip: + run-workflow: Run workflow + configure-step: Configure step workflow: 'run-as': Run as 'not-setup-properly': When not explicitly set, workflow will be executed by user that invoked it - invalid-handle-characters: Should be at least 2 characters long and start with a letter. Can contains only letters, numbers, dash, underscore and dot + invalid-handle-characters: Should be at least 2 characters long and start with a letter. Can contain only letters, numbers, dashes, underscores and dots placeholder-handle: handle (a - z, 0 - 9, underscore, dash) + sub-workflow: + label: Subworkflow + description: Subworkflows can't have enabled triggers diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/editor.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/editor.yaml similarity index 98% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/editor.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/editor.yaml index f73594817..31942c7a6 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/editor.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/editor.yaml @@ -27,5 +27,6 @@ save: Save spinning: Spinning 'test-in-progress': "Testing in progress. If your workflow includes Prompt or Delay steps, it may be waiting for them to complete" 'unsupported-browser': Browser is not supported! +undelete: Undelete 'workflow-configuration': Workflow Configuration 'editor': Editor diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/general.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/general.yaml new file mode 100644 index 000000000..28535df4d --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/general.yaml @@ -0,0 +1,48 @@ +clear: Clear +description: Description +enabled: Enabled +error: Error +error-expression: Error message (expression) +export: Export +general: General +handle: Handle * +import: + json: Import JSON + label: Import + reassign-run-as: "NOTE: the Run as workflow property won't be imported and should be reassigned" + upload-files: Browse or drop files to upload... +label: Label +name: Name +new-workflow: New Workflow +none: None +now: Now + +offset: Offset +offset-expression: Offset (expression) +permissions: Permissions +search-workflows: Type here to search all workflows... +subworkflow: Subworkflow +subworkflows: Subworkflows +deleted: Deleted +disabled: Disabled +without: Without +only: Only +including: Including +unnamed-workflow: Unnamed Workflow +workflow-list: List of Workflows +save: Save +today: Today +cancel: Cancel +resource-list: + no-items: No matches for your search + not-found: Not found + loading: Loading + pagination: + next: Next + prev: Prev + showing: '{{count}} of {{total}} items' + single: One item + single_plural: '{{count}} items' + +tooltip: + permissions: Workflow permissions diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/help.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/help.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/help.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/help.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/navigation.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/navigation.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/navigation.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/navigation.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/notification.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/notification.yaml similarity index 87% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/notification.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/notification.yaml index 21aaeec10..b7155f136 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/notification.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/notification.yaml @@ -17,6 +17,10 @@ general: error: Error success: Success warning: Warning + info: Info +list: + load: + error: Failed to fetch workflows import: 'failed-import': Failed to import 'imported-workflows': Workflows imported @@ -32,4 +36,7 @@ import: 'trace-unavailable': Trace not available 'trigger-paths-changed': Trigger paths changed 'updated-workflow': Workflow updated -'workflow-test-completed': Workflow test completed \ No newline at end of file +'workflow-test-completed': Workflow test completed +undelete: + success: Workflow restored + failed: Failed to restore workflow \ No newline at end of file diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/permissions.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/permissions.yaml similarity index 64% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/permissions.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/permissions.yaml index d9003bed3..fd0412a12 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/permissions.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/permissions.yaml @@ -1,7 +1,31 @@ ui: - reset-back: Reset back to "{{current}}" - save-changes: Save changes + save: Save changes + cancel: Cancel set-for: Set permissions for {{target}} + loading: Loading permissions + + edit: + label: User roles + description: Select role to set permissions + + evaluate: + description: Evaluate applied permissions + + add: + label: Add + title: Evaluate permissions + save: Save & Close + role: + label: Roles + placeholder: Select role(s) + user: + label: Users + placeholder: Search or select a user + + tooltip: + unknown-context: + user: Can not evaluate permission for a user with contextual role on a non-specific resource + role: Can not evaluate permission for contextual role on a non-specific resource access: allow: Allow @@ -13,6 +37,7 @@ resources: workflow: all: all workflows specific: workflow "{{target}}" + tooltip: Workflow permissions operations: delete: description: 'Default: deny' diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/steps.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/steps.yaml similarity index 61% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/steps.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/steps.yaml index 20517fb18..a605ec543 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/steps.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-workflow/steps.yaml @@ -1,27 +1,34 @@ break: label: Break + short: Break tooltip: Stop iterator execution and continue with workflow continue: label: Continue + short: Continue tooltip: Stop current iteration and continue with the next one debug: label: Debug + short: Debug tooltip: Logs current workflow scope into server logs. If workflow debug is enabled delay: label: Delay + short: Delay tooltip: Delays workflow execution error: - label: Error + label: Error + short: Error tooltip: Throws error and stops workflow execution, also prevents saving of records triggered with before trigger -'error-handler': +error-handler: label: Error Handler + short: Error Handler tooltip: Continue workflow from this step if an error is triggered expressions: configurator: - 'add-expression': + Add Expression + add-expression: + Add Expression expression: Expression - 'expression-placeholder': Expression... + expression-placeholder: Expression... label: Expressions + short: Expressions tooltip: Define and mutate scope variables function: configurator: @@ -29,54 +36,73 @@ function: constant: Constant expression: Expression name: Name - 'option-select': Select an option + option-select: Select an option result: Result results: Results - 'select-function': Select function + add-result: + Add result + select-function: Select function type: Type - 'type*': 'Type*' + type*: Type* label: Function + short: Function tooltip: Execute the chosen predefined function +exec-workflow: + label: Execute Workflow + short: Workflow + tooltip: Execute a workflow and map variables from its scope to the current one gatewayExclusive: label: Gateway (Exclusive) + short: Gateway tooltip: Workflow execution can continue on first path that fits condition gatewayInclusive: label: Gateway (Inclusive) + short: Gateway tooltip: Workflow execution can continue on all paths that fit condition gatewayParallel: label: Gateway (Fork/Join) + short: Gateway tooltip: Splits workflow execution into two parallel paths or merges multiple paths into one gateway: configurator: condition: Condition - 'two-paths': Gateway must be source of at least two paths + two-paths: Gateway must be source of at least two paths iterator: label: Iterator + short: Iterator tooltip: Iterate over items prompt: label: Prompt + short: Prompt tooltip: Prompts user and waits for input swimlane: label: Swimlane + short: Swimlane tooltip: Visually group steps termination: label: Termination (End) + short: Termination tooltip: Terminate workflow execution trigger: configurator: add: + Add - 'add-constraints': + Add Constraints + add-constraints: + Add Constraints constraints: Constraints - 'event*': 'Event*' - 'failed-fetch-event-types': Failed to fetch event types - 'initial-scope': Initial Scope + event*: Event* + failed-fetch-event-types: Failed to fetch event types + initial-scope: Initial Scope + equal: Equal + not-equal: Not equal like: Like - 'not-like': Not like + not-like: Not like operator: Operator resource: Resource - 'resource*': 'Resource*' - 'select-constraint-type': Select constraint type - 'select-event-type': Select event type - 'select-resource-type': Select resource type + resource*: Resource* + select-constraint-type: Select constraint type + select-operator: Select operator + select-event-type: Select event type + select-resource-type: Select resource type label: Trigger (Start) + short: Trigger tooltip: Trigger the workflow execution based on configuration +tooltip: + configure-step: Configure step diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/config.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/config.yaml new file mode 100644 index 000000000..60db95ba1 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/config.yaml @@ -0,0 +1 @@ +name: French diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/authorized-clients.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/authorized-clients.yaml new file mode 100644 index 000000000..d67e03bde --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/authorized-clients.yaml @@ -0,0 +1,10 @@ +--- +template: + title: Clients autorisés + list: + authorized-on: Autorisés sur + buttons: + revoke: Retirer l'accès + empty: Aucun client autorisé trouvé +alerts: + removed: Suppression de l'autorisation client diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/change-password.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/change-password.yaml new file mode 100644 index 000000000..063ea76db --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/change-password.yaml @@ -0,0 +1,17 @@ +--- +template: + title: Modifiez votre mot de passe + form: + email: + label: E-mail + placeholder: email@domain.ltd + old-password: + label: Ancien mot de passe + placeholder: Entrez votre ancien mot de passe + new-password: + label: Nouveau mot de passe + placeholder: Entrez votre nouveau mot de passe + button: + change-password: Modifiez votre mot de passe +alerts: + password-change-success: Mot de passe modifié avec succès. diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/create-password.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/create-password.yaml new file mode 100644 index 000000000..59bebe034 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/create-password.yaml @@ -0,0 +1,15 @@ +--- +template: + title: Créez votre mot de passe + form: + email: + label: E-mail + password: + label: Mot de passe + placeholder: Entrez votre mot de passe + button: + create-password: Créez votre mot de passe +alerts: + invalid-expired-password-token: Le token de création de mot de passe est invalide ou a expiré, veuillez renouveler la demande de création de mot de passe. + password-create-success: Mot de passe créé avec succès. + password-create-disabled: Création du mot de passe est désactivée. diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/error-internal.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/error-internal.yaml new file mode 100644 index 000000000..4f95bda9f --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/error-internal.yaml @@ -0,0 +1,3 @@ +--- +template: + title: Erreur interne diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/inc_footer.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/inc_footer.yaml new file mode 100644 index 000000000..f04021655 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/inc_footer.yaml @@ -0,0 +1,3 @@ +--- +version: version {{version}} +code-link: Accéder au code source sur diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/inc_header.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/inc_header.yaml new file mode 100644 index 000000000..826608ff6 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/inc_header.yaml @@ -0,0 +1,3 @@ +--- +logged-in-as: Vous êtes connecté en tant que +logout: se déconnecter diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/inc_nav.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/inc_nav.yaml new file mode 100644 index 000000000..d970b5428 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/inc_nav.yaml @@ -0,0 +1,8 @@ +--- +template: + authorize-client: Finaliser l'autorisation de + class: + your-profile: Votre profil + security: Sécurité + login-session: Sessions de connexion + authorized-clients: Clients autorisés diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/login.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/login.yaml new file mode 100644 index 000000000..e85898572 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/login.yaml @@ -0,0 +1,22 @@ +--- +template: + title: Se connecter + form: + email: + label: E-mail + placeholder: email@domain.ltd + password: + label: Mot de passe + placeholder: mot de passe + button: + login-and-remember: Se connecter et se souvenir de moi + login: Se connecter + continue: Continuer + links: + request-password-reset: Mot de passe oublié? + signup: Créer un nouveau compte + external: + login-with: Se connecter avec {{idp}} +alerts: + logged-in: Vous êtes maintenant connecté. + local-disabled: Comptes locaux désactivés diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/logout.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/logout.yaml new file mode 100644 index 000000000..781132639 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/logout.yaml @@ -0,0 +1,4 @@ +--- +template: + log-out: Déconnecté avec succès. + log-in: Cliquer ici pour se connecter. diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/mfa-totp-disable.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/mfa-totp-disable.yaml new file mode 100644 index 000000000..b566d55cc --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/mfa-totp-disable.yaml @@ -0,0 +1,6 @@ +--- +template: + title: Désactiver l'authentification à 2 facteurs avec TOTP + instructions: Désactiver en entrant le code existant. + button: + remove: Supprimer diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/mfa-totp.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/mfa-totp.yaml new file mode 100644 index 000000000..0967d2a18 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/mfa-totp.yaml @@ -0,0 +1,28 @@ +--- +template: + title: Configurez votre authentification à 2 facteurs avec TOTP + enforced: | + L'authentification multi-facteurs TOTP est assurée par l'administrateur de Corteza. + Veuillez la configurer de suite. + instructions: | + Corteza utilise les mots de passe à usage unique dans le temps (TOTP) comme une des technologies sous-jacentes de l'authentification à 2 facteurs. Utilisez l'une des applications énumérées ci-dessous et tapez le secret ou scannez le code QR. +
+
+ Cela permettra de renforcer la sécurité de votre compte. +
+
+ Vous pouvez utiliser l'une des applications suivantes: + lastpass: Authentifiant LastPass + gauth: Authentifiant Google pour AndroidouiPhone + authy: Authy + form: + title: "Terminez la configuration en saisissant le code de l'application d'authentification:" + button: Envoyez +alerts: + text-MFA-enabled: Authentification à 2 facteurs avec TOTP activée + text-MFA-disabled: Authentification à 2 facteurs avec TOTP désactivée + +errors: + invalid-code-format: "Invalid code format" + invalid-code: "Invalid code" + diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/mfa.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/mfa.yaml new file mode 100644 index 000000000..dfb521ec8 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/mfa.yaml @@ -0,0 +1,19 @@ +--- +template: + title: Authentification multi-facteurs + email: + instructions: Vérifiez votre boîte mail et entrez le code reçu + code: Code + verify: Vérifiez + resend: Renvoyez + confirmed: Email OTP confirmé + totp: + instructions: Vérifiez votre application TOTP et entrez le code que vous avez reçu + code: Code + confirmed: TOTP confirmé + verify: Vérifiez +alerts: + email: + resent: Email OTP renvoyé + topt: + valid: TOTP valide diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/oauth2-authorize-client.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/oauth2-authorize-client.yaml new file mode 100644 index 000000000..062017fdd --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/oauth2-authorize-client.yaml @@ -0,0 +1,15 @@ +--- +template: + title: Autoriser + form: + greeting-paragraph: Bonjour + question-for-client: aimerait effectuer des actions sur ce serveur Corteza en votre nom. + buttons: + allow: Permettre + deny: Refuser + links: + mistake: Si c'est une erreur, veuillez Se déconnecter. + errors: + invalid-user: Impossible de continuer avec l'email non autorisé, veuillez vous rendre sur Votre profilet résoudre le problème. +alerts: + denied: impossible d'autoriser {{client}}, aucune permission. diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/password-reset-requested.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/password-reset-requested.yaml new file mode 100644 index 000000000..e3516382f --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/password-reset-requested.yaml @@ -0,0 +1,9 @@ +--- +template: + title: Réinitialisation du mot de passe demandée + instructions: Si l'email saisi est trouvé dans notre base de données, vous allez recevoir un lien de réinitialisation de mot de passe dans votre boite mail d'ici quelques instants. + links: Créer un nouveau compteouSe connecter. +alert: + invalid-expired-password-token: Mot de passe invalide ou token de mot de passe expiré, veuillez renouveler votre demande de réinitialisation de mot de passe. + password-reset-success: Mot de passe réinitialisé avec succès. + password-reset-disabled: Réinitialisation du mot de passe désactivée. diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/pending-email-confirmation.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/pending-email-confirmation.yaml new file mode 100644 index 000000000..6805051d5 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/pending-email-confirmation.yaml @@ -0,0 +1,5 @@ +--- +template: + title: Confirmez votre email + instructions: Vous devriez recevoir un email avec un lien de confirmation dans votre votre boite mail d'ici quelques instants. + links: Créer un nouveau compteouSe connecter. diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/profile.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/profile.yaml new file mode 100644 index 000000000..4a58a7758 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/profile.yaml @@ -0,0 +1,21 @@ +--- +template: + title: Votre profil + form: + email: + label: Email + placeholder: email@domain.ltd + resend-confirmation-link: L'email n'est pas vérifié, renvoyer le lien de confirmation. + name: + label: Nom complet + placeholder: Votre nom complet + handle: + label: Identifiant + placeholder: Surnom ou identifiant + preferred-language: + label: Langue préférée + buttons: + submit: Mise à jour du profil +alerts: + profile-updated: Profil mis à jour avec succès. + profile-update-fail: Impossible de mettre à jour le profil en raison d'erreurs de saisie diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/request-password-reset.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/request-password-reset.yaml new file mode 100644 index 000000000..68a5dba71 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/request-password-reset.yaml @@ -0,0 +1,10 @@ +--- +template: + title: Demander le lien de réinitialisation de mot de passe + form: + email: + label: E-mail + placeholder: email@domain.ltd + buttons: + request: Demander le lien de réinitialisation de mot de passe par email + links: Créer un nouveau compteouse connecter. diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/reset-password.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/reset-password.yaml new file mode 100644 index 000000000..7cc5515e6 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/reset-password.yaml @@ -0,0 +1,12 @@ +--- +template: + title: Réinitialisez votre mot de passe + form: + email: + label: E-mail + placeholder: email@domain.ltd + new-password: + label: Nouveau mot de passe + placeholder: Entrez votre nouveau mot de passe + buttons: + change-password: Changez votre mot de passe diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/security.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/security.yaml new file mode 100644 index 000000000..3c8ac3cf7 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/security.yaml @@ -0,0 +1,23 @@ +--- +template: + title: Sécurité + password: + title: Mot de passe + change-link: Changez votre mot de passe + mfa: + title: Authentification multi-facteurs + totp: + title: Sécurité supplémentaire avec application mobile (mot de passe à usage unique basé sur le temps) + enforced: Configuré et requis à la connexion. + disabled: Actuellement désactivé. + configure: Configurez + disable: Désactivez + email: + title: Sécurité supplémentaire grâce à un mot de passe à usage unique par email + enforced: Désactivé et requis à la connexion. + disabled: Actuellement désactivé. + enable: Configurez + disable: Désactivez + all-disabled: Toutes les méthodes MFA sont actuellement désactivées. Demandez à votre administrateur de les activer. +alerts: + topt-disabled: Authentification à 2 facteurs avec TOTP désactivée diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/sessions.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/sessions.yaml new file mode 100644 index 000000000..191aa4f90 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/sessions.yaml @@ -0,0 +1,19 @@ +--- +template: + title: Votre session + list: + current: Session actuelle + authorized-on: Autorisé sur + same-machine: Cet appareil + ip-address: Adresse IP + same-browser: Ce navigateur + browser: Navigateur + expires: Expires + expired: Expiré + today: Aujourd'hui + tomorrow: En 1 jour + soon: En {{days}} jours + delete-all: Supprimer toutes les sessions +alerts: + session-deleted: Session supprimée + delete-sessions-but-current: Toutes les sessions sauf celles en cours sont supprimées diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/signup.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/signup.yaml new file mode 100644 index 000000000..5950c7374 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/signup.yaml @@ -0,0 +1,24 @@ +--- +template: + title: S'enregistrer + form: + email: + label: E-mail + placeholder: email@domain.ltd + password: + label: Mot de passe + placeholder: Mot de passe + name: + label: Nom complet + placeholder: Votre nom complet + nickname: + label: Surnom ou identifiant + placeholder: Surnom ou identifiant + button: + sign-up: Envoyez + log-in: Avez-vous déjà un compte? Se connecter +alerts: + signup-successful: Connecté avec succès. + email-confirmed-logged-in: Adresse email confirmée, vous êtes maintenant connecté. + invalid-expired-token: Token de confirmation d'email invalide ou expiré, veuillez renvoyer la demande de confirmation. + signup-disabled: Enregistrement désactivé diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/automation/access_control.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/automation/access-control.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/automation/access_control.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/automation/access-control.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/automation/session.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/automation/session.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/automation/session.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/automation/session.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/automation/trigger.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/automation/trigger.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/automation/trigger.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/automation/trigger.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/automation/workflow.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/automation/workflow.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/automation/workflow.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/automation/workflow.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/access_control.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/access-control.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/access_control.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/access-control.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/attachment.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/attachment.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/attachment.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/attachment.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/chart.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/chart.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/chart.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/chart.yaml diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/field.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/field.yaml new file mode 100644 index 000000000..487023d0a --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/field.yaml @@ -0,0 +1,14 @@ +system: + ID: Record ID + moduleID: Module ID + namespaceID: Namespace ID + revision: Record revision + meta: Meta data + recordID: Record ID + createdAt: Created at + createdBy: Created by + deletedAt: Deleted at + deletedBy: Deleted by + ownedBy: Owned by + updatedAt: Updated at + updatedBy: Updated by diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/module.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/module.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/module.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/module.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/namespace.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/namespace.yaml similarity index 99% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/namespace.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/namespace.yaml index 591987756..2cb5e62c2 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/namespace.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/namespace.yaml @@ -14,4 +14,4 @@ errors: unsupportedExportFormat: unsupported export format unsupportedImportFormat: unsupported import format importMissingNamespace: the import source does not contain a namespace definition - cloneMultiple: not allowed to clone multiple namespaces at once \ No newline at end of file + cloneMultiple: not allowed to clone multiple namespaces at once diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/notifications.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/notifications.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/notifications.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/notifications.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/page.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/page.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/page.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/page.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/record.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/record.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/record.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/record.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/federation/access_control.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/federation/access-control.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/federation/access_control.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/federation/access-control.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/federation/exposed_module.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/federation/exposed-module.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/federation/exposed_module.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/federation/exposed-module.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/federation/module_mapping.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/federation/module-mapping.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/federation/module_mapping.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/federation/module-mapping.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/federation/node_sync.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/federation/node-sync.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/federation/node_sync.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/federation/node-sync.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/federation/node.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/federation/node.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/federation/node.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/federation/node.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/federation/shared_module.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/federation/shared-module.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/federation/shared_module.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/federation/shared-module.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/internal/auth.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/internal/auth.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/internal/auth.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/internal/auth.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/access_control.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/access-control.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/access_control.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/access-control.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/apigw_filter.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/apigw-filter.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/apigw_filter.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/apigw-filter.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/apigw_route.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/apigw-route.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/apigw_route.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/apigw-route.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/application.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/application.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/application.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/application.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/attachment.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/attachment.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/attachment.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/attachment.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/auth_client.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/auth-client.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/auth_client.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/auth-client.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/auth.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/auth.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/auth.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/auth.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/queue.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/queue.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/queue.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/queue.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/reminder.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/reminder.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/reminder.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/reminder.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/report.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/report.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/report.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/report.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/role.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/role.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/role.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/role.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/sink.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/sink.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/sink.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/sink.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/statistics.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/statistics.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/statistics.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/statistics.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/template.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/template.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/template.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/template.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/user.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/user.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/user.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/system/user.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/admin.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/admin.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/admin.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/admin.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/automation.permissions.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/automation.permissions.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/automation.permissions.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/automation.permissions.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/automation.scripts.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/automation.scripts.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/automation.scripts.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/automation.scripts.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/automation.sessions.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/automation.sessions.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/automation.sessions.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/automation.sessions.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/automation.workflows.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/automation.workflows.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/automation.workflows.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/automation.workflows.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/compose.automation.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/compose.automation.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/compose.automation.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/compose.automation.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/compose.permissions.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/compose.permissions.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/compose.permissions.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/compose.permissions.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/compose.settings.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/compose.settings.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/compose.settings.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/compose.settings.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/dashboard.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/dashboard.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/dashboard.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/dashboard.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/federation.nodes.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/federation.nodes.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/federation.nodes.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/federation.nodes.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/federation.permissions.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/federation.permissions.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/federation.permissions.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/federation.permissions.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/navigation.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/navigation.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/navigation.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/navigation.yaml diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/notification.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/notification.yaml new file mode 100644 index 000000000..48e9dc667 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/notification.yaml @@ -0,0 +1,229 @@ +general: + error: Error + success: Success + warning: Warning +notAllowed: Not allowed to access Admin Area. Redirecting +list: + load: + error: 'Failed to load resource list' +user: + fetch: + error: User fetch failed + roles: + error: Role fetch failed + update: + success: User updated + error: User update failed + create: + success: User created + error: User create failed + delete: + success: User deleted + error: User delete failed + undelete: + success: User restored + error: User restore failed + membershipUpdate: + success: Membership updated + error: Membership update failed + passwordChange: + success: Password changed + error: Password change failed + sessionsRevoke: + success: Sessions revoked + error: Session revoke failed + suspend: + success: User suspended + error: User suspension failed + unsuspend: + success: User unsuspended + error: User suspension failed + import: + success: Users imported successfully +role: + fetch: + error: Role fetch failed + create: + success: Role created + error: Role create failed + update: + success: Role updated + error: Role update failed + delete: + success: Role deleted + error: Role delete failed + undelete: + success: Role restored + error: Role restore failed + archive: + success: Role archived + error: Role archive failed + unarchive: + success: Role unarchived + error: Role unarchive failed + membershipUpdate: + success: Membership updated + error: Membership update failed +application: + fetch: + error: Application fetch failed + update: + success: Application updated + error: Application update failed + create: + success: Application created + error: Application create failed + delete: + success: Application deleted + error: Application delete failed + undelete: + success: Application restored + error: Application restore failed + assetsUpload: + error: Application assets upload failed +template: + fetch: + error: Template fetch failed + fetchPartials: + error: Partial templates fetch failed + create: + success: Template created + error: Template create failed + update: + success: Template updated + error: Template update failed + delete: + success: Template deleted + error: Template delete failed + undelete: + success: Template restored + error: Template restore failed + driver: + error: Template render drivers fetch failed + preview: + error: Template preview fetch failed +authclient: + fetch: + error: Auth Client fetch failed + create: + success: Auth Client created + error: Auth Client create failed + update: + success: Auth Client updated + error: Auth Client update failed + delete: + success: Auth Client deleted + error: Auth Client delete failed + undelete: + success: Auth Client restored + error: Auth Client restore failed +queue: + fetch: + error: Queue fetch failed + create: + success: Queue created + error: Queue create failed + update: + success: Queue updated + error: Queue update failed + delete: + success: Queue deleted + error: Queue delete failed +gateway: + fetch: + error: Route fetch failed + create: + success: Route created + error: Route create failed + update: + success: Route updated + error: Route update failed + filter: + fetch: + error: Filter fetch failed + update: + success: Filters updated + error: Filters update failed + delete: + success: Route deleted + error: Route delete failed + undelete: + success: Route restored + error: Route restore failed +workflow: + fetch: + error: Workflow fetch failed + create: + success: Workflow created + error: Workflow create failed + update: + success: Workflow updated + error: Workflow update failed + delete: + success: Workflow deleted + error: Workflow delete failed + undelete: + success: Workflow restored + error: Workflow restore failed +session: + fetch: + error: Session fetch failed + trigger: + error: Trigger fetch failed +federation: + fetch: + error: Node fetch failed + create: + success: Node created + error: Node create failed + update: + success: Node updated + error: Node update failed + delete: + success: Node deleted + error: Node delete failed + undelete: + success: Node restored + error: Node restore failed + url: + error: Generated URL fetch failed + email: + success: Email sent + error: Failed to send email + pair: + success: Node paired + error: Failed to pair node + handshake: + success: Handshake complete paired + error: Handshake failed +settings: + system: + fetch: + error: System settings fetch failed + auth: + success: Auth settings updated + error: Auth settings update failed + external: + success: External settings updated + error: External settings update failed + compose: + fetch: + error: Compose settings fetch failed + update: + success: Compose settings updated + error: Compose settings update failed + ui: + fetch: + error: UI settings fetch failed +permissions: + fetch: + error: Permissions fetch failed + update: + success: Permissions updated + error: Permissions update failed + clone: + success: Permissions cloned + error: Permissions clone failed + role: + error: Failed to add role + diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.actionlog.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.actionlog.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.actionlog.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.actionlog.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.apigw.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.apigw.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.apigw.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.apigw.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.applications.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.applications.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.applications.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.applications.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.authclients.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.authclients.yaml similarity index 97% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.authclients.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.authclients.yaml index a979cd032..3ab2f679e 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.authclients.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.authclients.yaml @@ -26,9 +26,9 @@ editor: remove: Remove secret: Secret security: - forbiddenRoles: + prohibitedRoles: description: Roles from this list will be removed from security context when user authorizes this client - label: Forbidden roles + label: Prohibited roles forcedRoles: description: Roles from this list will be always added to security context when user authorizes this client label: Forced roles diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.permissions.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.permissions.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.permissions.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.permissions.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.queues.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.queues.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.queues.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.queues.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.roles.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.roles.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.roles.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.roles.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.settings.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.settings.yaml similarity index 98% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.settings.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.settings.yaml index 2076eab37..2b984a836 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.settings.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.settings.yaml @@ -1,3 +1,4 @@ +--- editor: title: System settings auth: @@ -42,22 +43,17 @@ editor: expires: description: How long will password be valid before it expires. label: Valid for - external: title: External Authentication Providers enabled: Enable external authentication - table: header: provider: Provider info: Issuer, client ID - - standard: enabled: Enabled clientKey: Client key clientSecret: Secret - oidc: add: Add an OIDC provider enabled: Enabled @@ -69,7 +65,6 @@ editor: clientSecret: Secret scope: Scope scopePlaceholder: List out supported OAuth scope values, use space delimited string - saml: enabled: Enabled title: SAML @@ -105,12 +100,10 @@ editor: ident-handle: Name of the IdP field used for filling Corteza user handle or nickname ident-identifier: Name of the IdP field used for filling and matching Corteza user email ident-name: Name of the IdP field used for filling Corteza user full name - - security: - forbidden-roles: + prohibited-roles: description: Roles from this list will be removed from security context when authenticates with this provider - label: Forbidden roles + label: Prohibited roles forced-roles: description: Roles from this list will be always added to security context when authenticates with this provider label: Forced roles diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.templates.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.templates.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.templates.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.templates.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.users.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.users.yaml similarity index 86% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.users.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.users.yaml index 607d19f53..dddaa9c89 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.users.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.users.yaml @@ -89,3 +89,14 @@ list: permissions: Permissions title: Users yaml: YAML +export: + buttonLabel: Export + title: Export users + inclRoleMembership: Include role membership + inclRoles: Include roles + membershipRequiredLabel: Roles can only be exported when role membership is selected + export: Export +import: + buttonLabel: Import + title: Import users + uploadFilePlaceholder: Click or drop files here to import diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/ui.settings.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/ui.settings.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/ui.settings.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/ui.settings.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/ui.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/ui.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/ui.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/ui.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/block.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/block.yaml similarity index 98% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/block.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/block.yaml index 905e9e594..f84507490 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/block.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/block.yaml @@ -25,7 +25,7 @@ automation: removeAll: Remove all searchPlaceholder: Filter available scripts by label, script name and description secondaryButton: Secondary - stepID: 'stepID: {{stepID}}' + stepID: 'Starting step ID: {{stepID}}' successButton: Success warningButton: Warning calendar: @@ -154,7 +154,7 @@ record: deleteRecord: Delete record label: Record preview: - blockNoRecord: Can not render this block without a record + blockNoRecord: Cannot render this block without a record fieldsFromModule: Single record block, displaying fields ({{0}}) from module {{1}} untitled: Untitled recordDeleted: This record was deleted @@ -206,7 +206,10 @@ recordList: note: 'Note: If Field value is undefined, the filter will look for records where that field value is undefined.' only: Only operators: + like: Like + notLike: Not Like contains: Contains + notContains: Not contains equal: Equal greaterThan: Greater than lessThan: Less than diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/chart.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/chart.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/chart.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/chart.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/field.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/field.yaml similarity index 97% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/field.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/field.yaml index 700061aa9..6b0efe3ff 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/field.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/field.yaml @@ -139,6 +139,12 @@ selector: systemField: (system field) unselectAll: Unselect all system: + id: Record ID + moduleID: Module ID + namespaceID: Namespace ID + revision: Record revision + meta: Meta data + recordID: Record ID createdAt: Created at createdBy: Created by deletedAt: Deleted at diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/general.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/general.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/general.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/general.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/module.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/module.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/module.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/module.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/namespace.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/namespace.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/namespace.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/namespace.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/navigation.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/navigation.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/navigation.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/navigation.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/notification.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/notification.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/notification.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/notification.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/onboarding.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/onboarding.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/onboarding.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/onboarding.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/page.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/page.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/page.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/page.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/permission.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/permission.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/permission.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/permission.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/preview.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/preview.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/preview.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/preview.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/sidebar.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/sidebar.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/sidebar.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/sidebar.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-one/app.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-one/app.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-one/app.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-one/app.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-one/layout.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-one/layout.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-one/layout.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-one/layout.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-one/navigation.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-one/navigation.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-one/navigation.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-one/navigation.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-reporter/create.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-reporter/create.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-reporter/create.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-reporter/create.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-reporter/edit.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-reporter/edit.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-reporter/edit.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-reporter/edit.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-reporter/general.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-reporter/general.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-reporter/general.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-reporter/general.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-reporter/list.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-reporter/list.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-reporter/list.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-reporter/list.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-reporter/navigation.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-reporter/navigation.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-reporter/navigation.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-reporter/navigation.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-reporter/notification.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-reporter/notification.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-reporter/notification.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-reporter/notification.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-reporter/permission.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-reporter/permission.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-reporter/permission.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-reporter/permission.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-workflow/navigation.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-workflow/navigation.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-workflow/navigation.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-workflow/navigation.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-workflow/permission.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-workflow/permission.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-workflow/permission.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-workflow/permission.yaml diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/config.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/config.yaml new file mode 100644 index 000000000..8ba7c2080 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/config.yaml @@ -0,0 +1 @@ +name: Romanian diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/authorized-clients.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/authorized-clients.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/authorized-clients.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/authorized-clients.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/change-password.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/change-password.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/change-password.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/change-password.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/create-password.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/create-password.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/create-password.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/create-password.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/error-internal.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/error-internal.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/error-internal.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/error-internal.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/inc_footer.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/inc_footer.yaml similarity index 50% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/inc_footer.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/inc_footer.yaml index 252b6653c..c927d4ba9 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/inc_footer.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/inc_footer.yaml @@ -1,2 +1,3 @@ --- version: versiune {{version}} +code-link: Access source code on diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/inc_header.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/inc_header.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/inc_header.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/inc_header.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/inc_nav.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/inc_nav.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/inc_nav.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/inc_nav.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/login.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/login.yaml similarity index 93% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/login.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/login.yaml index 61c41e3da..deeaacfc1 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/login.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/login.yaml @@ -16,7 +16,7 @@ template: request-password-reset: Parolă uitată? signup: Înregistrare cont nou external: - login-with: Conectare cu {{idp}} + login-with: Login with {{idp}} alerts: logged-in: Conectare realizată cu succes. local-disabled: Conturile locale sunt dezactivate diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/logout.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/logout.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/logout.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/logout.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/mfa-totp-disable.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/mfa-totp-disable.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/mfa-totp-disable.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/mfa-totp-disable.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/mfa-totp.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/mfa-totp.yaml similarity index 82% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/mfa-totp.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/mfa-totp.yaml index 5587fc96d..a53d3581c 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/mfa-totp.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/mfa-totp.yaml @@ -19,5 +19,10 @@ template: title: "Complete the configuration by entering code from the authenticator application:" button: Submit alerts: - text-2FA-enabled: Two factor authentication with TOTP enabled - text-2FA-disabled: Two factor authentication with TOTP disabled + text-MFA-enabled: Two factor authentication with TOTP enabled + text-MFA-disabled: Two factor authentication with TOTP disabled + +errors: + invalid-code-format: "Invalid code format" + invalid-code: "Invalid code" + diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/mfa.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/mfa.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/mfa.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/mfa.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/oauth2-authorize-client.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/oauth2-authorize-client.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/oauth2-authorize-client.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/oauth2-authorize-client.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/password-reset-requested.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/password-reset-requested.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/password-reset-requested.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/password-reset-requested.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/pending-email-confirmation.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/pending-email-confirmation.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/pending-email-confirmation.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/pending-email-confirmation.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/profile.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/profile.yaml similarity index 99% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/profile.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/profile.yaml index 0ad43ab89..4e7628fa7 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/profile.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/profile.yaml @@ -1,3 +1,4 @@ +--- template: title: Your profile form: diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/request-password-reset.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/request-password-reset.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/request-password-reset.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/request-password-reset.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/reset-password.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/reset-password.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/reset-password.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/reset-password.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/security.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/security.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/security.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/security.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/sessions.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/sessions.yaml similarity index 68% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/sessions.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/sessions.yaml index d456477cf..5fd114642 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/sessions.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/sessions.yaml @@ -13,5 +13,7 @@ template: today: Today tomorrow: In 1 day soon: In {{days}} days - delete: Delete this session - delete-all: Delete all sessions + delete-all: Logout from everywhere +alerts: + session-deleted: Session deleted + delete-sessions-but-current: All but current login sessions deleted diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/signup.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/signup.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/signup.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/signup.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/automation/access_control.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/automation/access-control.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/automation/access_control.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/automation/access-control.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/automation/session.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/automation/session.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/automation/session.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/automation/session.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/automation/trigger.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/automation/trigger.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/automation/trigger.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/automation/trigger.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/automation/workflow.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/automation/workflow.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/automation/workflow.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/automation/workflow.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/access_control.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/access-control.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/access_control.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/access-control.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/attachment.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/attachment.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/attachment.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/attachment.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/chart.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/chart.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/chart.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/chart.yaml diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/field.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/field.yaml new file mode 100644 index 000000000..487023d0a --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/field.yaml @@ -0,0 +1,14 @@ +system: + ID: Record ID + moduleID: Module ID + namespaceID: Namespace ID + revision: Record revision + meta: Meta data + recordID: Record ID + createdAt: Created at + createdBy: Created by + deletedAt: Deleted at + deletedBy: Deleted by + ownedBy: Owned by + updatedAt: Updated at + updatedBy: Updated by diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/module.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/module.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/module.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/module.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/namespace.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/namespace.yaml similarity index 99% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/namespace.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/namespace.yaml index 591987756..2cb5e62c2 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/namespace.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/namespace.yaml @@ -14,4 +14,4 @@ errors: unsupportedExportFormat: unsupported export format unsupportedImportFormat: unsupported import format importMissingNamespace: the import source does not contain a namespace definition - cloneMultiple: not allowed to clone multiple namespaces at once \ No newline at end of file + cloneMultiple: not allowed to clone multiple namespaces at once diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/notifications.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/notifications.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/notifications.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/notifications.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/page.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/page.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/page.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/page.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/record.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/record.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/record.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/compose/record.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/federation/access_control.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/federation/access-control.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/federation/access_control.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/federation/access-control.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/federation/exposed_module.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/federation/exposed-module.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/federation/exposed_module.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/federation/exposed-module.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/federation/module_mapping.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/federation/module-mapping.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/federation/module_mapping.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/federation/module-mapping.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/federation/node_sync.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/federation/node-sync.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/federation/node_sync.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/federation/node-sync.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/federation/node.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/federation/node.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/federation/node.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/federation/node.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/federation/shared_module.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/federation/shared-module.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/federation/shared_module.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/federation/shared-module.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/internal/auth.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/internal/auth.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/internal/auth.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/internal/auth.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/access_control.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/access-control.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/access_control.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/access-control.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/apigw_filter.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/apigw-filter.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/apigw_filter.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/apigw-filter.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/apigw_route.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/apigw-route.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/apigw_route.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/apigw-route.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/application.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/application.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/application.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/application.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/attachment.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/attachment.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/attachment.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/attachment.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/auth_client.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/auth-client.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/auth_client.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/auth-client.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/auth.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/auth.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/auth.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/auth.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/queue.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/queue.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/queue.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/queue.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/reminder.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/reminder.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/reminder.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/reminder.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/report.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/report.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/report.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/report.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/role.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/role.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/role.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/role.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/sink.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/sink.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/sink.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/sink.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/statistics.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/statistics.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/statistics.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/statistics.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/template.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/template.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/template.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/template.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/user.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/user.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/user.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/system/user.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/admin.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/admin.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/admin.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/admin.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/automation.permissions.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/automation.permissions.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/automation.permissions.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/automation.permissions.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/automation.scripts.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/automation.scripts.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/automation.scripts.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/automation.scripts.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/automation.sessions.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/automation.sessions.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/automation.sessions.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/automation.sessions.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/automation.workflows.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/automation.workflows.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/automation.workflows.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/automation.workflows.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/compose.automation.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/compose.automation.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/compose.automation.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/compose.automation.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/compose.permissions.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/compose.permissions.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/compose.permissions.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/compose.permissions.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/compose.settings.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/compose.settings.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/compose.settings.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/compose.settings.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/dashboard.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/dashboard.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/dashboard.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/dashboard.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/federation.nodes.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/federation.nodes.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/federation.nodes.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/federation.nodes.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/federation.permissions.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/federation.permissions.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/federation.permissions.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/federation.permissions.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/navigation.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/navigation.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/navigation.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/navigation.yaml diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/notification.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/notification.yaml new file mode 100644 index 000000000..48e9dc667 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/notification.yaml @@ -0,0 +1,229 @@ +general: + error: Error + success: Success + warning: Warning +notAllowed: Not allowed to access Admin Area. Redirecting +list: + load: + error: 'Failed to load resource list' +user: + fetch: + error: User fetch failed + roles: + error: Role fetch failed + update: + success: User updated + error: User update failed + create: + success: User created + error: User create failed + delete: + success: User deleted + error: User delete failed + undelete: + success: User restored + error: User restore failed + membershipUpdate: + success: Membership updated + error: Membership update failed + passwordChange: + success: Password changed + error: Password change failed + sessionsRevoke: + success: Sessions revoked + error: Session revoke failed + suspend: + success: User suspended + error: User suspension failed + unsuspend: + success: User unsuspended + error: User suspension failed + import: + success: Users imported successfully +role: + fetch: + error: Role fetch failed + create: + success: Role created + error: Role create failed + update: + success: Role updated + error: Role update failed + delete: + success: Role deleted + error: Role delete failed + undelete: + success: Role restored + error: Role restore failed + archive: + success: Role archived + error: Role archive failed + unarchive: + success: Role unarchived + error: Role unarchive failed + membershipUpdate: + success: Membership updated + error: Membership update failed +application: + fetch: + error: Application fetch failed + update: + success: Application updated + error: Application update failed + create: + success: Application created + error: Application create failed + delete: + success: Application deleted + error: Application delete failed + undelete: + success: Application restored + error: Application restore failed + assetsUpload: + error: Application assets upload failed +template: + fetch: + error: Template fetch failed + fetchPartials: + error: Partial templates fetch failed + create: + success: Template created + error: Template create failed + update: + success: Template updated + error: Template update failed + delete: + success: Template deleted + error: Template delete failed + undelete: + success: Template restored + error: Template restore failed + driver: + error: Template render drivers fetch failed + preview: + error: Template preview fetch failed +authclient: + fetch: + error: Auth Client fetch failed + create: + success: Auth Client created + error: Auth Client create failed + update: + success: Auth Client updated + error: Auth Client update failed + delete: + success: Auth Client deleted + error: Auth Client delete failed + undelete: + success: Auth Client restored + error: Auth Client restore failed +queue: + fetch: + error: Queue fetch failed + create: + success: Queue created + error: Queue create failed + update: + success: Queue updated + error: Queue update failed + delete: + success: Queue deleted + error: Queue delete failed +gateway: + fetch: + error: Route fetch failed + create: + success: Route created + error: Route create failed + update: + success: Route updated + error: Route update failed + filter: + fetch: + error: Filter fetch failed + update: + success: Filters updated + error: Filters update failed + delete: + success: Route deleted + error: Route delete failed + undelete: + success: Route restored + error: Route restore failed +workflow: + fetch: + error: Workflow fetch failed + create: + success: Workflow created + error: Workflow create failed + update: + success: Workflow updated + error: Workflow update failed + delete: + success: Workflow deleted + error: Workflow delete failed + undelete: + success: Workflow restored + error: Workflow restore failed +session: + fetch: + error: Session fetch failed + trigger: + error: Trigger fetch failed +federation: + fetch: + error: Node fetch failed + create: + success: Node created + error: Node create failed + update: + success: Node updated + error: Node update failed + delete: + success: Node deleted + error: Node delete failed + undelete: + success: Node restored + error: Node restore failed + url: + error: Generated URL fetch failed + email: + success: Email sent + error: Failed to send email + pair: + success: Node paired + error: Failed to pair node + handshake: + success: Handshake complete paired + error: Handshake failed +settings: + system: + fetch: + error: System settings fetch failed + auth: + success: Auth settings updated + error: Auth settings update failed + external: + success: External settings updated + error: External settings update failed + compose: + fetch: + error: Compose settings fetch failed + update: + success: Compose settings updated + error: Compose settings update failed + ui: + fetch: + error: UI settings fetch failed +permissions: + fetch: + error: Permissions fetch failed + update: + success: Permissions updated + error: Permissions update failed + clone: + success: Permissions cloned + error: Permissions clone failed + role: + error: Failed to add role + diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.actionlog.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.actionlog.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.actionlog.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.actionlog.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.apigw.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.apigw.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.apigw.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.apigw.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.applications.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.applications.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.applications.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.applications.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.authclients.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.authclients.yaml similarity index 97% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.authclients.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.authclients.yaml index a979cd032..3ab2f679e 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.authclients.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.authclients.yaml @@ -26,9 +26,9 @@ editor: remove: Remove secret: Secret security: - forbiddenRoles: + prohibitedRoles: description: Roles from this list will be removed from security context when user authorizes this client - label: Forbidden roles + label: Prohibited roles forcedRoles: description: Roles from this list will be always added to security context when user authorizes this client label: Forced roles diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.permissions.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.permissions.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.permissions.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.permissions.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.queues.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.queues.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.queues.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.queues.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.roles.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.roles.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.roles.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.roles.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.settings.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.settings.yaml similarity index 98% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.settings.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.settings.yaml index 2076eab37..2b984a836 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.settings.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.settings.yaml @@ -1,3 +1,4 @@ +--- editor: title: System settings auth: @@ -42,22 +43,17 @@ editor: expires: description: How long will password be valid before it expires. label: Valid for - external: title: External Authentication Providers enabled: Enable external authentication - table: header: provider: Provider info: Issuer, client ID - - standard: enabled: Enabled clientKey: Client key clientSecret: Secret - oidc: add: Add an OIDC provider enabled: Enabled @@ -69,7 +65,6 @@ editor: clientSecret: Secret scope: Scope scopePlaceholder: List out supported OAuth scope values, use space delimited string - saml: enabled: Enabled title: SAML @@ -105,12 +100,10 @@ editor: ident-handle: Name of the IdP field used for filling Corteza user handle or nickname ident-identifier: Name of the IdP field used for filling and matching Corteza user email ident-name: Name of the IdP field used for filling Corteza user full name - - security: - forbidden-roles: + prohibited-roles: description: Roles from this list will be removed from security context when authenticates with this provider - label: Forbidden roles + label: Prohibited roles forced-roles: description: Roles from this list will be always added to security context when authenticates with this provider label: Forced roles diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.templates.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.templates.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.templates.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.templates.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.users.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.users.yaml similarity index 86% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.users.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.users.yaml index 607d19f53..dddaa9c89 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.users.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.users.yaml @@ -89,3 +89,14 @@ list: permissions: Permissions title: Users yaml: YAML +export: + buttonLabel: Export + title: Export users + inclRoleMembership: Include role membership + inclRoles: Include roles + membershipRequiredLabel: Roles can only be exported when role membership is selected + export: Export +import: + buttonLabel: Import + title: Import users + uploadFilePlaceholder: Click or drop files here to import diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/ui.settings.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/ui.settings.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/ui.settings.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/ui.settings.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/ui.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/ui.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/ui.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/ui.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/block.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/block.yaml similarity index 98% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/block.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/block.yaml index 905e9e594..f84507490 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/block.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/block.yaml @@ -25,7 +25,7 @@ automation: removeAll: Remove all searchPlaceholder: Filter available scripts by label, script name and description secondaryButton: Secondary - stepID: 'stepID: {{stepID}}' + stepID: 'Starting step ID: {{stepID}}' successButton: Success warningButton: Warning calendar: @@ -154,7 +154,7 @@ record: deleteRecord: Delete record label: Record preview: - blockNoRecord: Can not render this block without a record + blockNoRecord: Cannot render this block without a record fieldsFromModule: Single record block, displaying fields ({{0}}) from module {{1}} untitled: Untitled recordDeleted: This record was deleted @@ -206,7 +206,10 @@ recordList: note: 'Note: If Field value is undefined, the filter will look for records where that field value is undefined.' only: Only operators: + like: Like + notLike: Not Like contains: Contains + notContains: Not contains equal: Equal greaterThan: Greater than lessThan: Less than diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/chart.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/chart.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/chart.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/chart.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/field.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/field.yaml similarity index 97% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/field.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/field.yaml index 700061aa9..6b0efe3ff 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-compose/field.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/field.yaml @@ -139,6 +139,12 @@ selector: systemField: (system field) unselectAll: Unselect all system: + id: Record ID + moduleID: Module ID + namespaceID: Namespace ID + revision: Record revision + meta: Meta data + recordID: Record ID createdAt: Created at createdBy: Created by deletedAt: Deleted at diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/general.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/general.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/general.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/general.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/module.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/module.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/module.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/module.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/namespace.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/namespace.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/namespace.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/namespace.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/navigation.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/navigation.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/navigation.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/navigation.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/notification.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/notification.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/notification.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/notification.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/onboarding.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/onboarding.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/onboarding.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/onboarding.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/page.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/page.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/page.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/page.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/permission.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/permission.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/permission.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/permission.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/preview.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/preview.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/preview.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/preview.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/sidebar.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/sidebar.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/sidebar.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/sidebar.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-one/app.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-one/app.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-one/app.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-one/app.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-one/layout.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-one/layout.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-one/layout.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-one/layout.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-one/navigation.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-one/navigation.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-one/navigation.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-one/navigation.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-reporter/create.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-reporter/create.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-reporter/create.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-reporter/create.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-reporter/edit.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-reporter/edit.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-reporter/edit.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-reporter/edit.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-reporter/general.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-reporter/general.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-reporter/general.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-reporter/general.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-reporter/list.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-reporter/list.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-reporter/list.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-reporter/list.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-reporter/navigation.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-reporter/navigation.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-reporter/navigation.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-reporter/navigation.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-reporter/notification.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-reporter/notification.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-reporter/notification.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-reporter/notification.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-reporter/permission.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-reporter/permission.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-reporter/permission.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-reporter/permission.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-workflow/navigation.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-workflow/navigation.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-workflow/navigation.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-workflow/navigation.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-workflow/permission.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-workflow/permission.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-workflow/permission.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-workflow/permission.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/schema/config.json b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/schema/config.json similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/schema/config.json rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/schema/config.json diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/config.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/config.yaml new file mode 100644 index 000000000..ee4556e16 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/config.yaml @@ -0,0 +1 @@ +name: Slovenian diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/authorized-clients.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/authorized-clients.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/authorized-clients.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/authorized-clients.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/change-password.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/change-password.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/change-password.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/change-password.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/create-password.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/create-password.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/create-password.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/create-password.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/error-internal.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/error-internal.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/error-internal.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/error-internal.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/inc_footer.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/inc_footer.yaml similarity index 50% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/inc_footer.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/inc_footer.yaml index b056dd15c..bdb4982de 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/inc_footer.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/inc_footer.yaml @@ -1,2 +1,3 @@ --- version: verzija {{version}} +code-link: Access source code on diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/inc_header.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/inc_header.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/inc_header.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/inc_header.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/inc_nav.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/inc_nav.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/inc_nav.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/inc_nav.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/login.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/login.yaml similarity index 92% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/login.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/login.yaml index a57e2dec3..97dce8f0d 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/login.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/login.yaml @@ -16,7 +16,7 @@ template: request-password-reset: Pozabljeno geslo? signup: Ustvari račun external: - login-with: Prijavi se z {{idp}} + login-with: Login with {{idp}} alerts: logged-in: Sedaj si prijavljen. local-disabled: Local accounts disabled diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/logout.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/logout.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/logout.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/logout.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/mfa-totp-disable.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/mfa-totp-disable.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/mfa-totp-disable.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/mfa-totp-disable.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/mfa-totp.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/mfa-totp.yaml similarity index 82% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/mfa-totp.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/mfa-totp.yaml index 5587fc96d..a53d3581c 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/mfa-totp.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/mfa-totp.yaml @@ -19,5 +19,10 @@ template: title: "Complete the configuration by entering code from the authenticator application:" button: Submit alerts: - text-2FA-enabled: Two factor authentication with TOTP enabled - text-2FA-disabled: Two factor authentication with TOTP disabled + text-MFA-enabled: Two factor authentication with TOTP enabled + text-MFA-disabled: Two factor authentication with TOTP disabled + +errors: + invalid-code-format: "Invalid code format" + invalid-code: "Invalid code" + diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/mfa.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/mfa.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/mfa.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/mfa.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/oauth2-authorize-client.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/oauth2-authorize-client.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/oauth2-authorize-client.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/oauth2-authorize-client.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/password-reset-requested.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/password-reset-requested.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/password-reset-requested.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/password-reset-requested.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/pending-email-confirmation.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/pending-email-confirmation.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/pending-email-confirmation.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/pending-email-confirmation.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/profile.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/profile.yaml similarity index 90% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/profile.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/profile.yaml index 04229592e..fa65b1b68 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/profile.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/profile.yaml @@ -12,6 +12,8 @@ template: handle: label: Handle placeholder: Kratko ime ali vzdevek + preferred-language: + label: Preferred language buttons: submit: Posodobi profil alerts: diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/request-password-reset.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/request-password-reset.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/request-password-reset.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/request-password-reset.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/reset-password.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/reset-password.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/reset-password.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/reset-password.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/security.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/security.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/security.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/security.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/sessions.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/sessions.yaml similarity index 75% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/sessions.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/sessions.yaml index 5a617a572..c988ffb53 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/sessions.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/sessions.yaml @@ -13,5 +13,7 @@ template: today: Danes tomorrow: Čez 1 dan soon: Čez {{days}} dni - delete: Izbriši to sejo delete-all: Izbriši vse seje +alerts: + session-deleted: Session deleted + delete-sessions-but-current: All but current login sessions deleted diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/signup.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/signup.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/signup.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/signup.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/automation/access_control.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/automation/access-control.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/automation/access_control.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/automation/access-control.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/automation/session.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/automation/session.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/automation/session.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/automation/session.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/automation/trigger.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/automation/trigger.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/automation/trigger.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/automation/trigger.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/automation/workflow.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/automation/workflow.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/automation/workflow.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/automation/workflow.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/access_control.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/access-control.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/access_control.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/access-control.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/attachment.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/attachment.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/attachment.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/attachment.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/chart.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/chart.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/chart.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/chart.yaml diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/field.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/field.yaml new file mode 100644 index 000000000..487023d0a --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/field.yaml @@ -0,0 +1,14 @@ +system: + ID: Record ID + moduleID: Module ID + namespaceID: Namespace ID + revision: Record revision + meta: Meta data + recordID: Record ID + createdAt: Created at + createdBy: Created by + deletedAt: Deleted at + deletedBy: Deleted by + ownedBy: Owned by + updatedAt: Updated at + updatedBy: Updated by diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/module.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/module.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/module.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/module.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/namespace.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/namespace.yaml similarity index 99% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/namespace.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/namespace.yaml index 591987756..2cb5e62c2 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/namespace.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/namespace.yaml @@ -14,4 +14,4 @@ errors: unsupportedExportFormat: unsupported export format unsupportedImportFormat: unsupported import format importMissingNamespace: the import source does not contain a namespace definition - cloneMultiple: not allowed to clone multiple namespaces at once \ No newline at end of file + cloneMultiple: not allowed to clone multiple namespaces at once diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/notifications.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/notifications.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/notifications.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/notifications.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/page.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/page.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/page.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/page.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/record.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/record.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/record.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/compose/record.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/federation/access_control.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/federation/access-control.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/federation/access_control.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/federation/access-control.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/federation/exposed_module.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/federation/exposed-module.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/federation/exposed_module.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/federation/exposed-module.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/federation/module_mapping.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/federation/module-mapping.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/federation/module_mapping.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/federation/module-mapping.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/federation/node_sync.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/federation/node-sync.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/federation/node_sync.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/federation/node-sync.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/federation/node.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/federation/node.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/federation/node.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/federation/node.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/federation/shared_module.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/federation/shared-module.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/federation/shared_module.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/federation/shared-module.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/internal/auth.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/internal/auth.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/internal/auth.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/internal/auth.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/access_control.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/access-control.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/access_control.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/access-control.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/apigw_filter.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/apigw-filter.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/apigw_filter.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/apigw-filter.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/apigw_route.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/apigw-route.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/apigw_route.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/apigw-route.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/application.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/application.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/application.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/application.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/attachment.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/attachment.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/attachment.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/attachment.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/auth_client.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/auth-client.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/auth_client.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/auth-client.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/auth.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/auth.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/auth.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/auth.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/queue.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/queue.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/queue.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/queue.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/reminder.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/reminder.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/reminder.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/reminder.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/report.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/report.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/report.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/report.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/role.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/role.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/role.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/role.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/sink.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/sink.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/sink.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/sink.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/statistics.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/statistics.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/statistics.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/statistics.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/template.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/template.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/template.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/template.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/user.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/user.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/user.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/system/user.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/admin.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/admin.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/admin.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/admin.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/automation.permissions.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/automation.permissions.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/automation.permissions.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/automation.permissions.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/automation.scripts.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/automation.scripts.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/automation.scripts.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/automation.scripts.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/automation.sessions.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/automation.sessions.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/automation.sessions.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/automation.sessions.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/automation.workflows.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/automation.workflows.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/automation.workflows.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/automation.workflows.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/compose.automation.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/compose.automation.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/compose.automation.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/compose.automation.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/compose.permissions.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/compose.permissions.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/compose.permissions.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/compose.permissions.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/compose.settings.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/compose.settings.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/compose.settings.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/compose.settings.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/dashboard.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/dashboard.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/dashboard.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/dashboard.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/federation.nodes.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/federation.nodes.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/federation.nodes.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/federation.nodes.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/federation.permissions.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/federation.permissions.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/federation.permissions.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/federation.permissions.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/navigation.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/navigation.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/navigation.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/navigation.yaml diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/notification.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/notification.yaml new file mode 100644 index 000000000..48e9dc667 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/notification.yaml @@ -0,0 +1,229 @@ +general: + error: Error + success: Success + warning: Warning +notAllowed: Not allowed to access Admin Area. Redirecting +list: + load: + error: 'Failed to load resource list' +user: + fetch: + error: User fetch failed + roles: + error: Role fetch failed + update: + success: User updated + error: User update failed + create: + success: User created + error: User create failed + delete: + success: User deleted + error: User delete failed + undelete: + success: User restored + error: User restore failed + membershipUpdate: + success: Membership updated + error: Membership update failed + passwordChange: + success: Password changed + error: Password change failed + sessionsRevoke: + success: Sessions revoked + error: Session revoke failed + suspend: + success: User suspended + error: User suspension failed + unsuspend: + success: User unsuspended + error: User suspension failed + import: + success: Users imported successfully +role: + fetch: + error: Role fetch failed + create: + success: Role created + error: Role create failed + update: + success: Role updated + error: Role update failed + delete: + success: Role deleted + error: Role delete failed + undelete: + success: Role restored + error: Role restore failed + archive: + success: Role archived + error: Role archive failed + unarchive: + success: Role unarchived + error: Role unarchive failed + membershipUpdate: + success: Membership updated + error: Membership update failed +application: + fetch: + error: Application fetch failed + update: + success: Application updated + error: Application update failed + create: + success: Application created + error: Application create failed + delete: + success: Application deleted + error: Application delete failed + undelete: + success: Application restored + error: Application restore failed + assetsUpload: + error: Application assets upload failed +template: + fetch: + error: Template fetch failed + fetchPartials: + error: Partial templates fetch failed + create: + success: Template created + error: Template create failed + update: + success: Template updated + error: Template update failed + delete: + success: Template deleted + error: Template delete failed + undelete: + success: Template restored + error: Template restore failed + driver: + error: Template render drivers fetch failed + preview: + error: Template preview fetch failed +authclient: + fetch: + error: Auth Client fetch failed + create: + success: Auth Client created + error: Auth Client create failed + update: + success: Auth Client updated + error: Auth Client update failed + delete: + success: Auth Client deleted + error: Auth Client delete failed + undelete: + success: Auth Client restored + error: Auth Client restore failed +queue: + fetch: + error: Queue fetch failed + create: + success: Queue created + error: Queue create failed + update: + success: Queue updated + error: Queue update failed + delete: + success: Queue deleted + error: Queue delete failed +gateway: + fetch: + error: Route fetch failed + create: + success: Route created + error: Route create failed + update: + success: Route updated + error: Route update failed + filter: + fetch: + error: Filter fetch failed + update: + success: Filters updated + error: Filters update failed + delete: + success: Route deleted + error: Route delete failed + undelete: + success: Route restored + error: Route restore failed +workflow: + fetch: + error: Workflow fetch failed + create: + success: Workflow created + error: Workflow create failed + update: + success: Workflow updated + error: Workflow update failed + delete: + success: Workflow deleted + error: Workflow delete failed + undelete: + success: Workflow restored + error: Workflow restore failed +session: + fetch: + error: Session fetch failed + trigger: + error: Trigger fetch failed +federation: + fetch: + error: Node fetch failed + create: + success: Node created + error: Node create failed + update: + success: Node updated + error: Node update failed + delete: + success: Node deleted + error: Node delete failed + undelete: + success: Node restored + error: Node restore failed + url: + error: Generated URL fetch failed + email: + success: Email sent + error: Failed to send email + pair: + success: Node paired + error: Failed to pair node + handshake: + success: Handshake complete paired + error: Handshake failed +settings: + system: + fetch: + error: System settings fetch failed + auth: + success: Auth settings updated + error: Auth settings update failed + external: + success: External settings updated + error: External settings update failed + compose: + fetch: + error: Compose settings fetch failed + update: + success: Compose settings updated + error: Compose settings update failed + ui: + fetch: + error: UI settings fetch failed +permissions: + fetch: + error: Permissions fetch failed + update: + success: Permissions updated + error: Permissions update failed + clone: + success: Permissions cloned + error: Permissions clone failed + role: + error: Failed to add role + diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.actionlog.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.actionlog.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.actionlog.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.actionlog.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.apigw.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.apigw.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.apigw.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.apigw.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.applications.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.applications.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.applications.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.applications.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.authclients.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.authclients.yaml similarity index 97% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.authclients.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.authclients.yaml index a979cd032..3ab2f679e 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.authclients.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.authclients.yaml @@ -26,9 +26,9 @@ editor: remove: Remove secret: Secret security: - forbiddenRoles: + prohibitedRoles: description: Roles from this list will be removed from security context when user authorizes this client - label: Forbidden roles + label: Prohibited roles forcedRoles: description: Roles from this list will be always added to security context when user authorizes this client label: Forced roles diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.permissions.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.permissions.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.permissions.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.permissions.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.queues.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.queues.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.queues.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.queues.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.roles.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.roles.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.roles.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.roles.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.settings.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.settings.yaml similarity index 98% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.settings.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.settings.yaml index 2076eab37..2b984a836 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-admin/system.settings.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.settings.yaml @@ -1,3 +1,4 @@ +--- editor: title: System settings auth: @@ -42,22 +43,17 @@ editor: expires: description: How long will password be valid before it expires. label: Valid for - external: title: External Authentication Providers enabled: Enable external authentication - table: header: provider: Provider info: Issuer, client ID - - standard: enabled: Enabled clientKey: Client key clientSecret: Secret - oidc: add: Add an OIDC provider enabled: Enabled @@ -69,7 +65,6 @@ editor: clientSecret: Secret scope: Scope scopePlaceholder: List out supported OAuth scope values, use space delimited string - saml: enabled: Enabled title: SAML @@ -105,12 +100,10 @@ editor: ident-handle: Name of the IdP field used for filling Corteza user handle or nickname ident-identifier: Name of the IdP field used for filling and matching Corteza user email ident-name: Name of the IdP field used for filling Corteza user full name - - security: - forbidden-roles: + prohibited-roles: description: Roles from this list will be removed from security context when authenticates with this provider - label: Forbidden roles + label: Prohibited roles forced-roles: description: Roles from this list will be always added to security context when authenticates with this provider label: Forced roles diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.templates.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.templates.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.templates.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.templates.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.users.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.users.yaml similarity index 86% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.users.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.users.yaml index 607d19f53..dddaa9c89 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.users.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.users.yaml @@ -89,3 +89,14 @@ list: permissions: Permissions title: Users yaml: YAML +export: + buttonLabel: Export + title: Export users + inclRoleMembership: Include role membership + inclRoles: Include roles + membershipRequiredLabel: Roles can only be exported when role membership is selected + export: Export +import: + buttonLabel: Import + title: Import users + uploadFilePlaceholder: Click or drop files here to import diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/ui.settings.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/ui.settings.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/ui.settings.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/ui.settings.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/ui.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/ui.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/ui.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/ui.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/block.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/block.yaml similarity index 98% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/block.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/block.yaml index 905e9e594..f84507490 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/block.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/block.yaml @@ -25,7 +25,7 @@ automation: removeAll: Remove all searchPlaceholder: Filter available scripts by label, script name and description secondaryButton: Secondary - stepID: 'stepID: {{stepID}}' + stepID: 'Starting step ID: {{stepID}}' successButton: Success warningButton: Warning calendar: @@ -154,7 +154,7 @@ record: deleteRecord: Delete record label: Record preview: - blockNoRecord: Can not render this block without a record + blockNoRecord: Cannot render this block without a record fieldsFromModule: Single record block, displaying fields ({{0}}) from module {{1}} untitled: Untitled recordDeleted: This record was deleted @@ -206,7 +206,10 @@ recordList: note: 'Note: If Field value is undefined, the filter will look for records where that field value is undefined.' only: Only operators: + like: Like + notLike: Not Like contains: Contains + notContains: Not contains equal: Equal greaterThan: Greater than lessThan: Less than diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/chart.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/chart.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/chart.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/chart.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/field.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/field.yaml similarity index 97% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/field.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/field.yaml index 700061aa9..6b0efe3ff 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/field.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/field.yaml @@ -139,6 +139,12 @@ selector: systemField: (system field) unselectAll: Unselect all system: + id: Record ID + moduleID: Module ID + namespaceID: Namespace ID + revision: Record revision + meta: Meta data + recordID: Record ID createdAt: Created at createdBy: Created by deletedAt: Deleted at diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/general.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/general.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/general.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/general.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/module.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/module.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/module.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/module.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/namespace.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/namespace.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/namespace.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/namespace.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/navigation.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/navigation.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/navigation.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/navigation.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/notification.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/notification.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/notification.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/notification.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/onboarding.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/onboarding.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/onboarding.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/onboarding.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/page.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/page.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/page.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/page.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/permission.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/permission.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/permission.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/permission.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/preview.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/preview.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/preview.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/preview.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/sidebar.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/sidebar.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/sidebar.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/sidebar.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-one/app.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-one/app.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-one/app.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-one/app.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-one/layout.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-one/layout.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-one/layout.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-one/layout.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-one/navigation.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-one/navigation.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-one/navigation.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-one/navigation.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-reporter/create.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-reporter/create.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-reporter/create.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-reporter/create.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-reporter/edit.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-reporter/edit.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-reporter/edit.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-reporter/edit.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-reporter/general.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-reporter/general.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-reporter/general.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-reporter/general.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-reporter/list.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-reporter/list.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-reporter/list.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-reporter/list.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-reporter/navigation.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-reporter/navigation.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-reporter/navigation.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-reporter/navigation.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-reporter/notification.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-reporter/notification.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-reporter/notification.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-reporter/notification.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-reporter/permission.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-reporter/permission.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-reporter/permission.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-reporter/permission.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-workflow/navigation.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-workflow/navigation.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-workflow/navigation.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-workflow/navigation.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-workflow/permission.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-workflow/permission.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-workflow/permission.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-workflow/permission.yaml diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/config.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/config.yaml new file mode 100644 index 000000000..6f2c17856 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/config.yaml @@ -0,0 +1 @@ +name: Ukrainian diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/authorized-clients.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/authorized-clients.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/authorized-clients.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/authorized-clients.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/change-password.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/change-password.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/change-password.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/change-password.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/create-password.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/create-password.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/create-password.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/create-password.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/error-internal.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/error-internal.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/error-internal.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/error-internal.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/inc_footer.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/inc_footer.yaml similarity index 50% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/inc_footer.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/inc_footer.yaml index 7b5500830..926724e02 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/inc_footer.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/inc_footer.yaml @@ -1,2 +1,3 @@ --- version: version {{version}} +code-link: Access source code on diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/inc_header.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/inc_header.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/inc_header.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/inc_header.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/inc_nav.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/inc_nav.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/inc_nav.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/inc_nav.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/login.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/login.yaml similarity index 92% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/login.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/login.yaml index 5005a0b48..c2297d122 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/login.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/login.yaml @@ -16,7 +16,7 @@ template: request-password-reset: Forgot your password? signup: Create a new account external: - login-with: Login with {{idp}} + login-with: Login with {{idp}} alerts: logged-in: You are now logged-in. local-disabled: Local accounts disabled diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/logout.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/logout.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/auth/logout.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/logout.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/mfa-totp-disable.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/mfa-totp-disable.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/mfa-totp-disable.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/mfa-totp-disable.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/mfa-totp.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/mfa-totp.yaml similarity index 82% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/mfa-totp.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/mfa-totp.yaml index 5587fc96d..a51ce4da8 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/mfa-totp.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/mfa-totp.yaml @@ -19,5 +19,9 @@ template: title: "Complete the configuration by entering code from the authenticator application:" button: Submit alerts: - text-2FA-enabled: Two factor authentication with TOTP enabled - text-2FA-disabled: Two factor authentication with TOTP disabled + text-MFA-enabled: Two factor authentication with TOTP enabled + text-MFA-disabled: Two factor authentication with TOTP disabled + +errors: + invalid-code-format: "Invalid code format" + invalid-code: "Invalid code" diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/mfa.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/mfa.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/mfa.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/mfa.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/oauth2-authorize-client.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/oauth2-authorize-client.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/oauth2-authorize-client.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/oauth2-authorize-client.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/password-reset-requested.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/password-reset-requested.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/password-reset-requested.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/password-reset-requested.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/pending-email-confirmation.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/pending-email-confirmation.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-server/auth/pending-email-confirmation.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/pending-email-confirmation.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/profile.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/profile.yaml similarity index 90% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/profile.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/profile.yaml index cacdb8593..4e7628fa7 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/profile.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/profile.yaml @@ -12,6 +12,8 @@ template: handle: label: Handle placeholder: Short name, nickname or handle + preferred-language: + label: Preferred language buttons: submit: Update profile alerts: diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/request-password-reset.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/request-password-reset.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/request-password-reset.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/request-password-reset.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/reset-password.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/reset-password.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/reset-password.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/reset-password.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/security.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/security.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/security.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/security.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/sessions.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/sessions.yaml similarity index 68% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/sessions.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/sessions.yaml index d456477cf..5fd114642 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/sessions.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/sessions.yaml @@ -13,5 +13,7 @@ template: today: Today tomorrow: In 1 day soon: In {{days}} days - delete: Delete this session - delete-all: Delete all sessions + delete-all: Logout from everywhere +alerts: + session-deleted: Session deleted + delete-sessions-but-current: All but current login sessions deleted diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/signup.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/signup.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-server/auth/signup.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/auth/signup.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/automation/access_control.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/automation/access-control.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/automation/access_control.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/automation/access-control.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/automation/session.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/automation/session.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/automation/session.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/automation/session.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/automation/trigger.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/automation/trigger.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/automation/trigger.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/automation/trigger.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/automation/workflow.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/automation/workflow.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/automation/workflow.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/automation/workflow.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/access_control.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/access-control.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/access_control.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/access-control.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/attachment.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/attachment.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/attachment.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/attachment.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/chart.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/chart.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/chart.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/chart.yaml diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/field.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/field.yaml new file mode 100644 index 000000000..42f7b86fa --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/field.yaml @@ -0,0 +1,14 @@ +system: + ID: Record ID + moduleID: Module ID + namespaceID: Namespace ID + revision: Record revision + meta: Meta data + recordID: Record ID + createdAt: Created at + createdBy: Created by + deletedAt: Deleted at + deletedBy: Deleted by + ownedBy: Owned by + updatedAt: Updated at + updatedBy: Updated by \ No newline at end of file diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/module.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/module.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/module.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/module.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/namespace.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/namespace.yaml similarity index 99% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/namespace.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/namespace.yaml index 591987756..2cb5e62c2 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-server/compose/namespace.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/namespace.yaml @@ -14,4 +14,4 @@ errors: unsupportedExportFormat: unsupported export format unsupportedImportFormat: unsupported import format importMissingNamespace: the import source does not contain a namespace definition - cloneMultiple: not allowed to clone multiple namespaces at once \ No newline at end of file + cloneMultiple: not allowed to clone multiple namespaces at once diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/notifications.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/notifications.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/notifications.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/notifications.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/page.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/page.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/page.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/page.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/record.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/record.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/record.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/compose/record.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/federation/access_control.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/federation/access-control.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/federation/access_control.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/federation/access-control.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/federation/exposed_module.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/federation/exposed-module.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/federation/exposed_module.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/federation/exposed-module.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/federation/module_mapping.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/federation/module-mapping.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/federation/module_mapping.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/federation/module-mapping.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/federation/node_sync.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/federation/node-sync.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/federation/node_sync.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/federation/node-sync.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/federation/node.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/federation/node.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/federation/node.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/federation/node.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/federation/shared_module.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/federation/shared-module.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/federation/shared_module.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/federation/shared-module.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/internal/auth.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/internal/auth.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/internal/auth.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/internal/auth.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/access_control.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/access-control.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/access_control.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/access-control.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/apigw_filter.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/apigw-filter.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/apigw_filter.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/apigw-filter.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/apigw_route.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/apigw-route.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/apigw_route.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/apigw-route.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/application.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/application.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/application.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/application.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/attachment.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/attachment.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/attachment.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/attachment.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/auth_client.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/auth-client.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/auth_client.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/auth-client.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/auth.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/auth.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/auth.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/auth.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/queue.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/queue.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/queue.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/queue.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/reminder.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/reminder.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/reminder.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/reminder.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/report.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/report.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/report.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/report.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/role.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/role.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/role.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/role.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/sink.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/sink.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/sink.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/sink.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/statistics.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/statistics.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/statistics.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/statistics.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/template.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/template.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/template.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/template.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/user.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/user.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/user.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-server/system/user.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/admin.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/admin.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/admin.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/admin.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/automation.permissions.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/automation.permissions.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/automation.permissions.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/automation.permissions.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/automation.scripts.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/automation.scripts.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/automation.scripts.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/automation.scripts.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/automation.sessions.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/automation.sessions.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/automation.sessions.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/automation.sessions.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/automation.workflows.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/automation.workflows.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/automation.workflows.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/automation.workflows.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/compose.automation.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/compose.automation.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/compose.automation.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/compose.automation.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/compose.permissions.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/compose.permissions.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/compose.permissions.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/compose.permissions.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/compose.settings.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/compose.settings.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/compose.settings.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/compose.settings.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/dashboard.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/dashboard.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/dashboard.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/dashboard.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/federation.nodes.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/federation.nodes.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/federation.nodes.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/federation.nodes.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/federation.permissions.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/federation.permissions.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/federation.permissions.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/federation.permissions.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/navigation.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/navigation.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/navigation.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/navigation.yaml diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/notification.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/notification.yaml new file mode 100644 index 000000000..48e9dc667 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/notification.yaml @@ -0,0 +1,229 @@ +general: + error: Error + success: Success + warning: Warning +notAllowed: Not allowed to access Admin Area. Redirecting +list: + load: + error: 'Failed to load resource list' +user: + fetch: + error: User fetch failed + roles: + error: Role fetch failed + update: + success: User updated + error: User update failed + create: + success: User created + error: User create failed + delete: + success: User deleted + error: User delete failed + undelete: + success: User restored + error: User restore failed + membershipUpdate: + success: Membership updated + error: Membership update failed + passwordChange: + success: Password changed + error: Password change failed + sessionsRevoke: + success: Sessions revoked + error: Session revoke failed + suspend: + success: User suspended + error: User suspension failed + unsuspend: + success: User unsuspended + error: User suspension failed + import: + success: Users imported successfully +role: + fetch: + error: Role fetch failed + create: + success: Role created + error: Role create failed + update: + success: Role updated + error: Role update failed + delete: + success: Role deleted + error: Role delete failed + undelete: + success: Role restored + error: Role restore failed + archive: + success: Role archived + error: Role archive failed + unarchive: + success: Role unarchived + error: Role unarchive failed + membershipUpdate: + success: Membership updated + error: Membership update failed +application: + fetch: + error: Application fetch failed + update: + success: Application updated + error: Application update failed + create: + success: Application created + error: Application create failed + delete: + success: Application deleted + error: Application delete failed + undelete: + success: Application restored + error: Application restore failed + assetsUpload: + error: Application assets upload failed +template: + fetch: + error: Template fetch failed + fetchPartials: + error: Partial templates fetch failed + create: + success: Template created + error: Template create failed + update: + success: Template updated + error: Template update failed + delete: + success: Template deleted + error: Template delete failed + undelete: + success: Template restored + error: Template restore failed + driver: + error: Template render drivers fetch failed + preview: + error: Template preview fetch failed +authclient: + fetch: + error: Auth Client fetch failed + create: + success: Auth Client created + error: Auth Client create failed + update: + success: Auth Client updated + error: Auth Client update failed + delete: + success: Auth Client deleted + error: Auth Client delete failed + undelete: + success: Auth Client restored + error: Auth Client restore failed +queue: + fetch: + error: Queue fetch failed + create: + success: Queue created + error: Queue create failed + update: + success: Queue updated + error: Queue update failed + delete: + success: Queue deleted + error: Queue delete failed +gateway: + fetch: + error: Route fetch failed + create: + success: Route created + error: Route create failed + update: + success: Route updated + error: Route update failed + filter: + fetch: + error: Filter fetch failed + update: + success: Filters updated + error: Filters update failed + delete: + success: Route deleted + error: Route delete failed + undelete: + success: Route restored + error: Route restore failed +workflow: + fetch: + error: Workflow fetch failed + create: + success: Workflow created + error: Workflow create failed + update: + success: Workflow updated + error: Workflow update failed + delete: + success: Workflow deleted + error: Workflow delete failed + undelete: + success: Workflow restored + error: Workflow restore failed +session: + fetch: + error: Session fetch failed + trigger: + error: Trigger fetch failed +federation: + fetch: + error: Node fetch failed + create: + success: Node created + error: Node create failed + update: + success: Node updated + error: Node update failed + delete: + success: Node deleted + error: Node delete failed + undelete: + success: Node restored + error: Node restore failed + url: + error: Generated URL fetch failed + email: + success: Email sent + error: Failed to send email + pair: + success: Node paired + error: Failed to pair node + handshake: + success: Handshake complete paired + error: Handshake failed +settings: + system: + fetch: + error: System settings fetch failed + auth: + success: Auth settings updated + error: Auth settings update failed + external: + success: External settings updated + error: External settings update failed + compose: + fetch: + error: Compose settings fetch failed + update: + success: Compose settings updated + error: Compose settings update failed + ui: + fetch: + error: UI settings fetch failed +permissions: + fetch: + error: Permissions fetch failed + update: + success: Permissions updated + error: Permissions update failed + clone: + success: Permissions cloned + error: Permissions clone failed + role: + error: Failed to add role + diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.actionlog.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.actionlog.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.actionlog.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.actionlog.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.apigw.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.apigw.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.apigw.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.apigw.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.applications.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.applications.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.applications.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.applications.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.authclients.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.authclients.yaml similarity index 97% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.authclients.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.authclients.yaml index a979cd032..3ab2f679e 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-admin/system.authclients.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.authclients.yaml @@ -26,9 +26,9 @@ editor: remove: Remove secret: Secret security: - forbiddenRoles: + prohibitedRoles: description: Roles from this list will be removed from security context when user authorizes this client - label: Forbidden roles + label: Prohibited roles forcedRoles: description: Roles from this list will be always added to security context when user authorizes this client label: Forced roles diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.permissions.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.permissions.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.permissions.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.permissions.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.queues.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.queues.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.queues.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.queues.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.roles.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.roles.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.roles.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.roles.yaml diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.settings.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.settings.yaml new file mode 100644 index 000000000..2b984a836 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.settings.yaml @@ -0,0 +1,112 @@ +--- +editor: + title: System settings + auth: + title: Authentication + url: URL + internal: + title: Internal + enabled: Internal authentication enabled + password-reset: + enabled: Password reset enabled + password-constraints: + title: Password constraints + ignored-security: The system is configured to ignore password security constraints which is insecure on production deployments. If this is a production deployment, please contact your administrator to update the system configuration (the AUTH_PASSWORD_SECURITY .env variable). + min-length: Minimum length + min-length-description: Must be at least 8 characters + min-num-count: Minimum number of numbers + min-num-count-description: The password must include the specified number of numbers (disabled if set to 0) + min-special-count: Minimum number of special characters + min-special-count-description: The password must include the specified number of special characters (disabled if set to 0) + signup: + email-confirmation-required: Signup email confirmation required + enabled: Signup enabled + split-credentials-check: + description: 'Split login into two steps: collect the email input first and show the input for the password on the 2nd screen. Automatically forward user to external identity provider when user does not have his password set and there is only one IdP present' + label: Enable split-credentials check + mail: + title: Authentication email sender mail + from-address: Sender's address + from-name: Sender's name + validate-email: Please enter valid email address. + mfa: + title: Multi-factor authentication + TOTP: + enabled: Allow users to use time based one-time-password (using mobile application) + enforced: Force users to use time based one-time-password (using mobile application) + issuer: + description: Issuer name will be send to authenticator app when user configures it. + label: Issuer + emailOTP: + enabled: Allow users to use one-time-password over email + enforced: Force users to use one-time-password over email + expires: + description: How long will password be valid before it expires. + label: Valid for + external: + title: External Authentication Providers + enabled: Enable external authentication + table: + header: + provider: Provider + info: Issuer, client ID + standard: + enabled: Enabled + clientKey: Client key + clientSecret: Secret + oidc: + add: Add an OIDC provider + enabled: Enabled + handle: Handle + title: OpenID Connect + issuer: OIDC Issuer URL + issuerHint: Where to find the /.well-known/openid-configuration (without the /.well-known/openid-configuration part) + clientKey: Client key + clientSecret: Secret + scope: Scope + scopePlaceholder: List out supported OAuth scope values, use space delimited string + saml: + enabled: Enabled + title: SAML + requests: + title: Requests + sign-requests: Sign requests + sign-method: Signature method + binding: Binding + binding-redirect: HTTP Redirect + binding-post: HTTP POST + cert: + public: Public key + private: Private key + name: Name + certificate: Certificate + idp: + title: Identity provider + ident-handle: Handle field + ident-identifier: Identifier field + ident-name: Name field + url: URL + desc: + name: IdP name used on the login screen (Login with ) + cert: + public: Content will be minimized + private: Content will be minimized + requests: + sign-requests: Sign AuthNRequest and assertion + sign-method: Method to use on signed requests + binding: The type of HTTP binding to use on AuthNRequest, defaults to HTTP Redirect (GET) + idp: + url: Location of IdP metadata + ident-handle: Name of the IdP field used for filling Corteza user handle or nickname + ident-identifier: Name of the IdP field used for filling and matching Corteza user email + ident-name: Name of the IdP field used for filling Corteza user full name + security: + prohibited-roles: + description: Roles from this list will be removed from security context when authenticates with this provider + label: Prohibited roles + forced-roles: + description: Roles from this list will be always added to security context when authenticates with this provider + label: Forced roles + permitted-roles: + description: Only roles in this list will be added into security context when authenticates with this provider + label: Permitted roles diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.templates.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.templates.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.templates.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.templates.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.users.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.users.yaml similarity index 86% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.users.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.users.yaml index 607d19f53..dddaa9c89 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/fr/corteza-webapp-admin/system.users.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/system.users.yaml @@ -89,3 +89,14 @@ list: permissions: Permissions title: Users yaml: YAML +export: + buttonLabel: Export + title: Export users + inclRoleMembership: Include role membership + inclRoles: Include roles + membershipRequiredLabel: Roles can only be exported when role membership is selected + export: Export +import: + buttonLabel: Import + title: Import users + uploadFilePlaceholder: Click or drop files here to import diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/ui.settings.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/ui.settings.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/ui.settings.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/ui.settings.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/ui.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/ui.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/ui.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-admin/ui.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/block.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/block.yaml similarity index 98% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/block.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/block.yaml index 905e9e594..f84507490 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/sl/corteza-webapp-compose/block.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/block.yaml @@ -25,7 +25,7 @@ automation: removeAll: Remove all searchPlaceholder: Filter available scripts by label, script name and description secondaryButton: Secondary - stepID: 'stepID: {{stepID}}' + stepID: 'Starting step ID: {{stepID}}' successButton: Success warningButton: Warning calendar: @@ -154,7 +154,7 @@ record: deleteRecord: Delete record label: Record preview: - blockNoRecord: Can not render this block without a record + blockNoRecord: Cannot render this block without a record fieldsFromModule: Single record block, displaying fields ({{0}}) from module {{1}} untitled: Untitled recordDeleted: This record was deleted @@ -206,7 +206,10 @@ recordList: note: 'Note: If Field value is undefined, the filter will look for records where that field value is undefined.' only: Only operators: + like: Like + notLike: Not Like contains: Contains + notContains: Not contains equal: Equal greaterThan: Greater than lessThan: Less than diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/chart.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/chart.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/chart.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/chart.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/field.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/field.yaml similarity index 97% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/field.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/field.yaml index 700061aa9..6b0efe3ff 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/ro/corteza-webapp-compose/field.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/field.yaml @@ -139,6 +139,12 @@ selector: systemField: (system field) unselectAll: Unselect all system: + id: Record ID + moduleID: Module ID + namespaceID: Namespace ID + revision: Record revision + meta: Meta data + recordID: Record ID createdAt: Created at createdBy: Created by deletedAt: Deleted at diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/general.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/general.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/general.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/general.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/module.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/module.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/module.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/module.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/namespace.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/namespace.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/namespace.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/namespace.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/navigation.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/navigation.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/navigation.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/navigation.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/notification.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/notification.yaml similarity index 98% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/notification.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/notification.yaml index 927cc1c9d..0a569ee0b 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/de/corteza-webapp-compose/notification.yaml +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/notification.yaml @@ -69,7 +69,7 @@ record: createFailed: Could not create record deleteFailed: Could not delete record deleteBulkFailed: Could not delete selected records - deleteBulkSuccess: Deleted selected records + deleteBulkSuccess: Successfully deleted selected records invalidOwnerVar: Can not use ${ownerID} variable in non-record pages invalidRecordVar: Can not use ${record...} variable in non-record pages listLoadFailed: Could not load record list diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/onboarding.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/onboarding.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/onboarding.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/onboarding.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/page.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/page.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/page.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/page.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/permission.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/permission.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/permission.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/permission.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/preview.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/preview.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/preview.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/preview.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/sidebar.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/sidebar.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/sidebar.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-compose/sidebar.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-one/app.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-one/app.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-one/app.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-one/app.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-one/layout.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-one/layout.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-one/layout.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-one/layout.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-one/navigation.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-one/navigation.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-one/navigation.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-one/navigation.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-reporter/create.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-reporter/create.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-reporter/create.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-reporter/create.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-reporter/edit.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-reporter/edit.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-reporter/edit.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-reporter/edit.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-reporter/general.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-reporter/general.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-reporter/general.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-reporter/general.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-reporter/list.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-reporter/list.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-reporter/list.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-reporter/list.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-reporter/navigation.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-reporter/navigation.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-reporter/navigation.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-reporter/navigation.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-reporter/notification.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-reporter/notification.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-reporter/notification.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-reporter/notification.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-reporter/permission.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-reporter/permission.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-reporter/permission.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-reporter/permission.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-workflow/navigation.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-workflow/navigation.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-workflow/navigation.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-workflow/navigation.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-workflow/permission.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-workflow/permission.yaml similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-workflow/permission.yaml rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza-locale/src/uk/corteza-webapp-workflow/permission.yaml diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/api/debug.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/api/debug.go similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/api/debug.go rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/api/debug.go diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/api/ipaddr.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/api/ipaddr.go similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/api/ipaddr.go rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/api/ipaddr.go diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/api/response.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/api/response.go similarity index 98% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/api/response.go rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/api/response.go index 5c76bbd99..1520bc784 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/api/response.go +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/api/response.go @@ -9,7 +9,7 @@ package api import ( "encoding/json" "fmt" - "github.com/cortezaproject/corteza-server/pkg/errors" + "github.com/cortezaproject/corteza/server/pkg/errors" "net/http" ) diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/cli/commands.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/cli/commands.go similarity index 97% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/cli/commands.go rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/cli/commands.go index 5d4e9a309..36e2df02b 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/cli/commands.go +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/cli/commands.go @@ -1,7 +1,7 @@ package cli import ( - "github.com/cortezaproject/corteza-server/pkg/version" + "github.com/cortezaproject/corteza/server/pkg/version" "github.com/spf13/cobra" ) diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/cli/context.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/cli/context.go similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/cli/context.go rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/cli/context.go diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/cli/env.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/cli/env.go similarity index 95% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/cli/env.go rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/cli/env.go index f481a19b2..bfeafa1b9 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/cli/env.go +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/cli/env.go @@ -5,7 +5,7 @@ import ( "path" "sort" - "github.com/cortezaproject/corteza-server/pkg/errors" + "github.com/cortezaproject/corteza/server/pkg/errors" "github.com/joho/godotenv" "github.com/spf13/cobra" ) diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/cli/helpers.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/cli/helpers.go similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/cli/helpers.go rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/cli/helpers.go diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/errors/error.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/errors/error.go similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/errors/error.go rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/errors/error.go diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/errors/http.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/errors/http.go similarity index 87% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/errors/http.go rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/errors/http.go index 10d87eb75..404821de7 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/errors/http.go +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/errors/http.go @@ -3,13 +3,15 @@ package errors import ( "context" "encoding/json" + "errors" "fmt" "io" "net/http" "sort" "strings" + "syscall" - "github.com/cortezaproject/corteza-server/pkg/locale" + "github.com/cortezaproject/corteza/server/pkg/locale" ) type ( @@ -27,7 +29,7 @@ type ( func ServeHTTP(w http.ResponseWriter, r *http.Request, err error, mask bool) { // due to backward compatibility, // custom HTTP statuses are disabled for now. - serveHTTP(w, r, http.StatusOK, err, mask) + ServeHTTPWithCode(w, r, http.StatusOK, err, mask) } // ProperlyServeHTTP Prepares and encodes given error for HTTP transport, same as ServeHTTP but with proper status codes @@ -40,11 +42,11 @@ func ProperlyServeHTTP(w http.ResponseWriter, r *http.Request, err error, mask b code = e.kind.httpStatus() } - serveHTTP(w, r, code, err, mask) + ServeHTTPWithCode(w, r, code, err, mask) } // Serves error via -func serveHTTP(w http.ResponseWriter, r *http.Request, code int, err error, mask bool) { +func ServeHTTPWithCode(w http.ResponseWriter, r *http.Request, code int, err error, mask bool) { var ( // Very naive approach on parsing accept headers acceptsJson = strings.Contains(r.Header.Get("accept"), "application/json") @@ -76,6 +78,11 @@ func writeHttpPlain(w io.Writer, err error, mask bool) { } ) + // handle client-aborted connections with no output + if errors.Is(err, syscall.EPIPE) || errors.Is(err, syscall.ECONNRESET) { + return + } + write("Error: ") write(err.Error()) write("\n") @@ -127,6 +134,11 @@ func writeHttpJSON(ctx context.Context, w io.Writer, err error, mask bool) { }{} ) + // handle client-aborted connections with no output + if errors.Is(err, syscall.EPIPE) || errors.Is(err, syscall.ECONNRESET) { + return + } + if se, is := err.(interface{ Safe() bool }); !is || !se.Safe() || mask { // trim error details when not debugging or error is not safe or maske err = fmt.Errorf(err.Error()) diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/errors/json.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/errors/json.go similarity index 91% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/errors/json.go rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/errors/json.go index bb1669437..f3217912e 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/errors/json.go +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/errors/json.go @@ -3,7 +3,7 @@ package errors import ( "encoding/json" - "github.com/cortezaproject/corteza-server/pkg/locale" + "github.com/cortezaproject/corteza/server/pkg/locale" ) func (e Error) MarshalJSON() ([]byte, error) { diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/errors/kind.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/errors/kind.go similarity index 92% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/errors/kind.go rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/errors/kind.go index 1d67ab850..e87ec28ed 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/errors/kind.go +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/errors/kind.go @@ -28,6 +28,9 @@ const ( // Data already exists KindDuplicateData + // Data sensitivity related issue + KindSensitiveData + // Access control KindUnauthorized @@ -50,7 +53,7 @@ const ( // translates error kind into http status func (k kind) httpStatus() int { switch k { - case KindInvalidData: + case KindInvalidData, KindSensitiveData: return http.StatusBadRequest case KindNotFound: @@ -101,6 +104,10 @@ func DuplicateData(m string, aa ...interface{}) *Error { return err(KindDuplicateData, fmt.Sprintf(m, aa...)) } +func SensitiveData(m string, aa ...interface{}) *Error { + return err(KindSensitiveData, fmt.Sprintf(m, aa...)) +} + func Unauthorized(m string, aa ...interface{}) *Error { return err(KindUnauthorized, fmt.Sprintf(m, aa...)) } @@ -164,6 +171,10 @@ func IsDuplicateData(err error) bool { return IsKind(err, KindDuplicateData) } +func IsSensitiveData(err error) bool { + return IsKind(err, KindSensitiveData) +} + func IsUnauthorized(err error) bool { return IsKind(err, KindUnauthorized) } diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/errors/meta.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/errors/meta.go similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/errors/meta.go rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/errors/meta.go diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/errors/modifiers.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/errors/modifiers.go similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/errors/modifiers.go rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/errors/modifiers.go diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/errors/stack.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/errors/stack.go similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/errors/stack.go rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/errors/stack.go diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/expr.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/expr.go new file mode 100644 index 000000000..20399ef72 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/expr.go @@ -0,0 +1,158 @@ +package expr + +import ( + "bufio" + "fmt" + "strings" +) + +const ( + pathDelimiter = "." +) + +var ( + invalidPathErr = fmt.Errorf("invalid path format") +) + +func PathSplit(path string) ([]string, error) { + out := make([]string, 0) + s := bufio.NewScanner(strings.NewReader(path)) + s.Split(pathSplitter) + + for s.Scan() { + // checks if two consecutive path parts are empty + if len(s.Text()) == 0 && len(out) > 0 && len(out[len(out)-1]) == 0 { + return nil, invalidPathErr + } + out = append(out, s.Text()) + } + + if s.Err() != nil { + return nil, s.Err() + } + + return out, nil +} + +func pathSplitter(data []byte, atEOF bool) (advance int, token []byte, err error) { + start := 0 + for i := 0; i < len(data); i += 1 { + switch data[i] { + case '.', '[': + return i + 1, data[start:i], nil + case ']': + // When at closing bracket but not at the end, make sure we properly split the token + if i == len(data)-1 { + return i + 1, data[start:i], nil + } + + if data[i+1] != '.' && data[i+1] != '[' { + return 0, nil, invalidPathErr + } + + return i + 2, data[start:i], nil + } + } + + // If we're at EOF, we have a final, non-empty, non-terminated word. Return it. + if atEOF && len(data) > start { + return len(data), data[start:], nil + } + // Request more data. + return start, nil, nil +} + +func PathBase(path string) string { + return strings.Split(path, ".")[0] +} + +func Assign(base TypedValue, path string, val TypedValue) error { + pp, err := PathSplit(path) + if err != nil { + return err + } + + if len(pp) == 0 { + panic("setting value with empty path") + } + + var ( + key = pp[0] + ) + + // descend lower by the path but + // stop before the last part of the path + for len(pp) > 1 { + switch s := base.(type) { + case DeepFieldAssigner: + return s.AssignFieldValue(pp, val) + + case FieldSelector: + key, pp = pp[0], pp[1:] + if base, err = s.Select(key); err != nil { + return err + } + + default: + return fmt.Errorf("cannot set value on %s with path '%s'", base.Type(), path) + + } + } + + key = pp[0] + + // try with field setter first + // if not a FieldSetter it has to be a Selector + // that returns TypedValue that we can set + switch setter := base.(type) { + case DeepFieldAssigner: + return setter.AssignFieldValue(pp, val) + + case FieldAssigner: + return setter.AssignFieldValue(key, val) + + case FieldSelector: + if base, err = setter.Select(key); err != nil { + return err + } + + return base.Assign(val) + + default: + return fmt.Errorf("%T does not support value assigning with '%s'", base, path) + } + +} + +func Select(base TypedValue, path string) (TypedValue, error) { + pp, err := PathSplit(path) + if err != nil { + return nil, err + } + + if len(pp) == 0 { + panic("selecting value with empty path") + } + + var ( + failure = fmt.Errorf("cannot get value from %s with path '%s'", base.Type(), path) + key string + ) + + // descend lower by the path but + // stop before the last part of the path + for len(pp) > 0 { + s, is := base.(FieldSelector) + if !is { + return nil, failure + } + + key, pp = pp[0], pp[1:] + if base, err = s.Select(key); err != nil { + return nil, err + } + + } + + return base, nil +} diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/expr_type_comparators.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/expr_type_comparators.go new file mode 100644 index 000000000..a65010b8f --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/expr_type_comparators.go @@ -0,0 +1,56 @@ +package expr + +import ( + "fmt" +) + +func compareToBoolean(a Boolean, b TypedValue) (int, error) { + c, err := NewBoolean(b) + if err != nil { + return 0, fmt.Errorf("cannot compare %s and %s: %s", a.Type(), b.Type(), err.Error()) + } + + switch { + case a.value == c.value: + return 0, nil + case !a.value && c.value: + return -1, nil + default: + return 1, nil + } +} + +func compareToDateTime(a DateTime, b TypedValue) (int, error) { + c, err := NewDateTime(b) + if err != nil { + return 0, fmt.Errorf("cannot compare %s and %s: %s", a.Type(), b.Type(), err.Error()) + } + + ar := a.value.Nanosecond() + cr := c.value.Nanosecond() + + switch { + case ar == cr: + return 0, nil + case ar < cr: + return -1, nil + default: + return 1, nil + } +} + +func compareToDuration(a Duration, b TypedValue) (int, error) { + c, err := NewDuration(b) + if err != nil { + return 0, fmt.Errorf("cannot compare %s and %s: %s", a.Type(), b.Type(), err.Error()) + } + + switch { + case a.value == c.value: + return 0, nil + case a.value < c.value: + return -1, nil + default: + return 1, nil + } +} diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/expr_types.gen.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/expr_types.gen.go new file mode 100644 index 000000000..bc2dc0f11 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/expr_types.gen.go @@ -0,0 +1,1230 @@ +package expr + +// This file is auto-generated. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +// Definitions file that controls how this file is generated: +// pkg/expr/expr_types.yaml + +import ( + "context" + "fmt" + "github.com/cortezaproject/corteza/server/pkg/http" + "io" + "net/url" + "sync" + "time" +) + +var _ = context.Background +var _ = fmt.Errorf + +// Any is an expression type, wrapper for interface{} type +type Any struct { + value interface{} + mux sync.RWMutex +} + +// NewAny creates new instance of Any expression type +func NewAny(val interface{}) (*Any, error) { + if c, err := CastToAny(val); err != nil { + return nil, fmt.Errorf("unable to create Any: %w", err) + } else { + return &Any{value: c}, nil + } +} + +// Get return underlying value on Any +func (t *Any) Get() interface{} { + t.mux.RLock() + defer t.mux.RUnlock() + return t.value +} + +// GetValue returns underlying value on Any +func (t *Any) GetValue() interface{} { + t.mux.RLock() + defer t.mux.RUnlock() + return t.value +} + +// Type return type name +func (Any) Type() string { return "Any" } + +// Cast converts value to interface{} +func (Any) Cast(val interface{}) (TypedValue, error) { + return NewAny(val) +} + +// Assign new value to Any +// +// value is first passed through CastToAny +func (t *Any) Assign(val interface{}) error { + if c, err := CastToAny(val); err != nil { + return err + } else { + t.value = c + return nil + } +} + +// Array is an expression type, wrapper for []TypedValue type +type Array struct { + value []TypedValue + mux sync.RWMutex +} + +// NewArray creates new instance of Array expression type +func NewArray(val interface{}) (*Array, error) { + if c, err := CastToArray(val); err != nil { + return nil, fmt.Errorf("unable to create Array: %w", err) + } else { + return &Array{value: c}, nil + } +} + +// Get return underlying value on Array +func (t *Array) Get() interface{} { + t.mux.RLock() + defer t.mux.RUnlock() + return t.value +} + +// GetValue returns underlying value on Array +func (t *Array) GetValue() []TypedValue { + t.mux.RLock() + defer t.mux.RUnlock() + return t.value +} + +// Type return type name +func (Array) Type() string { return "Array" } + +// Cast converts value to []TypedValue +func (Array) Cast(val interface{}) (TypedValue, error) { + return NewArray(val) +} + +// Assign new value to Array +// +// value is first passed through CastToArray +func (t *Array) Assign(val interface{}) error { + if c, err := CastToArray(val); err != nil { + return err + } else { + t.value = c + return nil + } +} + +// Boolean is an expression type, wrapper for bool type +type Boolean struct { + value bool + mux sync.RWMutex +} + +// NewBoolean creates new instance of Boolean expression type +func NewBoolean(val interface{}) (*Boolean, error) { + if c, err := CastToBoolean(val); err != nil { + return nil, fmt.Errorf("unable to create Boolean: %w", err) + } else { + return &Boolean{value: c}, nil + } +} + +// Get return underlying value on Boolean +func (t *Boolean) Get() interface{} { + t.mux.RLock() + defer t.mux.RUnlock() + return t.value +} + +// GetValue returns underlying value on Boolean +func (t *Boolean) GetValue() bool { + t.mux.RLock() + defer t.mux.RUnlock() + return t.value +} + +// Type return type name +func (Boolean) Type() string { return "Boolean" } + +// Cast converts value to bool +func (Boolean) Cast(val interface{}) (TypedValue, error) { + return NewBoolean(val) +} + +// Assign new value to Boolean +// +// value is first passed through CastToBoolean +func (t *Boolean) Assign(val interface{}) error { + if c, err := CastToBoolean(val); err != nil { + return err + } else { + t.value = c + return nil + } +} + +// Compare the two Boolean values +func (t Boolean) Compare(to TypedValue) (int, error) { + return compareToBoolean(t, to) +} + +// Bytes is an expression type, wrapper for []byte type +type Bytes struct { + value []byte + mux sync.RWMutex +} + +// NewBytes creates new instance of Bytes expression type +func NewBytes(val interface{}) (*Bytes, error) { + if c, err := CastToBytes(val); err != nil { + return nil, fmt.Errorf("unable to create Bytes: %w", err) + } else { + return &Bytes{value: c}, nil + } +} + +// Get return underlying value on Bytes +func (t *Bytes) Get() interface{} { + t.mux.RLock() + defer t.mux.RUnlock() + return t.value +} + +// GetValue returns underlying value on Bytes +func (t *Bytes) GetValue() []byte { + t.mux.RLock() + defer t.mux.RUnlock() + return t.value +} + +// Type return type name +func (Bytes) Type() string { return "Bytes" } + +// Cast converts value to []byte +func (Bytes) Cast(val interface{}) (TypedValue, error) { + return NewBytes(val) +} + +// Assign new value to Bytes +// +// value is first passed through CastToBytes +func (t *Bytes) Assign(val interface{}) error { + if c, err := CastToBytes(val); err != nil { + return err + } else { + t.value = c + return nil + } +} + +// DateTime is an expression type, wrapper for *time.Time type +type DateTime struct { + value *time.Time + mux sync.RWMutex +} + +// NewDateTime creates new instance of DateTime expression type +func NewDateTime(val interface{}) (*DateTime, error) { + if c, err := CastToDateTime(val); err != nil { + return nil, fmt.Errorf("unable to create DateTime: %w", err) + } else { + return &DateTime{value: c}, nil + } +} + +// Get return underlying value on DateTime +func (t *DateTime) Get() interface{} { + t.mux.RLock() + defer t.mux.RUnlock() + return t.value +} + +// GetValue returns underlying value on DateTime +func (t *DateTime) GetValue() *time.Time { + t.mux.RLock() + defer t.mux.RUnlock() + return t.value +} + +// Type return type name +func (DateTime) Type() string { return "DateTime" } + +// Cast converts value to *time.Time +func (DateTime) Cast(val interface{}) (TypedValue, error) { + return NewDateTime(val) +} + +// Assign new value to DateTime +// +// value is first passed through CastToDateTime +func (t *DateTime) Assign(val interface{}) error { + if c, err := CastToDateTime(val); err != nil { + return err + } else { + t.value = c + return nil + } +} + +// Compare the two DateTime values +func (t DateTime) Compare(to TypedValue) (int, error) { + return compareToDateTime(t, to) +} + +// Duration is an expression type, wrapper for time.Duration type +type Duration struct { + value time.Duration + mux sync.RWMutex +} + +// NewDuration creates new instance of Duration expression type +func NewDuration(val interface{}) (*Duration, error) { + if c, err := CastToDuration(val); err != nil { + return nil, fmt.Errorf("unable to create Duration: %w", err) + } else { + return &Duration{value: c}, nil + } +} + +// Get return underlying value on Duration +func (t *Duration) Get() interface{} { + t.mux.RLock() + defer t.mux.RUnlock() + return t.value +} + +// GetValue returns underlying value on Duration +func (t *Duration) GetValue() time.Duration { + t.mux.RLock() + defer t.mux.RUnlock() + return t.value +} + +// Type return type name +func (Duration) Type() string { return "Duration" } + +// Cast converts value to time.Duration +func (Duration) Cast(val interface{}) (TypedValue, error) { + return NewDuration(val) +} + +// Assign new value to Duration +// +// value is first passed through CastToDuration +func (t *Duration) Assign(val interface{}) error { + if c, err := CastToDuration(val); err != nil { + return err + } else { + t.value = c + return nil + } +} + +// Compare the two Duration values +func (t Duration) Compare(to TypedValue) (int, error) { + return compareToDuration(t, to) +} + +// Float is an expression type, wrapper for float64 type +type Float struct { + value float64 + mux sync.RWMutex +} + +// NewFloat creates new instance of Float expression type +func NewFloat(val interface{}) (*Float, error) { + if c, err := CastToFloat(val); err != nil { + return nil, fmt.Errorf("unable to create Float: %w", err) + } else { + return &Float{value: c}, nil + } +} + +// Get return underlying value on Float +func (t *Float) Get() interface{} { + t.mux.RLock() + defer t.mux.RUnlock() + return t.value +} + +// GetValue returns underlying value on Float +func (t *Float) GetValue() float64 { + t.mux.RLock() + defer t.mux.RUnlock() + return t.value +} + +// Type return type name +func (Float) Type() string { return "Float" } + +// Cast converts value to float64 +func (Float) Cast(val interface{}) (TypedValue, error) { + return NewFloat(val) +} + +// Assign new value to Float +// +// value is first passed through CastToFloat +func (t *Float) Assign(val interface{}) error { + if c, err := CastToFloat(val); err != nil { + return err + } else { + t.value = c + return nil + } +} + +// Compare the two Float values +func (t Float) Compare(to TypedValue) (int, error) { + c, err := NewFloat(to) + if err != nil { + return 0, fmt.Errorf("cannot compare %s and %s: %s", t.Type(), c.Type(), err.Error()) + } + + switch { + case t.value == c.value: + return 0, nil + case t.value < c.value: + return -1, nil + case t.value > c.value: + return 1, nil + default: + return 0, fmt.Errorf("cannot compare %s and %s: unknown state", t.Type(), c.Type()) + } +} + +// Handle is an expression type, wrapper for string type +type Handle struct { + value string + mux sync.RWMutex +} + +// NewHandle creates new instance of Handle expression type +func NewHandle(val interface{}) (*Handle, error) { + if c, err := CastToHandle(val); err != nil { + return nil, fmt.Errorf("unable to create Handle: %w", err) + } else { + return &Handle{value: c}, nil + } +} + +// Get return underlying value on Handle +func (t *Handle) Get() interface{} { + t.mux.RLock() + defer t.mux.RUnlock() + return t.value +} + +// GetValue returns underlying value on Handle +func (t *Handle) GetValue() string { + t.mux.RLock() + defer t.mux.RUnlock() + return t.value +} + +// Type return type name +func (Handle) Type() string { return "Handle" } + +// Cast converts value to string +func (Handle) Cast(val interface{}) (TypedValue, error) { + return NewHandle(val) +} + +// Assign new value to Handle +// +// value is first passed through CastToHandle +func (t *Handle) Assign(val interface{}) error { + if c, err := CastToHandle(val); err != nil { + return err + } else { + t.value = c + return nil + } +} + +// Compare the two Handle values +func (t Handle) Compare(to TypedValue) (int, error) { + c, err := NewHandle(to) + if err != nil { + return 0, fmt.Errorf("cannot compare %s and %s: %s", t.Type(), c.Type(), err.Error()) + } + + switch { + case t.value == c.value: + return 0, nil + case t.value < c.value: + return -1, nil + case t.value > c.value: + return 1, nil + default: + return 0, fmt.Errorf("cannot compare %s and %s: unknown state", t.Type(), c.Type()) + } +} + +// HttpRequest is an expression type, wrapper for *http.Request type +type HttpRequest struct { + value *http.Request + mux sync.RWMutex +} + +// NewHttpRequest creates new instance of HttpRequest expression type +func NewHttpRequest(val interface{}) (*HttpRequest, error) { + if c, err := CastToHttpRequest(val); err != nil { + return nil, fmt.Errorf("unable to create HttpRequest: %w", err) + } else { + return &HttpRequest{value: c}, nil + } +} + +// Get return underlying value on HttpRequest +func (t *HttpRequest) Get() interface{} { + t.mux.RLock() + defer t.mux.RUnlock() + return t.value +} + +// GetValue returns underlying value on HttpRequest +func (t *HttpRequest) GetValue() *http.Request { + t.mux.RLock() + defer t.mux.RUnlock() + return t.value +} + +// Type return type name +func (HttpRequest) Type() string { return "HttpRequest" } + +// Cast converts value to *http.Request +func (HttpRequest) Cast(val interface{}) (TypedValue, error) { + return NewHttpRequest(val) +} + +// Assign new value to HttpRequest +// +// value is first passed through CastToHttpRequest +func (t *HttpRequest) Assign(val interface{}) error { + if c, err := CastToHttpRequest(val); err != nil { + return err + } else { + t.value = c + return nil + } +} + +func (t *HttpRequest) AssignFieldValue(key string, val TypedValue) error { + t.mux.Lock() + defer t.mux.Unlock() + return assignToHttpRequest(t.value, key, val) +} + +// SelectGVal implements gval.Selector requirements +// +// It allows gval lib to access HttpRequest's underlying value (*http.Request) +// and it's fields +// +func (t *HttpRequest) SelectGVal(ctx context.Context, k string) (interface{}, error) { + t.mux.RLock() + defer t.mux.RUnlock() + return httpRequestGValSelector(t.value, k) +} + +// Select is field accessor for *http.Request +// +// Similar to SelectGVal but returns typed values +func (t *HttpRequest) Select(k string) (TypedValue, error) { + t.mux.RLock() + defer t.mux.RUnlock() + return httpRequestTypedValueSelector(t.value, k) +} + +func (t *HttpRequest) Has(k string) bool { + t.mux.RLock() + defer t.mux.RUnlock() + switch k { + case "Method": + return true + case "URL": + return true + case "Header": + return true + case "Body": + return true + case "Form": + return true + case "PostForm": + return true + } + return false +} + +// httpRequestGValSelector is field accessor for *http.Request +func httpRequestGValSelector(res *http.Request, k string) (interface{}, error) { + if res == nil { + return nil, nil + } + switch k { + case "Method": + return res.Method, nil + case "URL": + return res.URL, nil + case "Header": + return res.Header, nil + case "Body": + return res.Body, nil + case "Form": + return res.Form, nil + case "PostForm": + return res.PostForm, nil + } + + return nil, fmt.Errorf("unknown field '%s'", k) +} + +// httpRequestTypedValueSelector is field accessor for *http.Request +func httpRequestTypedValueSelector(res *http.Request, k string) (TypedValue, error) { + if res == nil { + return nil, nil + } + switch k { + case "Method": + return NewString(res.Method) + case "URL": + return NewUrl(res.URL) + case "Header": + return NewKVV(res.Header) + case "Body": + return NewReader(res.Body) + case "Form": + return NewKVV(res.Form) + case "PostForm": + return NewKVV(res.PostForm) + } + + return nil, fmt.Errorf("unknown field '%s'", k) +} + +// assignToHttpRequest is field value setter for *http.Request +func assignToHttpRequest(res *http.Request, k string, val interface{}) error { + switch k { + case "Method": + aux, err := CastToString(val) + if err != nil { + return err + } + + res.Method = aux + return nil + case "URL": + aux, err := CastToUrl(val) + if err != nil { + return err + } + + res.URL = aux + return nil + case "Header": + aux, err := CastToKVV(val) + if err != nil { + return err + } + + res.Header = aux + return nil + case "Body": + aux, err := CastToReader(val) + if err != nil { + return err + } + + res.Body = aux + return nil + case "Form": + aux, err := CastToKVV(val) + if err != nil { + return err + } + + res.Form = aux + return nil + case "PostForm": + aux, err := CastToKVV(val) + if err != nil { + return err + } + + res.PostForm = aux + return nil + } + + return fmt.Errorf("unknown field '%s'", k) +} + +// ID is an expression type, wrapper for uint64 type +type ID struct { + value uint64 + mux sync.RWMutex +} + +// NewID creates new instance of ID expression type +func NewID(val interface{}) (*ID, error) { + if c, err := CastToID(val); err != nil { + return nil, fmt.Errorf("unable to create ID: %w", err) + } else { + return &ID{value: c}, nil + } +} + +// Get return underlying value on ID +func (t *ID) Get() interface{} { + t.mux.RLock() + defer t.mux.RUnlock() + return t.value +} + +// GetValue returns underlying value on ID +func (t *ID) GetValue() uint64 { + t.mux.RLock() + defer t.mux.RUnlock() + return t.value +} + +// Type return type name +func (ID) Type() string { return "ID" } + +// Cast converts value to uint64 +func (ID) Cast(val interface{}) (TypedValue, error) { + return NewID(val) +} + +// Assign new value to ID +// +// value is first passed through CastToID +func (t *ID) Assign(val interface{}) error { + if c, err := CastToID(val); err != nil { + return err + } else { + t.value = c + return nil + } +} + +// Compare the two ID values +func (t ID) Compare(to TypedValue) (int, error) { + c, err := NewID(to) + if err != nil { + return 0, fmt.Errorf("cannot compare %s and %s: %s", t.Type(), c.Type(), err.Error()) + } + + switch { + case t.value == c.value: + return 0, nil + case t.value < c.value: + return -1, nil + case t.value > c.value: + return 1, nil + default: + return 0, fmt.Errorf("cannot compare %s and %s: unknown state", t.Type(), c.Type()) + } +} + +// Integer is an expression type, wrapper for int64 type +type Integer struct { + value int64 + mux sync.RWMutex +} + +// NewInteger creates new instance of Integer expression type +func NewInteger(val interface{}) (*Integer, error) { + if c, err := CastToInteger(val); err != nil { + return nil, fmt.Errorf("unable to create Integer: %w", err) + } else { + return &Integer{value: c}, nil + } +} + +// Get return underlying value on Integer +func (t *Integer) Get() interface{} { + t.mux.RLock() + defer t.mux.RUnlock() + return t.value +} + +// GetValue returns underlying value on Integer +func (t *Integer) GetValue() int64 { + t.mux.RLock() + defer t.mux.RUnlock() + return t.value +} + +// Type return type name +func (Integer) Type() string { return "Integer" } + +// Cast converts value to int64 +func (Integer) Cast(val interface{}) (TypedValue, error) { + return NewInteger(val) +} + +// Assign new value to Integer +// +// value is first passed through CastToInteger +func (t *Integer) Assign(val interface{}) error { + if c, err := CastToInteger(val); err != nil { + return err + } else { + t.value = c + return nil + } +} + +// Compare the two Integer values +func (t Integer) Compare(to TypedValue) (int, error) { + c, err := NewInteger(to) + if err != nil { + return 0, fmt.Errorf("cannot compare %s and %s: %s", t.Type(), c.Type(), err.Error()) + } + + switch { + case t.value == c.value: + return 0, nil + case t.value < c.value: + return -1, nil + case t.value > c.value: + return 1, nil + default: + return 0, fmt.Errorf("cannot compare %s and %s: unknown state", t.Type(), c.Type()) + } +} + +// KV is an expression type, wrapper for map[string]string type +type KV struct { + value map[string]string + mux sync.RWMutex +} + +// NewKV creates new instance of KV expression type +func NewKV(val interface{}) (*KV, error) { + if c, err := CastToKV(val); err != nil { + return nil, fmt.Errorf("unable to create KV: %w", err) + } else { + return &KV{value: c}, nil + } +} + +// Get return underlying value on KV +func (t *KV) Get() interface{} { + t.mux.RLock() + defer t.mux.RUnlock() + return t.value +} + +// GetValue returns underlying value on KV +func (t *KV) GetValue() map[string]string { + t.mux.RLock() + defer t.mux.RUnlock() + return t.value +} + +// Type return type name +func (KV) Type() string { return "KV" } + +// Cast converts value to map[string]string +func (KV) Cast(val interface{}) (TypedValue, error) { + return NewKV(val) +} + +// Assign new value to KV +// +// value is first passed through CastToKV +func (t *KV) Assign(val interface{}) error { + if c, err := CastToKV(val); err != nil { + return err + } else { + t.value = c + return nil + } +} + +// KVV is an expression type, wrapper for map[string][]string type +type KVV struct { + value map[string][]string + mux sync.RWMutex +} + +// NewKVV creates new instance of KVV expression type +func NewKVV(val interface{}) (*KVV, error) { + if c, err := CastToKVV(val); err != nil { + return nil, fmt.Errorf("unable to create KVV: %w", err) + } else { + return &KVV{value: c}, nil + } +} + +// Get return underlying value on KVV +func (t *KVV) Get() interface{} { + t.mux.RLock() + defer t.mux.RUnlock() + return t.value +} + +// GetValue returns underlying value on KVV +func (t *KVV) GetValue() map[string][]string { + t.mux.RLock() + defer t.mux.RUnlock() + return t.value +} + +// Type return type name +func (KVV) Type() string { return "KVV" } + +// Cast converts value to map[string][]string +func (KVV) Cast(val interface{}) (TypedValue, error) { + return NewKVV(val) +} + +// Assign new value to KVV +// +// value is first passed through CastToKVV +func (t *KVV) Assign(val interface{}) error { + if c, err := CastToKVV(val); err != nil { + return err + } else { + t.value = c + return nil + } +} + +// Meta is an expression type, wrapper for map[string]any type +type Meta struct { + value map[string]any + mux sync.RWMutex +} + +// NewMeta creates new instance of Meta expression type +func NewMeta(val interface{}) (*Meta, error) { + if c, err := CastToMeta(val); err != nil { + return nil, fmt.Errorf("unable to create Meta: %w", err) + } else { + return &Meta{value: c}, nil + } +} + +// Get return underlying value on Meta +func (t *Meta) Get() interface{} { + t.mux.RLock() + defer t.mux.RUnlock() + return t.value +} + +// GetValue returns underlying value on Meta +func (t *Meta) GetValue() map[string]any { + t.mux.RLock() + defer t.mux.RUnlock() + return t.value +} + +// Type return type name +func (Meta) Type() string { return "Meta" } + +// Cast converts value to map[string]any +func (Meta) Cast(val interface{}) (TypedValue, error) { + return NewMeta(val) +} + +// Assign new value to Meta +// +// value is first passed through CastToMeta +func (t *Meta) Assign(val interface{}) error { + if c, err := CastToMeta(val); err != nil { + return err + } else { + t.value = c + return nil + } +} + +// Reader is an expression type, wrapper for io.Reader type +type Reader struct { + value io.Reader + mux sync.RWMutex +} + +// NewReader creates new instance of Reader expression type +func NewReader(val interface{}) (*Reader, error) { + if c, err := CastToReader(val); err != nil { + return nil, fmt.Errorf("unable to create Reader: %w", err) + } else { + return &Reader{value: c}, nil + } +} + +// Get return underlying value on Reader +func (t *Reader) Get() interface{} { + t.mux.RLock() + defer t.mux.RUnlock() + return t.value +} + +// GetValue returns underlying value on Reader +func (t *Reader) GetValue() io.Reader { + t.mux.RLock() + defer t.mux.RUnlock() + return t.value +} + +// Type return type name +func (Reader) Type() string { return "Reader" } + +// Cast converts value to io.Reader +func (Reader) Cast(val interface{}) (TypedValue, error) { + return NewReader(val) +} + +// Assign new value to Reader +// +// value is first passed through CastToReader +func (t *Reader) Assign(val interface{}) error { + if c, err := CastToReader(val); err != nil { + return err + } else { + t.value = c + return nil + } +} + +// String is an expression type, wrapper for string type +type String struct { + value string + mux sync.RWMutex +} + +// NewString creates new instance of String expression type +func NewString(val interface{}) (*String, error) { + if c, err := CastToString(val); err != nil { + return nil, fmt.Errorf("unable to create String: %w", err) + } else { + return &String{value: c}, nil + } +} + +// Get return underlying value on String +func (t *String) Get() interface{} { + t.mux.RLock() + defer t.mux.RUnlock() + return t.value +} + +// GetValue returns underlying value on String +func (t *String) GetValue() string { + t.mux.RLock() + defer t.mux.RUnlock() + return t.value +} + +// Type return type name +func (String) Type() string { return "String" } + +// Cast converts value to string +func (String) Cast(val interface{}) (TypedValue, error) { + return NewString(val) +} + +// Assign new value to String +// +// value is first passed through CastToString +func (t *String) Assign(val interface{}) error { + if c, err := CastToString(val); err != nil { + return err + } else { + t.value = c + return nil + } +} + +// Compare the two String values +func (t String) Compare(to TypedValue) (int, error) { + c, err := NewString(to) + if err != nil { + return 0, fmt.Errorf("cannot compare %s and %s: %s", t.Type(), c.Type(), err.Error()) + } + + switch { + case t.value == c.value: + return 0, nil + case t.value < c.value: + return -1, nil + case t.value > c.value: + return 1, nil + default: + return 0, fmt.Errorf("cannot compare %s and %s: unknown state", t.Type(), c.Type()) + } +} + +// UnsignedInteger is an expression type, wrapper for uint64 type +type UnsignedInteger struct { + value uint64 + mux sync.RWMutex +} + +// NewUnsignedInteger creates new instance of UnsignedInteger expression type +func NewUnsignedInteger(val interface{}) (*UnsignedInteger, error) { + if c, err := CastToUnsignedInteger(val); err != nil { + return nil, fmt.Errorf("unable to create UnsignedInteger: %w", err) + } else { + return &UnsignedInteger{value: c}, nil + } +} + +// Get return underlying value on UnsignedInteger +func (t *UnsignedInteger) Get() interface{} { + t.mux.RLock() + defer t.mux.RUnlock() + return t.value +} + +// GetValue returns underlying value on UnsignedInteger +func (t *UnsignedInteger) GetValue() uint64 { + t.mux.RLock() + defer t.mux.RUnlock() + return t.value +} + +// Type return type name +func (UnsignedInteger) Type() string { return "UnsignedInteger" } + +// Cast converts value to uint64 +func (UnsignedInteger) Cast(val interface{}) (TypedValue, error) { + return NewUnsignedInteger(val) +} + +// Assign new value to UnsignedInteger +// +// value is first passed through CastToUnsignedInteger +func (t *UnsignedInteger) Assign(val interface{}) error { + if c, err := CastToUnsignedInteger(val); err != nil { + return err + } else { + t.value = c + return nil + } +} + +// Compare the two UnsignedInteger values +func (t UnsignedInteger) Compare(to TypedValue) (int, error) { + c, err := NewUnsignedInteger(to) + if err != nil { + return 0, fmt.Errorf("cannot compare %s and %s: %s", t.Type(), c.Type(), err.Error()) + } + + switch { + case t.value == c.value: + return 0, nil + case t.value < c.value: + return -1, nil + case t.value > c.value: + return 1, nil + default: + return 0, fmt.Errorf("cannot compare %s and %s: unknown state", t.Type(), c.Type()) + } +} + +// Url is an expression type, wrapper for *url.URL type +type Url struct { + value *url.URL + mux sync.RWMutex +} + +// NewUrl creates new instance of Url expression type +func NewUrl(val interface{}) (*Url, error) { + if c, err := CastToUrl(val); err != nil { + return nil, fmt.Errorf("unable to create Url: %w", err) + } else { + return &Url{value: c}, nil + } +} + +// Get return underlying value on Url +func (t *Url) Get() interface{} { + t.mux.RLock() + defer t.mux.RUnlock() + return t.value +} + +// GetValue returns underlying value on Url +func (t *Url) GetValue() *url.URL { + t.mux.RLock() + defer t.mux.RUnlock() + return t.value +} + +// Type return type name +func (Url) Type() string { return "Url" } + +// Cast converts value to *url.URL +func (Url) Cast(val interface{}) (TypedValue, error) { + return NewUrl(val) +} + +// Assign new value to Url +// +// value is first passed through CastToUrl +func (t *Url) Assign(val interface{}) error { + if c, err := CastToUrl(val); err != nil { + return err + } else { + t.value = c + return nil + } +} + +// Vars is an expression type, wrapper for map[string]TypedValue type +type Vars struct { + value map[string]TypedValue + mux sync.RWMutex +} + +// NewVars creates new instance of Vars expression type +func NewVars(val interface{}) (*Vars, error) { + if c, err := CastToVars(val); err != nil { + return nil, fmt.Errorf("unable to create Vars: %w", err) + } else { + return &Vars{value: c}, nil + } +} + +// Get return underlying value on Vars +func (t *Vars) Get() interface{} { + t.mux.RLock() + defer t.mux.RUnlock() + return t.value +} + +// GetValue returns underlying value on Vars +func (t *Vars) GetValue() map[string]TypedValue { + t.mux.RLock() + defer t.mux.RUnlock() + return t.value +} + +// Type return type name +func (Vars) Type() string { return "Vars" } + +// Cast converts value to map[string]TypedValue +func (Vars) Cast(val interface{}) (TypedValue, error) { + return NewVars(val) +} + +// Assign new value to Vars +// +// value is first passed through CastToVars +func (t *Vars) Assign(val interface{}) error { + if c, err := CastToVars(val); err != nil { + return err + } else { + t.value = c + return nil + } +} diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/expr_types.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/expr_types.go new file mode 100644 index 000000000..fab264ba6 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/expr_types.go @@ -0,0 +1,865 @@ +package expr + +import ( + "bytes" + "context" + "encoding/json" + "fmt" + "io" + "io/ioutil" + "net/http" + "net/url" + "reflect" + "strings" + "time" + + "github.com/PaesslerAG/gval" + "github.com/cortezaproject/corteza/server/pkg/errors" + "github.com/cortezaproject/corteza/server/pkg/handle" + h "github.com/cortezaproject/corteza/server/pkg/http" + "github.com/spf13/cast" +) + +type ( + resolvableType interface { + Type + ResolveTypes(func(string) Type) error + } + + merger interface { + Merge(...Iterator) (TypedValue, error) + } + + filterer interface { + Filter(...string) (TypedValue, error) + } + + deleter interface { + Delete(...string) (TypedValue, error) + } +) + +func KvFunctions() []gval.Language { + return []gval.Language{ + gval.Function("set", set), + gval.Function("merge", merge), + gval.Function("filter", filter), + gval.Function("omit", omit), + } +} + +func EmptyKV() *KV { + return &KV{value: make(map[string]string)} +} + +func EmptyKVV() *KVV { + return &KVV{value: make(map[string][]string)} +} + +func EmptyVars() *Vars { + return &Vars{value: make(map[string]TypedValue)} +} + +func ResolveTypes(rt resolvableType, resolver func(typ string) Type) error { + return rt.ResolveTypes(resolver) +} + +func set(i interface{}, key string, val interface{}) (out TypedValue, err error) { + m, ok := i.(merger) + if !ok { + i, err = Typify(i) + if err != nil { + return + } + + m, ok = i.(merger) + if !ok { + return out, fmt.Errorf("cannot set on unexpected type: %T", i) + } + } + + out, err = m.Merge() + if err != nil { + return + } + + v, err := Typify(val) + if err != nil { + return + } + + err = Assign(out, key, v) + if err != nil { + return + } + + return +} + +func merge(m merger, nn ...Iterator) (TypedValue, error) { + return m.Merge(nn...) +} + +func filter(f filterer, ss ...string) (TypedValue, error) { + return f.Filter(ss...) +} + +func omit(d deleter, ss ...string) (TypedValue, error) { + return d.Delete(ss...) +} + +// Typify detects input type and wraps it with expression type +func Typify(in interface{}) (tv TypedValue, err error) { + var is bool + if tv, is = in.(TypedValue); is { + return + } + + switch c := in.(type) { + case []TypedValue: + return &Array{value: c}, nil + case bool: + return &Boolean{value: c}, nil + case uint8: + return &UnsignedInteger{value: uint64(c)}, nil + case uint16: + return &UnsignedInteger{value: uint64(c)}, nil + case uint32: + return &UnsignedInteger{value: uint64(c)}, nil + case uint64: + return &UnsignedInteger{value: c}, nil + case int8: + return &Integer{value: int64(c)}, nil + case int16: + return &Integer{value: int64(c)}, nil + case int32: + return &Integer{value: int64(c)}, nil + case int64: + return &Integer{value: c}, nil + case float32: + return &Float{value: float64(c)}, nil + case float64: + return &Float{value: c}, nil + case string: + return &String{value: c}, nil + case []byte: + return &String{value: string(c)}, nil + case *time.Time: + return &DateTime{value: c}, nil + case time.Time: + return &DateTime{value: &c}, nil + case *time.Duration: + return &Duration{value: *c}, nil + case time.Duration: + return &Duration{value: c}, nil + case map[string]interface{}: + if v, err := CastToVars(c); err != nil { + return nil, err + } else { + return &Vars{value: v}, nil + } + case map[string]TypedValue: + return &Vars{value: c}, nil + case map[string]string: + return &KV{value: c}, nil + case map[string][]string: + return &KVV{value: c}, nil + case io.Reader, io.ReadCloser, io.ReadSeeker, io.ReadSeekCloser, io.ReadWriteSeeker: + return &Reader{value: c.(io.Reader)}, nil + default: + return &Any{value: c}, nil + } +} + +// Unresolved is a special type that holds value + type it needs to be resolved to +// +// This solves problem with typed value serialization +type Unresolved struct { + typ string + value interface{} +} + +// NewUnresolved creates new instance of Unresolved expression type +func NewUnresolved(typ string, val interface{}) (TypedValue, error) { + return &Unresolved{ + typ: typ, + value: UntypedValue(val), + }, nil +} + +// Returns underlying value on Unresolved +func (t Unresolved) Get() interface{} { return t.value } + +// Returns type name +func (t Unresolved) Type() string { return t.typ } + +// Casts value to interface{} +func (Unresolved) Cast(interface{}) (TypedValue, error) { + return nil, fmt.Errorf("cannot cast to unresolved type") +} + +func (t *Unresolved) Assign(interface{}) (err error) { + return fmt.Errorf("cannot set on unresolved type") +} + +func CastToAny(val interface{}) (interface{}, error) { + return UntypedValue(val), nil +} + +func CastToArray(val interface{}) (out []TypedValue, err error) { + + switch val := val.(type) { + case nil: + return make([]TypedValue, 0), nil + case *Array: + return val.value, nil + } + + cast := func(val interface{}) (out []TypedValue, err error) { + ref := reflect.ValueOf(val) + if ref.Kind() == reflect.Slice { + out = make([]TypedValue, ref.Len()) + for i := 0; i < ref.Len(); i++ { + item := ref.Index(i).Interface() + out[i], err = Typify(item) + if err != nil { + return + } + } + } + return + } + + if c, ok := val.(TypedValue); ok { + out, err = cast(c.Get()) + } else { + out, err = cast(val) + } + + if err != nil { + return nil, err + } + if val == nil { + return nil, fmt.Errorf("unable to cast %T to []TypedValue", val) + } + + return +} + +var _ TypeValueDecoder = &Array{} + +func (t Array) MarshalJSON() ([]byte, error) { + var ( + aux = make([]*typedValueWrap, len(t.value)) + ) + + for i, v := range t.value { + aux[i] = &typedValueWrap{Type: v.Type()} + + if _, is := v.(json.Marshaler); is { + aux[i].Value = v + } else { + aux[i].Value = v.Get() + } + } + + return json.Marshal(aux) +} + +func (t *Array) Decode(dst reflect.Value) error { + if dst.Kind() != reflect.Slice { + return fmt.Errorf("failed to decode Array to non-slice") + } + + if reflect.ValueOf(make([]TypedValue, 0)).Type() == dst.Type() { + dst.Set(reflect.ValueOf(t.value)) + return nil + } + + out := reflect.MakeSlice(dst.Type(), len(t.value), len(t.value)) + for i := range t.value { + out.Index(i).Set(reflect.ValueOf(UntypedValue(t.value[i]))) + } + + dst.Set(out) + + return nil +} + +// SelectGVal implements gval.Selector requirements +// +// It allows gval lib to access Record's underlying value (*types.Array) +// and it's fields +// +func (t Array) SelectGVal(ctx context.Context, k string) (interface{}, error) { + if s, err := t.Select(k); err != nil { + return nil, err + } else { + return UntypedValue(s), nil + } +} + +var _ FieldSelector = &Array{} + +// Select is field accessor for *types.Record +// +// Similar to SelectGVal but returns typed values +func (t Array) Has(k string) bool { + if i, err := cast.ToIntE(k); err != nil { + return false + } else { + return i >= 0 && i < len(t.value) + } +} + +// Push appends value to array +func (t *Array) Push(v TypedValue) { + t.value = append(t.value, v) +} + +func (t *Array) Slice() []interface{} { + rr := make([]interface{}, len(t.GetValue())) + for i, v := range t.GetValue() { + switch v := v.(type) { + case Dict: + rr[i] = v.Dict() + + case Slice: + rr[i] = v.Slice() + + case TypedValue: + tmp := v.Get() + if d, is := tmp.(Dict); is { + rr[i] = d.Dict() + } else { + rr[i] = tmp + } + + default: + rr[i] = v + } + } + + return rr +} + +// Select is field accessor for *types.Array +// +// Similar to SelectGVal but returns typed values +func (t Array) Select(k string) (TypedValue, error) { + if i, err := cast.ToIntE(k); err != nil { + return nil, err + } else { + return t.value[i], nil + } +} + +// emptyStringFailsafe returns 0 on empty strings +func emptyStringFailsafe(val interface{}) interface{} { + val = UntypedValue(val) + if aux, is := val.(string); is && len(strings.TrimSpace(aux)) == 0 { + return 0 + } else { + return val + } +} + +func (t ID) MarshalJSON() ([]byte, error) { + return json.Marshal(fmt.Sprintf("%d", t.value)) +} + +func CastToBoolean(val interface{}) (out bool, err error) { + val = UntypedValue(val) + if aux, is := val.(string); is && len(strings.TrimSpace(aux)) == 0 { + return false, nil + } + + return cast.ToBoolE(val) +} + +func CastToString(val interface{}) (out string, err error) { + switch v := val.(type) { + case io.Reader: + bb, err := ioutil.ReadAll(v) + if err != nil { + return "", err + } + return string(bb), nil + default: + return cast.ToStringE(UntypedValue(val)) + } +} + +func CastToBytes(val interface{}) (out []byte, err error) { + s, err := CastToString(val) + + if err != nil { + return + } + + out = []byte(s) + return +} + +func CastToStringSlice(val interface{}) (out []string, err error) { + return cast.ToStringSliceE(UntypedValue(val)) +} + +func CastToHandle(val interface{}) (string, error) { + val = UntypedValue(val) + + h, err := cast.ToStringE(val) + + if !handle.IsValid(h) { + return "", fmt.Errorf("invalid handle format: '%s'", h) + } + + return h, err +} + +func CastToDuration(val interface{}) (out time.Duration, err error) { + return cast.ToDurationE(emptyStringFailsafe(val)) +} + +func CastToDateTime(val interface{}) (out *time.Time, err error) { + val = UntypedValue(val) + switch casted := val.(type) { + case *time.Time: + return casted, nil + case time.Time: + return &casted, nil + default: + var c time.Time + if c, err = cast.ToTimeE(casted); err != nil { + return nil, err + } + + return &c, nil + } +} + +func CastToFloat(val interface{}) (out float64, err error) { + val = UntypedValue(val) + switch val := val.(type) { + case nil: + return 0, nil + case *Float: + return val.value, nil + } + + return cast.ToFloat64E(emptyStringFailsafe(val)) +} + +func CastToID(val interface{}) (out uint64, err error) { + return cast.ToUint64E(emptyStringFailsafe(val)) +} + +func CastToInteger(val interface{}) (out int64, err error) { + return cast.ToInt64E(emptyStringFailsafe(val)) +} + +func CastToUnsignedInteger(val interface{}) (out uint64, err error) { + return cast.ToUint64E(emptyStringFailsafe(val)) +} + +func (t *KV) Has(k string) bool { + _, has := t.value[k] + return has +} + +func (t *KV) Select(k string) (TypedValue, error) { + if v, has := t.value[k]; has { + return Must(NewString(v)), nil + } else { + return nil, errors.NotFound("no such key '%s'", k) + } +} + +func (t *KV) AssignFieldValue(key string, val TypedValue) error { + return assignToKV(t, key, val) +} + +func assignToKV(t *KV, key string, val TypedValue) error { + if t.value == nil { + t.value = make(map[string]string) + } + + str, err := cast.ToStringE(UntypedValue(val)) + t.value[key] = str + return err +} + +func CastToKV(val interface{}) (out map[string]string, err error) { + val = UntypedValue(val) + + if val == nil { + return make(map[string]string), nil + } + + switch casted := val.(type) { + case map[string]string: + return casted, nil + default: + return cast.ToStringMapStringE(UntypedValue(casted)) + } +} + +func (t *KV) SelectGVal(_ context.Context, k string) (interface{}, error) { + t.mux.RLock() + defer t.mux.RUnlock() + + val, err := t.Select(k) + switch c := val.(type) { + case gval.Selector: + return c, nil + default: + return UntypedValue(val), err + } +} + +func (t *KV) Each(fn func(k string, v TypedValue) error) (err error) { + if t == nil { + return nil + } + + t.mux.RLock() + defer t.mux.RUnlock() + + if t.value == nil { + return + } + + for k, v := range t.value { + var val TypedValue + val, err = Typify(v) + if err != nil { + return err + } + + if err = fn(k, val); err != nil { + return + } + } + + return +} + +// Merge combines the given KVs into KV +// NOTE: It will return CLONE of the original KV, if its called without any parameters +func (t *KV) Merge(nn ...Iterator) (out TypedValue, err error) { + if t != nil { + t.mux.RLock() + defer t.mux.RUnlock() + + nn = append([]Iterator{t}, nn...) + } + + kv := EmptyKV() + + for _, i := range nn { + err = i.Each(func(k string, v TypedValue) error { + str, err := cast.ToStringE(v.Get()) + kv.value[k] = str + return err + }) + if err != nil { + return + } + } + + return kv, nil +} + +// Filter take keys returns KV with only those key value pair +func (t *KV) Filter(keys ...string) (out TypedValue, err error) { + t.mux.RLock() + defer t.mux.RUnlock() + + if t.value == nil { + return + } + + kv := EmptyKV() + + for _, k := range keys { + _, has := t.value[k] + if has { + kv.value[k] = t.value[k] + } + } + + return kv, nil +} + +// Delete take keys returns KV without those key value pair +func (t *KV) Delete(keys ...string) (out TypedValue, err error) { + t.mux.RLock() + defer t.mux.RUnlock() + + if t.value == nil { + return + } + + // get cloned KV + out, err = t.Merge() + if err != nil { + return + } + + kv := out.(*KV) + + // Delete key from out.value if exist + for _, k := range keys { + delete(kv.value, k) + } + + return kv, nil +} + +func (t *KVV) AssignFieldValue(key []string, val TypedValue) error { + return assignToKVV(t, key, val) +} + +func assignToKVV(t *KVV, kk []string, val TypedValue) error { + if t.value == nil { + t.value = make(map[string][]string) + } + + switch len(kk) { + case 2: + str, err := cast.ToStringE(val.Get()) + if err != nil { + return err + } + + key, ind := kk[0], kk[1] + + if len(ind) > 0 { + // handles kvv.field[42] = "value" + index, err := cast.ToIntE(ind) + if err != nil { + return err + } + + if index >= 0 && index < len(t.value[key]) { + // handles positive & in-range indexes + t.value[key][index] = str + return nil + } + + //negative & out-of-range indexes are always appended + } + + // handles kvv.field[] = "value" + t.value[key] = append(t.value[key], str) + + case 1: + str, err := cast.ToStringSliceE(val.Get()) + if err != nil { + return err + } + + t.value[kk[0]] = str + + default: + return fmt.Errorf("cannot set value on %s with path '%s'", t.Type(), strings.Join(kk, ".")) + } + + return nil +} + +func CastToKVV(val interface{}) (out map[string][]string, err error) { + val = UntypedValue(val) + + if val == nil { + return make(map[string][]string), nil + } + + switch casted := val.(type) { + case http.Header: + return casted, nil + case url.Values: + return casted, nil + default: + return cast.ToStringMapStringSliceE(casted) + } +} + +func CastToReader(val interface{}) (out io.Reader, err error) { + val = UntypedValue(val) + + switch casted := val.(type) { + case []byte: + return bytes.NewReader(casted), nil + case string: + return strings.NewReader(casted), nil + case io.Reader: + return casted, nil + default: + return nil, fmt.Errorf("unable to cast %T to io.Reader", val) + } +} + +func CastToHttpRequest(val interface{}) (out *h.Request, err error) { + switch val := val.(type) { + case Iterator: + out = &h.Request{} + return out, val.Each(func(k string, v TypedValue) error { + return assignToHttpRequest(out, k, v) + }) + } + + switch val := UntypedValue(val).(type) { + case *h.Request: + return val, nil + case nil: + return &h.Request{}, nil + default: + return &h.Request{}, fmt.Errorf("unable to cast type %T to %T", val, out) + } +} + +func CastToUrl(val interface{}) (out *url.URL, err error) { + switch val := UntypedValue(val).(type) { + case []byte: + return url.Parse(string(val)) + case string: + return url.Parse(val) + case *url.URL: + return val, nil + case nil: + return &url.URL{}, nil + default: + return &url.URL{}, fmt.Errorf("unable to cast type %T to %T", val, out) + } +} + +func (t *KVV) Select(k string) (TypedValue, error) { + if v, is := t.value[k]; is { + return Must(Typify(v)), nil + } else { + return nil, errors.NotFound("no such key '%s'", k) + } +} + +func (t *KVV) SelectGVal(_ context.Context, k string) (interface{}, error) { + t.mux.RLock() + defer t.mux.RUnlock() + + val, err := t.Select(k) + switch c := val.(type) { + case gval.Selector: + return c, nil + default: + return UntypedValue(val), err + } +} + +func (t *KVV) Each(fn func(k string, v TypedValue) error) (err error) { + if t == nil { + return + } + + t.mux.RLock() + defer t.mux.RUnlock() + + if t.value == nil { + return + } + + for k, v := range t.value { + var val TypedValue + val, err = Typify(v) + if err != nil { + return err + } + + if err = fn(k, val); err != nil { + return + } + } + + return +} + +// Merge combines the given KVVs into KVV +// NOTE: It will return CLONE of the original KVV, if its called without any parameters +func (t *KVV) Merge(nn ...Iterator) (out TypedValue, err error) { + if t != nil { + t.mux.RLock() + defer t.mux.RUnlock() + + nn = append([]Iterator{t}, nn...) + } + + kvv := EmptyKVV() + + for _, i := range nn { + err = i.Each(func(k string, v TypedValue) error { + var ss []string + ss, err = cast.ToStringSliceE(v.Get()) + if err != nil { + return err + } + + _, is := kvv.value[k] + if is { + kvv.value[k] = append(kvv.value[k], ss...) + } else { + kvv.value[k] = ss + } + return nil + }) + if err != nil { + return + } + } + + return kvv, nil +} + +// Filter take keys returns KVV with only those key value pair +func (t *KVV) Filter(keys ...string) (out TypedValue, err error) { + t.mux.RLock() + defer t.mux.RUnlock() + + if t.value == nil { + return + } + + kvv := EmptyKVV() + + for _, k := range keys { + _, has := t.value[k] + if has { + kvv.value[k] = t.value[k] + } + } + + return kvv, nil +} + +// Delete take keys returns KVV without those key value pair +func (t *KVV) Delete(keys ...string) (out TypedValue, err error) { + t.mux.RLock() + defer t.mux.RUnlock() + + if t.value == nil { + return + } + + // get cloned KVV + out, err = t.Merge() + if err != nil { + return + } + + kvv := out.(*KVV) + + // Delete key from t.value if exist + for _, k := range keys { + delete(kvv.value, k) + } + + return kvv, nil +} diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/expr_types.yaml b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/expr_types.yaml new file mode 100644 index 000000000..416aad07d --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/expr_types.yaml @@ -0,0 +1,95 @@ +package: expr +imports: + - io + - time + - github.com/cortezaproject/corteza/server/pkg/http + - net/url + +types: + Any: + as: 'interface{}' + + Array: + as: '[]TypedValue' + + Vars: + as: 'map[string]TypedValue' + + Boolean: + as: 'bool' + default: 'false' + comparable: true + customComparator: true + + ID: + as: 'uint64' + default: '0' + comparable: true + + Integer: + as: 'int64' + default: '0' + comparable: true + + UnsignedInteger: + as: 'uint64' + default: '0' + comparable: true + + Float: + as: 'float64' + default: '0' + comparable: true + + String: + as: 'string' + default: '""' + comparable: true + + Bytes: + as: '[]byte' + default: 'nil' + comparable: false + + Handle: + as: 'string' + default: '""' + comparable: true + + DateTime: + as: '*time.Time' + comparable: true + customComparator: true + + Duration: + as: 'time.Duration' + default: '0' + comparable: true + customComparator: true + + KV: + as: 'map[string]string' + assignFn: assignToKV + + KVV: + as: 'map[string][]string' + assignFn: assignToKVV + + Meta: + as: 'map[string]any' + + Reader: + as: 'io.Reader' + + HttpRequest: + as: '*http.Request' + struct: + - { name: 'Method', exprType: 'String', goType: 'string' } + - { name: 'URL', exprType: 'Url', goType: 'url.Url' } + - { name: 'Header', exprType: 'KVV', goType: 'map[string][]string' } + - { name: 'Body', exprType: 'Reader', goType: '*types.BufferedReader' } + - { name: 'Form', exprType: 'KVV', goType: 'map[string][]string' } + - { name: 'PostForm', exprType: 'KVV', goType: 'map[string][]string' } + + Url: + as: '*url.URL' diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/func_arr.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/func_arr.go new file mode 100644 index 000000000..807b4cfcc --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/func_arr.go @@ -0,0 +1,302 @@ +package expr + +import ( + "fmt" + "reflect" + "sort" + "strings" + + "github.com/PaesslerAG/gval" +) + +func ArrayFunctions() []gval.Language { + return []gval.Language{ + gval.Function("push", push), + gval.Function("pop", pop), + gval.Function("shift", shift), + gval.Function("count", count), + gval.Function("has", has), + gval.Function("hasAll", hasAll), + gval.Function("find", find), + gval.Function("sort", sortSlice), + } +} + +// push adds a value to the end of slice, returns copy +func push(arr interface{}, nn ...interface{}) (out interface{}, err error) { + if arr == nil { + // If base is empty, return pushed items directly + return nn, nil + } else if i, is := arr.([]interface{}); is { + // Simple append if we're dealing with []interface{} base + return append(i, nn...), nil + } else if arr, err = toSlice(arr); err != nil { + return + } + + if stv, is := arr.([]TypedValue); is { + // slice of typed values, this will make things easier + for _, n := range nn { + if tv, is := n.(TypedValue); is { + stv = append(stv, tv) + } else { + // wrap unknown types... + stv = append(stv, Must(Typify(n))) + } + } + + return stv, nil + } + + var ( + c = reflect.ValueOf(arr) + nval = reflect.MakeSlice(c.Type(), c.Len()+len(nn), c.Cap()+len(nn)) + ) + + reflect.Copy(nval, c) + + for i, n := range nn { + nt := reflect.ValueOf(n).Type() + it := nval.Index(c.Len() + i).Type() + if nt != it { + return nil, fmt.Errorf("can not push %v to %v slice", nt, it) + } + + nval.Index(c.Len() + i).Set(reflect.ValueOf(n)) + } + + return nval.Interface(), nil +} + +// pop takes the last value in slice, does not modify original +func pop(arr interface{}) (out interface{}, err error) { + if arr, err = toSlice(arr); err != nil { + return + } + + c := reflect.ValueOf(arr) + + if c.Len() == 0 { + return nil, nil + } + + return c.Index(c.Len() - 1).Interface(), nil +} + +// shifts takes the first value in slice, does not modify original +func shift(arr interface{}) (out interface{}, err error) { + if arr, err = toSlice(arr); err != nil { + return + } + + c := reflect.ValueOf(arr) + + if c.Len() == 0 { + return nil, nil + } + + return c.Index(0).Interface(), nil +} + +// count gets the count of occurrences in the first params(can be string, slice) +// If given only one parameter then it returns length as count +func count(arr interface{}, v ...interface{}) (count int, err error) { + typeErr := fmt.Errorf("unexpected type: %T, expecting slice", arr) + arr = UntypedValue(arr) + + if stv, is := arr.([]TypedValue); is { + if len(v) == 0 { + return len(stv), nil + } + + for _, vv := range v { + if occ, err := find(stv, vv); err != nil { + return 0, err + } else if occ != -1 { + count++ + } + } + + return count, nil + } + + var ( + occ int + c = reflect.ValueOf(arr) + ) + + switch c.Kind() { + case reflect.String: + if len(v) == 0 { + return len(c.String()), nil + } + + for _, ww := range v { + count += strings.Count(c.String(), reflect.ValueOf(ww).String()) + } + return + + case reflect.Slice: + if len(v) == 0 { + return c.Len(), nil + } + + for _, vv := range v { + if occ, err = find(arr, vv); err != nil { + return 0, err + } else if occ != -1 { + count++ + } + } + + default: + return 0, typeErr + } + + return +} + +// has finds any occurrence of the values in slice or key in a map +func has(arr interface{}, vv ...interface{}) (b bool, err error) { + arr = UntypedValue(arr) + + if isMap(arr) { + for _, v := range vv { + if reflect.ValueOf(arr).MapIndex(reflect.ValueOf(v)).IsValid() { + return true, nil + } + } + + return + } + + var c int + if c, err = count(arr, vv...); err != nil { + return + } + + return c > 0, nil +} + +// hasAll finds all the occurrences in the slice +func hasAll(arr interface{}, v ...interface{}) (b bool, err error) { + if arr, err = toSlice(arr); err != nil { + return + } + + var c int + if c, err = count(arr, v...); err != nil { + return + } + + return c == len(v), nil +} + +// find takes a value and gets the position in slice +// if no results, returns -1 +func find(arr interface{}, v interface{}) (p int, err error) { + if arr, err = toSlice(arr); err != nil { + return + } + + for p = 0; p < reflect.ValueOf(arr).Len(); p++ { + c := reflect.ValueOf(arr) + + if UntypedValue(c.Index(p).Interface()) == v { + return + } + } + + return -1, nil +} + +// slice slices slices +func slice(arr interface{}, start, end int) interface{} { + arr = UntypedValue(arr) + + v := reflect.ValueOf(arr) + + if start >= v.Len() { + return v.Interface() + } + + if end == -1 || end > v.Len() { + end = v.Len() + } + + return v.Slice(start, end).Interface() +} + +// sortSlice sorts slice +func sortSlice(arr interface{}, desc bool) (out interface{}, err error) { + if arr, err = toSlice(arr); err != nil { + return + } + + // sort slice of native type values + var ( + c = reflect.ValueOf(arr) + v = reflect.MakeSlice(c.Type(), c.Len(), c.Cap()) + vi = v.Interface() + ) + + reflect.Copy(v, c) + + // sortStable sorts the slice x using the provided less + // function, keeping equal elements in their original order + // + // sort the array if error is nil; + // we trap the error(s) in the outer scope from the less function, + // and returning the last error at a time since all error will the same in almost every scenario. + sort.SliceStable(vi, func(i, j int) bool { + if err != nil { + return false + } + + var ( + nVal = v.Index(i) + mVal = v.Index(j) + ) + if desc { + nVal = v.Index(j) + mVal = v.Index(i) + } + + switch getKind(vi) { + case reflect.String: + return nVal.String() < mVal.String() + case reflect.Int, reflect.Int32, reflect.Int64: + return nVal.Int() < mVal.Int() + case reflect.Float32, reflect.Float64: + return nVal.Float() < mVal.Float() + default: + // sort slice of typed values + if stv, is := vi.([]TypedValue); is { + if casted, ok := stv[i].(Comparable); ok { + var cmp int + cmp, err = casted.Compare(stv[j]) + if err != nil { + return false + } + if desc { + return cmp > 0 + } else { + return cmp < 0 + } + } else { + err = fmt.Errorf("cannot compare %s and %s: unknown state", stv[i].Type(), stv[j].Type()) + return false + } + } + err = fmt.Errorf("cannot compare %s and %s: unknown state", getKind(nVal), getKind(mVal)) + return false + } + }) + + // returns error from less function + if err != nil { + return arr, err + } + + return vi, nil +} diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/func_generic.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/func_generic.go new file mode 100644 index 000000000..1e6476a76 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/func_generic.go @@ -0,0 +1,128 @@ +package expr + +import ( + "fmt" + "reflect" + + "github.com/PaesslerAG/gval" + "github.com/cortezaproject/corteza/server/pkg/gvalfnc" +) + +type ( + empty interface { + IsEmpty() bool + } +) + +func GenericFunctions() []gval.Language { + return []gval.Language{ + gval.Function("coalesce", coalesce), + gval.Function("isEmpty", isEmpty), + gval.Function("isNil", isNil), + gval.Function("length", length), + } +} + +func coalesce(aa ...interface{}) interface{} { + for _, a := range aa { + if !isNil(a) { + return a + } + } + + return nil +} + +func length(i interface{}) int { + if isEmpty(i) { + return 0 + } + + switch reflect.TypeOf(i).Kind() { + case reflect.Slice, reflect.Array, reflect.Ptr, reflect.Map, reflect.String: + return reflect.ValueOf(i).Len() + } + + return 0 +} + +func isNil(i interface{}) bool { + return gvalfnc.IsNil(i) +} + +// empty checks values and slices +func isEmpty(i interface{}) bool { + if isNil(i) { + return true + } + + if c, ok := i.(empty); ok { + return c.IsEmpty() + } + + switch reflect.TypeOf(i).Kind() { + case reflect.Slice, reflect.Array, reflect.Map: + return reflect.ValueOf(i).Len() == 0 + } + + return reflect.ValueOf(i).IsZero() +} + +func isInt(v interface{}) bool { + switch getKind(v) { + case reflect.Int, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Int8, reflect.Uint, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uint8: + return true + } + + return false +} + +func isString(v interface{}) bool { + return getKind(v) == reflect.String +} + +func isFloat(v interface{}) bool { + switch getKind(v) { + case reflect.Float32, reflect.Float64: + return true + } + + return false +} + +func isBool(v interface{}) bool { + return getKind(v) == reflect.Bool +} + +func getKind(v interface{}) reflect.Kind { + kind := reflect.TypeOf(v).Kind() + + if isSlice(v) { + kind = reflect.TypeOf(v).Elem().Kind() + + } + + return kind +} + +func isSlice(v interface{}) bool { + return reflect.TypeOf(v).Kind() == reflect.Slice || reflect.TypeOf(v).Kind() == reflect.Array +} + +func isMap(v interface{}) bool { + return reflect.TypeOf(v).Kind() == reflect.Map +} + +// toArray removes expr types (if wrapped) and checks if the variable is slice +// internal only +// +// +func toSlice(vv interface{}) (interface{}, error) { + vv = UntypedValue(vv) + + if !isSlice(vv) { + return nil, fmt.Errorf("unexpected type: %T, expecting slice", vv) + } + + return vv, nil +} diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/func_json.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/func_json.go new file mode 100644 index 000000000..ddfcb86b7 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/func_json.go @@ -0,0 +1,21 @@ +package expr + +import ( + "encoding/json" + "github.com/PaesslerAG/gval" +) + +func JsonFunctions() []gval.Language { + return []gval.Language{ + // TODO: Json decoding, parsing, stringify, JQ, JSONPath + gval.Function("toJSON", toJSON), + } +} + +func toJSON(f interface{}) string { + if _, is := f.(json.Marshaler); !is { + f = UntypedValue(f) + } + b, _ := json.Marshal(f) + return string(b) +} diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/func_num.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/func_num.go new file mode 100644 index 000000000..fde3a357a --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/func_num.go @@ -0,0 +1,150 @@ +package expr + +import ( + "math" + "math/rand" + + "github.com/PaesslerAG/gval" + "github.com/pkg/errors" + "github.com/spf13/cast" +) + +func NumericFunctions() []gval.Language { + return []gval.Language{ + gval.Function("min", min), + gval.Function("max", max), + gval.Function("round", round), + gval.Function("floor", floor), + gval.Function("ceil", ceil), + gval.Function("abs", math.Abs), + gval.Function("log", math.Log10), + gval.Function("pow", math.Pow), + gval.Function("sqrt", math.Sqrt), + gval.Function("sum", sum), + gval.Function("average", average), + gval.Function("random", random), + gval.Function("int", toInt64), + } +} + +func min(aa ...interface{}) (min float64) { + return findMinMax(-1, aa...) +} + +func max(aa ...interface{}) (min float64) { + return findMinMax(1, aa...) +} + +func findMinMax(dir int, aa ...interface{}) (mm float64) { + var ( + set bool + flt float64 + ) + for i := range aa { + switch conv := aa[i].(type) { + case int: + flt = float64(conv) + case int64: + flt = float64(conv) + case uint: + flt = float64(conv) + case uint64: + flt = float64(conv) + case float32: + flt = float64(conv) + case float64: + flt = conv + default: + continue + } + + if !set { + set = true + mm = flt + } else if dir < 0 { + mm = math.Min(mm, flt) + } else if dir > 0 { + mm = math.Max(mm, flt) + } + } + + return mm +} + +func round(f float64, d float64) float64 { + p := math.Pow(10, d) + return math.Round(f*p) / p +} + +func floor(f float64) float64 { + return math.Floor(f) +} + +func ceil(f float64) float64 { + return math.Ceil(f) +} + +func sum(v ...interface{}) float64 { + var sum float64 + + for _, vv := range v { + c, err := CastToFloat(vv) + + if err != nil { + continue + } + + sum += c + } + + return sum +} + +func average(v ...interface{}) float64 { + var i int + var j, sum float64 + + for ; i < len(v); i++ { + c, err := CastToFloat(v[i]) + + if err != nil { + continue + } + + j++ + sum += c + } + + return sum / j +} + +func random(v ...float64) (out float64, err error) { + var ( + from, to float64 + totalArgs = len(v) + ) + + if totalArgs == 0 || totalArgs > 2 { + return 0, errors.Errorf("expecting 1 or 2 parameter, got %d", totalArgs) + } + + if totalArgs > 0 { + if to = v[0]; to < 0 { + return 0, errors.New("unexpected input type of 1st parameter") + } + } + + if totalArgs > 1 { + if to = v[1]; to < 0 { + return 0, errors.New("unexpected input type of 2nd parameter") + } + from = v[0] + } + + out = from + rand.Float64()*(to-from) + return +} + +func toInt64(aa interface{}) (i int64) { + return cast.ToInt64(aa) +} diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/func_str.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/func_str.go new file mode 100644 index 000000000..b0b7040ce --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/func_str.go @@ -0,0 +1,255 @@ +package expr + +import ( + "bytes" + "encoding/base64" + "errors" + "fmt" + "io" + "reflect" + "regexp" + "strings" + + "github.com/spf13/cast" + + "github.com/PaesslerAG/gval" + valid "github.com/asaskevich/govalidator" +) + +func StringFunctions() []gval.Language { + return []gval.Language{ + gval.Function("trim", strings.TrimSpace), + gval.Function("trimLeft", strings.TrimLeft), + gval.Function("trimRight", strings.TrimRight), + gval.Function("toLower", strings.ToLower), + gval.Function("toUpper", strings.ToUpper), + gval.Function("shortest", shortest), + gval.Function("longest", longest), + gval.Function("format", fmt.Sprintf), + gval.Function("title", title), + gval.Function("untitle", untitle), + gvalFunc("repeat", strings.Repeat), + gvalFunc("replace", strings.Replace), + gval.Function("isUrl", valid.IsURL), + gval.Function("isEmail", valid.IsEmail), + gval.Function("split", strings.Split), + gval.Function("join", join), + gval.Function("hasSubstring", hasSubstring), + gvalFunc("substring", substring), + gval.Function("hasPrefix", strings.HasPrefix), + gval.Function("hasSuffix", strings.HasSuffix), + gvalFunc("shorten", shorten), + gval.Function("camelize", camelize), + gval.Function("snakify", snakify), + gval.Function("match", match), + gval.Function("base64encode", base64encode), + } +} + +// gvalFunc cast any nth number of float64 param to int +func gvalFunc(name string, fn interface{}) gval.Language { + return gval.Function(name, func(params ...interface{}) (out interface{}) { + in := make([]reflect.Value, len(params)) + for i, param := range params { + if reflect.TypeOf(param).Kind() == reflect.Float64 { + param = cast.ToInt(param) + } + in[i] = reflect.ValueOf(param) + } + fun := reflect.ValueOf(fn) + res := fun.Call(in) + if len(res) > 0 { + out = cast.ToString(reflect.ValueOf(res[0]).Interface()) + } + return + }) +} + +func shortest(f string, aa ...string) string { + for _, s := range aa { + if len(f) > len(s) { + f = s + } + } + + return f +} + +func longest(f string, aa ...string) string { + for _, s := range aa { + if len(f) < len(s) { + f = s + } + } + + return f +} + +// title works similarly as strings.ToTitle, with the expception +// of uppercasing only the first word in line +func title(s string) string { + split := strings.Split(s, " ") + return fmt.Sprintf("%s %s", strings.Title(split[0]), strings.Join(split[1:], " ")) +} + +// untitle works only on the first word in line +func untitle(s string) string { + split := strings.Split(s, " ") + first := strings.ToLower(split[0][:1]) + split[0][1:] + + return fmt.Sprintf("%s %s", first, strings.Join(split[1:], " ")) +} + +func join(arr interface{}, sep string) (out string, err error) { + if arr == nil { + // If base is empty, nothing to do + return "", nil + } else if i, is := arr.([]string); is { + // If string slice, we are good to go + return strings.Join(i, sep), nil + } else if i, is := arr.([]interface{}); is { + // If slice of interfaces, we can try to cast them + var aux []string + aux, err = CastToStringSlice(i) + if err != nil { + return + } + return strings.Join(aux, sep), nil + } else if arr, err = toSlice(arr); err != nil { + return + } + + // Make an aux string slice so the join operation can use it + stv, is := arr.([]TypedValue) + if !is { + return "", errors.New("could not cast array to string array") + } + + aux := make([]string, len(stv)) + for i, rv := range stv { + aux[i], err = CastToString(rv) + if err != nil { + return + } + } + + return strings.Join(aux, sep), nil +} + +// hasSubstring checks if a substring exists in original string +// use watchCase if need case sensitivity +func hasSubstring(s, substring string, watchCase bool) bool { + if watchCase { + return strings.Contains(s, substring) + } + + return strings.Contains(strings.ToLower(s), strings.ToLower(substring)) +} + +// substring extracts a substring from original string +// specifying end value will not match till end of string +func substring(s string, start, end int) string { + if end == -1 { + end = len(s) + } + + if start >= len(s) { + return "" + } + + end++ + if end > len(s) { + end = len(s) + } + + return s[start:end] +} + +// shorten trims by whole words or only chars by +// the specified amount +func shorten(s, t string, count int) string { + var joined string + + if t == "char" { + if count > len(s) { + return "" + } + + joined = s[:count] + } else { + fields := strings.Fields(s) + + if len(fields) == 0 { + return "" + } + + joined = strings.Join(fields[:count], " ") + } + + reg, err := regexp.Compile("[^a-zA-Z0-9]$") + + if err != nil { + return "" + } + + joined = reg.ReplaceAllString(joined, "") + + return joined + " …" +} + +func camelize(s string) string { + return untitle(strings.Replace(strings.Title(s), " ", "", -1)) +} + +func snakify(s string) string { + return strings.ToLower(strings.Replace(strings.Title(s), " ", "_", -1)) +} + +func base64encode(s interface{}) string { + var ( + buf bytes.Buffer + ) + + switch s.(type) { + case string: + s = []byte(s.(string)) + case []byte: + s = s.([]byte) + case io.Reader: + buf := new(bytes.Buffer) + buf.ReadFrom(s.(io.Reader)) + s = buf.Bytes() + default: + return "" + } + + encoder := base64.NewEncoder(base64.StdEncoding, &buf) + + if _, err := encoder.Write(s.([]byte)); err != nil { + return "" + } + + if err := encoder.Close(); err != nil { + return "" + } + + return buf.String() +} + +func match(s string, regex interface{}) (b bool, err error) { + var ( + r *regexp.Regexp + ) + + switch v := regex.(type) { + case *regexp.Regexp: + r = v + case string: + if r, err = regexp.Compile(v); err != nil { + return + } + } + + b = r.MatchString(s) + return +} diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/func_time.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/func_time.go new file mode 100644 index 000000000..8e5b4b43d --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/func_time.go @@ -0,0 +1,186 @@ +package expr + +import ( + "errors" + "time" + + "github.com/PaesslerAG/gval" + "github.com/cortezaproject/corteza/server/pkg/gvalfnc" +) + +func TimeFunctions() []gval.Language { + return []gval.Language{ + gval.Function("earliest", earliest), + gval.Function("latest", latest), + gval.Function("parseISOTime", parseISOTime), + gval.Function("modTime", modTime), + gval.Function("modDate", modDate), + gval.Function("modWeek", modWeek), + gval.Function("modMonth", modMonth), + gval.Function("modYear", modYear), + gval.Function("parseDuration", time.ParseDuration), + gval.Function("strftime", gvalfnc.StrfTime), + gval.Function("isLeapYear", isLeapYear), + gval.Function("now", now), + gval.Function("isWeekDay", isWeekDay), + gval.Function("sub", sub), + } +} + +func now() time.Time { + return gvalfnc.Now() +} + +func isLeapYear(base interface{}) (bool, error) { + t, _, err := gvalfnc.PrepMod(base, 0) + if err != nil { + return false, err + } + return time.Date(t.Year(), time.December, 31, 0, 0, 0, 0, time.Local).YearDay() == 366, nil +} + +func isLeapDay(base interface{}) (bool, error) { + t, _, err := gvalfnc.PrepMod(base, 0) + if err != nil { + return false, err + } + return t.Day() == 29 && t.Month() == 2, nil +} + +func isWeekDay(base interface{}) (bool, error) { + t, _, err := gvalfnc.PrepMod(base, 0) + if err != nil { + return false, err + } + return time.Sunday < t.Weekday() && t.Weekday() < time.Saturday, nil +} + +func earliest(f interface{}, aa ...interface{}) (*time.Time, error) { + t, _, err := gvalfnc.PrepMod(f, 0) + if err != nil { + return nil, err + } + for _, a := range aa { + s, _, err := gvalfnc.PrepMod(a, 0) + if err != nil { + return nil, err + } + if (*s).Before(*t) { + t = s + } + } + + return t, nil +} + +func latest(f interface{}, aa ...interface{}) (*time.Time, error) { + t, _, err := gvalfnc.PrepMod(f, 0) + if err != nil { + return nil, err + } + for _, a := range aa { + s, _, err := gvalfnc.PrepMod(a, 0) + if err != nil { + return nil, err + } + if s.After(*t) { + t = s + } + } + + return t, nil +} + +func parseISOTime(s string) (time.Time, error) { + return time.Parse(time.RFC3339, s) +} + +func modTime(base interface{}, mod interface{}) (*time.Time, error) { + var ( + err error + d time.Duration + t *time.Time + ) + + t, _, err = gvalfnc.PrepMod(base, 0) + if err != nil { + return nil, err + } + + switch c := mod.(type) { + case time.Duration: + d = c + case string: + d, err = time.ParseDuration(c) + } + + if err != nil { + return t, err + } + + tmp := t.Add(d) + return &tmp, nil +} + +func modDate(base interface{}, mod interface{}) (*time.Time, error) { + t, m, err := gvalfnc.PrepMod(base, mod) + if err != nil { + return nil, err + } + + tmp := t.AddDate(0, 0, m) + return &tmp, nil +} + +func modWeek(base interface{}, mod interface{}) (*time.Time, error) { + t, m, err := gvalfnc.PrepMod(base, mod) + if err != nil { + return nil, err + } + + tmp := t.AddDate(0, 0, 7*m) + return &tmp, nil +} + +func modMonth(base interface{}, mod interface{}) (*time.Time, error) { + t, m, err := gvalfnc.PrepMod(base, mod) + if err != nil { + return nil, err + } + + tmp := t.AddDate(0, m, 0) + return &tmp, nil +} + +func modYear(base interface{}, mod interface{}) (*time.Time, error) { + t, m, err := gvalfnc.PrepMod(base, mod) + if err != nil { + return nil, err + } + + tmp := t.AddDate(m, 0, 0) + return &tmp, nil +} + +// sub returns difference between two date into milliseconds +func sub(from interface{}, to interface{}) (out int64, err error) { + t1, _, err := gvalfnc.PrepMod(from, 0) + if err != nil { + return + } + + t2, _, err := gvalfnc.PrepMod(to, 0) + if err != nil { + return + } + + var duration time.Duration + + if t1.After(*t2) { + duration = t1.Sub(*t2) + } else { + return -1, errors.New("expecting 2nd input to be less than 1st input") + } + + return duration.Milliseconds(), nil +} diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/parser.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/parser.go new file mode 100644 index 000000000..a9345cefc --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/parser.go @@ -0,0 +1,117 @@ +package expr + +import ( + "context" + "fmt" + + "github.com/PaesslerAG/gval" +) + +type ( + Parsable interface { + Parse(string) (Evaluable, error) + ParseEvaluators(ee ...Evaluator) error + } + + Evaluable interface { + Eval(context.Context, *Vars) (interface{}, error) + Test(context.Context, *Vars) (bool, error) + } + + Evaluator interface { + GetExpr() string + SetEval(eval Evaluable) + } + + gvalParser struct { + lang gval.Language + } + + gvalEval struct { + evaluable gval.Evaluable + } +) + +var ( + parser gval.Language +) + +func init() { + parser = gval.Full(AllFunctions()...) +} + +// Parser returns global parser instance +func Parser() gval.Language { + return parser +} + +func NewParser() Parsable { + return NewGvalParser() +} + +func NewGvalParser() *gvalParser { + return &gvalParser{lang: Parser()} +} + +func (p *gvalParser) Parse(expr string) (Evaluable, error) { + var ( + ge = &gvalEval{} + err error + ) + + if ge.evaluable, err = p.lang.NewEvaluable(expr); err != nil { + return nil, err + } + + return ge, err +} + +func (p *gvalParser) ParseEvaluators(ee ...Evaluator) error { + for _, e := range ee { + evaluable, err := p.Parse(e.GetExpr()) + if err != nil { + return err + } + + e.SetEval(evaluable) + } + + return nil +} + +func (e *gvalEval) Eval(ctx context.Context, scope *Vars) (interface{}, error) { + return e.evaluable(ctx, scope) +} + +func (e *gvalEval) Test(ctx context.Context, scope *Vars) (bool, error) { + r, err := e.evaluable(ctx, scope) + if err != nil { + return false, err + } + + return !isEmpty(r), nil +} + +func AllFunctions() []gval.Language { + ff := make([]gval.Language, 0, 100) + + ff = append(ff, GenericFunctions()...) + ff = append(ff, StringFunctions()...) + ff = append(ff, JsonFunctions()...) + ff = append(ff, NumericFunctions()...) + ff = append(ff, TimeFunctions()...) + ff = append(ff, ArrayFunctions()...) + ff = append(ff, KvFunctions()...) + + return ff +} + +// utility function for examples +func eval(e string, p interface{}) { + result, err := Parser().Evaluate(e, p) + if err != nil { + fmt.Printf("error: %v", err) + } else { + fmt.Printf("%+v", UntypedValue(result)) + } +} diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/values.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/values.go new file mode 100644 index 000000000..4b900cabc --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/values.go @@ -0,0 +1,75 @@ +package expr + +import ( + "reflect" +) + +type ( + Type interface { + Type() string + Cast(interface{}) (TypedValue, error) + } + + TypedValue interface { + Type + Assigner + Get() interface{} + } + + Comparable interface { + Compare(TypedValue) (int, error) + } + + typedValueWrap struct { + Value interface{} `json:"@value"` + Type string `json:"@type"` + } + + Assigner interface { + Assign(interface{}) error + } + + FieldSelector interface { + Has(k string) bool + Select(k string) (TypedValue, error) + } + + FieldAssigner interface { + AssignFieldValue(string, TypedValue) error + } + + DeepFieldAssigner interface { + AssignFieldValue([]string, TypedValue) error + } + + Iterator interface { + Each(func(k string, v TypedValue) error) error + } + + TypeValueDecoder interface { + Decode(dst reflect.Value) error + } + + Dict interface { + Dict() map[string]interface{} + } + + Slice interface { + Slice() []interface{} + } +) + +func UntypedValue(val interface{}) interface{} { + if tv, is := val.(TypedValue); is { + return tv.Get() + } + + return val +} + +func Must(v TypedValue, err error) TypedValue { + if err != nil { + panic(err) + } + return v +} diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/vars.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/vars.go new file mode 100644 index 000000000..dab9658fb --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/expr/vars.go @@ -0,0 +1,610 @@ +package expr + +import ( + "context" + "database/sql/driver" + "encoding/json" + "fmt" + "github.com/cortezaproject/corteza/server/pkg/sql" + "reflect" + "strings" + + "github.com/PaesslerAG/gval" + "github.com/cortezaproject/corteza/server/pkg/errors" + "github.com/spf13/cast" +) + +func (t *Vars) Len() (out int) { + if t == nil { + return + } + + t.mux.RLock() + defer t.mux.RUnlock() + + return len(t.value) +} + +func (t *Vars) Select(k string) (out TypedValue, err error) { + if t == nil { + return + } + + t.mux.RLock() + defer t.mux.RUnlock() + + if v, is := t.value[k]; is { + return v, nil + } else { + return nil, errors.NotFound("no such key '%s'", k) + } +} + +func (t *Vars) AssignFieldValue(key string, val TypedValue) (err error) { + if t == nil { + return + } + + t.mux.Lock() + defer t.mux.Unlock() + + if t.value == nil { + t.value = make(map[string]TypedValue) + } + + t.value[key] = val + + return +} + +func (t *Vars) ResolveTypes(res func(typ string) Type) (err error) { + if t == nil { + return + } + + t.mux.RLock() + defer t.mux.RUnlock() + + for k, v := range t.value { + if u, is := v.(*Unresolved); is { + if res(u.Type()) == nil { + return errors.NotFound("failed to resolve unknown or unregistered type %q on %q", u.Type(), k) + } + + t.value[k], err = res(u.Type()).Cast(t.value[k]) + if err != nil { + return fmt.Errorf("failed to resolve: %w", err) + } + } + + if r, is := t.value[k].(resolvableType); is { + if err = r.ResolveTypes(res); err != nil { + return + } + } + } + + return +} + +// Merge combines the given Vars(es) into Vars +// NOTE: It will return CLONE of the original Vars, if it's called without any parameters +func (t *Vars) Merge(nn ...Iterator) (out TypedValue, err error) { + return t.MustMerge(nn...), nil +} + +// MustMerge returns Vars after merging the given Vars(es) into it +func (t *Vars) MustMerge(nn ...Iterator) *Vars { + if t != nil { + t.mux.RLock() + defer t.mux.RUnlock() + + nn = append([]Iterator{t}, nn...) + } + + var ( + out = &Vars{value: make(map[string]TypedValue)} + ) + + for _, i := range nn { + _ = i.Each(func(k string, v TypedValue) error { + out.value[k] = v + return nil + }) + } + + return out +} + +// Copy takes base variables and copies all to dst +func (t *Vars) Copy(dst *Vars, kk ...string) { + if t == nil { + return + } + + t.mux.RLock() + defer t.mux.RUnlock() + + if t == nil { + return + } + + if dst.value == nil { + dst.value = make(map[string]TypedValue) + } + + for _, k := range kk { + dst.value[k] = t.value[k] + } +} + +// Has returns true key is present +func (t *Vars) Has(key string) bool { + return t.HasAll(key) +} + +// HasAll returns true if all keys are present +func (t *Vars) HasAll(key string, kk ...string) bool { + if t == nil { + return false + } + + t.mux.RLock() + defer t.mux.RUnlock() + + if t == nil { + return false + } + + for _, key = range append([]string{key}, kk...) { + if _, has := t.value[key]; !has { + return false + } + } + + return true +} + +// HasAny returns true if all keys are present +func (t *Vars) HasAny(key string, kk ...string) bool { + if t == nil { + return false + } + + for _, key = range append([]string{key}, kk...) { + if _, has := t.value[key]; has { + return true + } + } + + return false +} + +var _ gval.Selector = &Vars{} + +func (t *Vars) Dict() (out map[string]interface{}) { + if t == nil { + return + } + + t.mux.RLock() + defer t.mux.RUnlock() + + out = make(map[string]interface{}) + for k, v := range t.value { + switch v := v.(type) { + case Dict: + out[k] = v.Dict() + + case Slice: + out[k] = v.Slice() + + case TypedValue: + tmp := v.Get() + if d, is := tmp.(Dict); is { + out[k] = d.Dict() + } else { + out[k] = tmp + } + + default: + out[k] = v + } + } + + return +} + +func (t *Vars) Decode(dst interface{}) (err error) { + if t == nil { + return nil + } + + t.mux.RLock() + defer t.mux.RUnlock() + + dstRef := reflect.ValueOf(dst) + + if dstRef.Kind() != reflect.Ptr { + return fmt.Errorf("expecting a pointer, not a value") + } + + if dstRef.IsNil() { + return fmt.Errorf("nil pointer passed") + } + + dstRef = dstRef.Elem() + + for i := 0; i < dstRef.NumField(); i++ { + var ( + value TypedValue + has bool + ftyp = dstRef.Type().Field(i) + ) + + keyName := ftyp.Tag.Get("var") + if keyName == "" { + keyName = strings.ToLower(ftyp.Name[:1]) + ftyp.Name[1:] + } + + value, has = t.value[keyName] + if !has { + continue + } + + if tvd, is := value.(TypeValueDecoder); is { + if err = tvd.Decode(dstRef.Field(i)); err != nil { + return + } + } else if err = decode(dstRef.Field(i), value); err != nil { + return fmt.Errorf("failed to decode value to field %s: %w", ftyp.Name, err) + } + } + + return +} + +func (t *Vars) Scan(src any) error { return sql.ParseJSON(src, t) } + +func (t *Vars) Value() (driver.Value, error) { + if t != nil { + t.mux.RLock() + defer t.mux.RUnlock() + } + + return json.Marshal(t) +} + +func (t *Vars) SelectGVal(_ context.Context, k string) (out interface{}, err error) { + if t == nil { + return + } + + t.mux.RLock() + defer t.mux.RUnlock() + + out, err = t.Select(k) + switch c := out.(type) { + case gval.Selector: + return c, err + default: + return UntypedValue(out), err + } +} + +// UnmarshalJSON unmarshal JSON value into Vars +func (t *Vars) UnmarshalJSON(in []byte) (err error) { + if t == nil { + return + } + + t.mux.Lock() + defer t.mux.Unlock() + + var ( + aux = make(map[string]*typedValueWrap) + ) + + if t.value == nil { + t.value = make(map[string]TypedValue) + } + + if len(in) == 0 { + return nil + } + + if err = json.Unmarshal(in, &aux); err != nil { + return + } + + for k, v := range aux { + if t.value[k], err = NewUnresolved(v.Type, v.Value); err != nil { + return + } + } + + return +} + +func (t *Vars) Each(fn func(k string, v TypedValue) error) (err error) { + if t == nil { + return nil + } + + t.mux.RLock() + defer t.mux.RUnlock() + + if t.value == nil { + return + } + + for k, v := range t.value { + if err = fn(k, v); err != nil { + return + } + } + + return +} + +// Set or update the specific key value in Vars +func (t *Vars) Set(k string, v interface{}) (err error) { + if t == nil { + return + } + + t.mux.RLock() + defer t.mux.RUnlock() + + if t.value == nil { + t.value = make(map[string]TypedValue) + } + + t.value[k], err = Typify(v) + return +} + +// MarshalJSON returns JSON encoding of expression +func (t *Vars) MarshalJSON() (out []byte, err error) { + if t == nil { + return + } + + t.mux.RLock() + defer t.mux.RUnlock() + + aux := make(map[string]*typedValueWrap) + for k, v := range t.value { + if v == nil { + continue + } + + aux[k] = &typedValueWrap{Type: v.Type()} + + if _, is := v.(json.Marshaler); is { + aux[k].Value = v + } else { + aux[k].Value = v.Get() + } + } + + return json.Marshal(aux) +} + +func decode(dst reflect.Value, src TypedValue) (err error) { + defer func() { + r := recover() + if r == nil { + return + } + + switch r := r.(type) { + case error: + err = r + default: + err = fmt.Errorf("%v", r) + } + }() + + if dst.Kind() == reflect.Interface && reflect.ValueOf(src).Type().Implements(dst.Type()) { + dst.Set(reflect.ValueOf(src)) + return + } + + if reflect.ValueOf(src).Type().ConvertibleTo(dst.Type()) { + dst.Set(reflect.ValueOf(src)) + return + } + + raw := UntypedValue(src) + // Optimistically try to decode source to destination by comparing (internal) value type for destination + if reflect.ValueOf(raw).Type().ConvertibleTo(dst.Type()) { + dst.Set(reflect.ValueOf(raw)) + return + } + + var ( + vBool bool + vInt64 int64 + vUint64 uint64 + vFloat64 float64 + vString string + ) + + switch dst.Kind() { + case reflect.Bool: + if vBool, err = cast.ToBoolE(raw); err == nil { + dst.SetBool(vBool) + } + + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + if vInt64, err = cast.ToInt64E(raw); err == nil { + dst.SetInt(vInt64) + } + + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: + if vUint64, err = cast.ToUint64E(raw); err == nil { + dst.SetUint(vUint64) + } + + case reflect.Float32, reflect.Float64: + if vFloat64, err = cast.ToFloat64E(raw); err == nil { + dst.SetFloat(vFloat64) + } + + case reflect.String: + if vString, err = cast.ToStringE(raw); err == nil { + dst.SetString(vString) + } + + case reflect.Map: + dst.Set(reflect.ValueOf(src.Get())) + + //case reflect.Interface: + // dst.Set(reflect.ValueOf(raw)) + + default: + return fmt.Errorf("failed to cast %T to %s", raw, dst.Kind()) + } + + if err != nil { + return fmt.Errorf("failed to cast %T to %s: %w", raw, dst.Kind(), err) + } + + return nil +} + +func CastToMeta(val interface{}) (out map[string]any, err error) { + val = UntypedValue(val) + + if val == nil { + return make(map[string]any), nil + } + + switch c := val.(type) { + case *Vars: + c.mux.RLock() + defer c.mux.RUnlock() + + out = make(map[string]any) + for k, v := range c.value { + out[k] = v.Get() + } + + return + case map[string]string: + out = make(map[string]any) + for k, v := range c { + out[k] = v + } + + return + case map[string][]string: + out = make(map[string]any) + for k, v := range c { + out[k] = v + } + + return + case KV: + out = make(map[string]any) + for k, v := range c.value { + out[k] = v + } + + return + case KVV: + out = make(map[string]any) + for k, v := range c.value { + out[k] = v + } + + return + case map[string]any: + return c, nil + } + + return nil, fmt.Errorf("unable to cast type %T to %T", val, out) +} +func CastToVars(val interface{}) (out map[string]TypedValue, err error) { + val = UntypedValue(val) + + if val == nil { + return make(map[string]TypedValue), nil + } + + switch c := val.(type) { + case *Vars: + c.mux.RLock() + defer c.mux.RUnlock() + + return c.value, nil + case map[string]TypedValue: + return c, nil + case map[string]interface{}: + out = make(map[string]TypedValue) + for k, v := range c { + out[k], err = Typify(v) + if err != nil { + return + } + } + + return + } + + return nil, fmt.Errorf("unable to cast type %T to %T", val, out) +} + +// Filter take keys returns Vars with only those key value pair +func (t *Vars) Filter(keys ...string) (out TypedValue, err error) { + if t == nil { + return + } + + t.mux.RLock() + defer t.mux.RUnlock() + + if t.value == nil { + return + } + vars := EmptyVars() + + for _, k := range keys { + _, has := t.value[k] + if has { + vars.value[k] = t.value[k] + } + } + + return vars, nil +} + +// Delete take keys returns Vars without those key value pair +func (t *Vars) Delete(keys ...string) (out TypedValue, err error) { + if t == nil { + return + } + + t.mux.RLock() + defer t.mux.RUnlock() + + if t.value == nil { + return + } + + // get cloned Vars + out, err = t.Merge() + if err != nil { + return + } + + vars := out.(*Vars) + + // Delete key from t.value if exist + for _, k := range keys { + delete(vars.value, k) + } + + return vars, nil +} diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/filter/filter.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/filter/filter.go new file mode 100644 index 000000000..83e2d4f06 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/filter/filter.go @@ -0,0 +1,148 @@ +package filter + +import "github.com/cortezaproject/corteza/server/pkg/ql" + +type ( + filterOpt func(*filter) + + filter struct { + constaints map[string][]any + stateConditions map[string]State + metaConditions map[string]any + expression string + expressionParsed *ql.ASTNode + orderBy SortExprSet + limit uint + cursor *PagingCursor + } + + Filter interface { + // Constraints returns map of attribute idents and values + // used for structured filtering ({a1: [v1], a2: [v2, v3]} => "a1 = v1 AND a2 = (v2,v4)") + Constraints() map[string][]any + + // StateConstraints returns map of attribute idents and states + // used for structured filtering ({a1: s1, a2: s2} => "a1 = s1 AND a2 = s2") + StateConstraints() map[string]State + + // MetaConstraints returns meta constraints + MetaConstraints() map[string]any + + // Expression returns string, parseable by ql package + Expression() string + + // OrderBy one or more fields + OrderBy() SortExprSet + + // Limit amount of returned results + Limit() uint + + // Cursor from the last fetch + Cursor() *PagingCursor + } +) + +func Generic(oo ...filterOpt) *filter { + f := &filter{} + + for _, o := range oo { + o(f) + } + + return f +} + +// WithConstraint sets single constraint to filter +func WithConstraint(k string, v any) filterOpt { + return func(f *filter) { + if f.constaints == nil { + f.constaints = make(map[string][]any) + } + + f.constaints[k] = append(f.constaints[k], v) + } +} + +// WithConstraints set multiple constraints to filter +func WithConstraints(c map[string][]any) filterOpt { + return func(f *filter) { + f.constaints = c + } +} + +// WithStateConstraint sets single state constraint to filter +func WithStateConstraint(k string, s State) filterOpt { + return func(f *filter) { + if f.stateConditions == nil { + f.stateConditions = make(map[string]State) + } + + f.stateConditions[k] = s + } +} + +// WithStateConstraints sets multiple state constraints to filter +func WithStateConstraints(sc map[string]State) filterOpt { + return func(f *filter) { + f.stateConditions = sc + } +} + +// WithMetaConstraints sets multiple state constraints to filter +func WithMetaConstraints(mc map[string]any) filterOpt { + return func(f *filter) { + f.metaConditions = mc + } +} + +// WithExpression sets expression to filter +func WithExpression(e string) filterOpt { + return func(f *filter) { + f.expression = e + } +} + +// WithExpressionParsed sets parsed expression to filter +func WithExpressionParsed(e *ql.ASTNode) filterOpt { + return func(f *filter) { + f.expressionParsed = e + } +} + +// WithOrderBy sets order by expression +func WithOrderBy(o SortExprSet) filterOpt { + return func(f *filter) { + f.orderBy = o + } +} + +// WithLimit sets limit to filter +func WithLimit(l uint) filterOpt { + return func(f *filter) { + f.limit = l + } +} + +// WithCursor sets cursor to filter +func WithCursor(p *PagingCursor) filterOpt { + return func(f *filter) { + f.cursor = p + } +} + +func (f *filter) With(oo ...filterOpt) *filter { + for _, o := range oo { + o(f) + } + + return f +} + +func (f *filter) Constraints() map[string][]any { return f.constaints } +func (f *filter) StateConstraints() map[string]State { return f.stateConditions } +func (f *filter) MetaConstraints() map[string]any { return f.metaConditions } +func (f *filter) Expression() string { return f.expression } +func (f *filter) ExpressionParsed() *ql.ASTNode { return f.expressionParsed } +func (f *filter) OrderBy() SortExprSet { return f.orderBy } +func (f *filter) Limit() uint { return f.limit } +func (f *filter) Cursor() *PagingCursor { return f.cursor } diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/filter/pagination.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/filter/pagination.go new file mode 100644 index 000000000..960cdc8f7 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/filter/pagination.go @@ -0,0 +1,572 @@ +package filter + +import ( + "encoding/base64" + "encoding/json" + "fmt" + + "github.com/cortezaproject/corteza/server/pkg/expr" + "github.com/cortezaproject/corteza/server/pkg/ql" + "github.com/modern-go/reflect2" +) + +type ( + // Paging is a helper struct that should be embedded in filter types + // to help with the paging + Paging struct { + // How many items per fetch do we want + Limit uint `json:"limit,omitempty"` + + // PeakNextPage bool `json:"peakNextPage,omitempty"` + + // Opaque pointer to 1st item on page + // read-only + PageCursor *PagingCursor `json:"cursor,omitempty"` + + // Opaque cursor that points to the first item on the next page + // read-only + NextPage *PagingCursor `json:"nextPage,omitempty"` + + // Opaque cursor that points to the first item on the previous page + // value of {cursor} will be copied here + // read-only + PrevPage *PagingCursor `json:"prevPage,omitempty"` + + IncPageNavigation bool `json:"incPageNavigation,omitempty"` + IncTotal bool `json:"incTotal,omitempty"` + + PageNavigation []*Page `json:"pageNavigation,omitempty"` + Total uint `json:"total,omitempty"` + } + + Page struct { + Page uint `json:"page"` + Count uint `json:"items"` + Cursor *PagingCursor `json:"cursor"` + } + + PagingCursor struct { + keys []string + values []interface{} + desc []bool + + // sort in desc order + ROrder bool + + // use < op instead of > + LThen bool + } + + pagingCursorValue struct { + v interface{} + } + + // copy of the DAL valueGetter so we don't need a reference to pkg/dal + valueGetter interface { + GetValue(string, uint) (any, error) + CountValues() map[string]uint + } +) + +var ( + ErrIncompatibleSort = fmt.Errorf("sort incompatible with cursor; send empty sort") +) + +func NewPaging(limit uint, cursor string) (p Paging, err error) { + p = Paging{Limit: limit} + if p.PageCursor, err = parseCursor(cursor); err != nil { + return + } + + return +} + +func (p *Paging) GetLimit() uint { + return p.Limit +} + +func (p *Paging) Clone() *Paging { + if p == nil { + return nil + } + + return &Paging{ + Limit: p.Limit, + PageCursor: p.PageCursor, + NextPage: p.NextPage, + PrevPage: p.PrevPage, + IncPageNavigation: p.IncPageNavigation, + IncTotal: p.IncTotal, + PageNavigation: p.PageNavigation, + Total: p.Total, + } +} + +func (p *PagingCursor) Walk(fn func(string, interface{}, bool)) { + for i, key := range p.keys { + fn(key, p.values[i], p.desc[i]) + } +} + +func (p *PagingCursor) Set(k string, v interface{}, d bool) { + for i, key := range p.keys { + if key == k { + p.values[i] = v + return + } + } + + p.keys = append(p.keys, k) + p.values = append(p.values, v) + p.desc = append(p.desc, d) +} + +func (p *PagingCursor) Keys() []string { + return p.keys +} + +func (p *PagingCursor) Values() []interface{} { + return p.values +} + +func (p *PagingCursor) IsLThen() bool { + return p.LThen +} + +func (p *PagingCursor) Desc() []bool { + return p.desc +} + +func (p *PagingCursor) IsROrder() bool { + return p.ROrder +} + +// Stirng to implement Stringer and to get human-readable representation of the cursor +func (p *PagingCursor) String() string { + + var o = "<" + + if p == nil { + o += "nil" + } else { + for i, key := range p.keys { + o += fmt.Sprintf("%s: %v", key, p.values[i]) + if p.desc[i] { + o += " DESC" + } + o += ", " + } + + if p.ROrder { + o += "[REV" + } else { + o += "[FWD" + } + + if p.LThen { + o += ",<]" + } else { + o += ",>]" + } + } + + return o + ">" +} + +// MarshalJSON serializes cursor struct as JSON and encodes it as base64 + adds quotes to be treated as JSON string +func (p *PagingCursor) MarshalJSON() ([]byte, error) { + buf, err := json.Marshal(struct { + K []string + V []interface{} + D []bool + R bool + LT bool + }{ + p.keys, + p.values, + p.desc, + p.ROrder, + p.LThen, + }) + + if err != nil { + return nil, err + } + + std := base64.StdEncoding + dbuf := make([]byte, std.EncodedLen(len(buf))) + std.Encode(dbuf, buf) + + return append([]byte{'"'}, append(dbuf, '"')...), nil +} + +func (p *PagingCursor) Encode() string { + b, _ := p.MarshalJSON() + return string(b) +} + +func (p *PagingCursor) UnmarshalJSON(in []byte) error { + var ( + aux struct { + K []string + V []pagingCursorValue + D []bool + R bool + LT bool + } + + err error + ) + + // Decode the the string if it's not a JSON + if in[0] != byte('{') { + s := string(in) + if s[0] == '"' { + s = s[1 : len(s)-1] + } + in, err = base64.StdEncoding.DecodeString(s) + if err != nil { + return err + } + } + + if err := json.Unmarshal(in, &aux); err != nil { + return err + } + + p.keys = aux.K + p.desc = aux.D + p.ROrder = aux.R + p.LThen = aux.LT + + // json.Unmarshal treats uint64 in values ([]interface{}) as float64 and we don't like that. + p.values = make([]interface{}, len(aux.V)) + for i, v := range aux.V { + p.values[i] = v.v + } + + return nil +} + +func (p *PagingCursor) Decode(cursor string) error { + b, err := base64.StdEncoding.DecodeString(cursor) + if err != nil { + return err + } + + err = p.UnmarshalJSON(b) + if err != nil { + return err + } + + return err +} + +// Sort returns: +// - sort if cursor is nil +// - sort from cursor when sort is empty +// - sort from cursor when sort is compatible with cursor +// - error if sort & cursor are incompatible +func (p *PagingCursor) Sort(sort SortExprSet) (SortExprSet, error) { + if p == nil { + return sort, nil + } + + if len(sort) == 0 { + // sort empty, create it from cursor + for k := range p.keys { + sort = append(sort, &SortExpr{ + Column: p.keys[k], + Descending: p.desc[k], + }) + } + return sort, nil + } + + // make sure there are at least as many keys in the sort as they + // are in the cursor + if len(p.keys) < len(sort) { + return nil, ErrIncompatibleSort + } + + // make sure keys from sort match the ones from cursor + for k := range sort { + if !(p.keys[k] == sort[k].Column && p.desc[k] == sort[k].Descending) { + return nil, ErrIncompatibleSort + } + } + + return sort, nil +} + +// ToAST converts the given PagingCursor to a corresponding AST tree +// +// The method should be used as the base for generating filtering expressions +// when working with databases, DAL reports, ... +// +// @todo discuss this one +func (cur *PagingCursor) ToAST(identLookup func(i string) (string, error), castFn func(i string, val any) (expr.TypedValue, error)) (out *ql.ASTNode, err error) { + var ( + cc = cur.Keys() + vv = cur.Values() + + value expr.TypedValue + + ident string + + ltOp = map[bool]string{ + true: "lt", + false: "gt", + } + + isValueNull = func(i int, neg bool) expr.TypedValue { + if (reflect2.IsNil(vv[i]) && !neg) || (!reflect2.IsNil(vv[i]) && neg) { + return expr.Must(expr.NewBoolean(true)) + } + return expr.Must(expr.NewBoolean(false)) + } + ) + + _ = value + + if len(cc) == 0 { + return + } + + // going from the last key/column to the 1st one + for i := len(cc) - 1; i >= 0; i-- { + if identLookup != nil { + // Get the key context so we know how to format fields and format typecasts + ident, err = identLookup(cc[i]) + if err != nil { + return + } + } else { + ident = cc[i] + } + + if castFn == nil { + value, err = expr.Typify(vv[i]) + } else { + value, err = castFn(cc[i], vv[i]) + } + if err != nil { + return + } + + // We need to cut off the values that are before the cursor (when ascending) + // and vice-versa for descending. + lt := cur.Desc()[i] + if cur.IsROrder() { + lt = !lt + } + + op := ltOp[lt] + + //// Typecast the value so comparison can work properly + + // Either BOTH (field and value) are NULL or field is grater-then value + base := &ql.ASTNode{ + Ref: "group", + Args: ql.ASTNodeSet{ + &ql.ASTNode{ + Ref: "or", + Args: ql.ASTNodeSet{ + &ql.ASTNode{ + Ref: "group", + Args: ql.ASTNodeSet{ + &ql.ASTNode{ + Ref: "and", + Args: ql.ASTNodeSet{ + &ql.ASTNode{ + Ref: "nnull", + Args: ql.ASTNodeSet{ + &ql.ASTNode{ + Symbol: ident, + }, + }, + }, + &ql.ASTNode{ + Value: ql.WrapValue(isValueNull(i, false)), + }, + }, + }, + }, + }, + &ql.ASTNode{ + Ref: op, + Args: ql.ASTNodeSet{{ + Symbol: ident, + }, { + Value: ql.WrapValue(value), + }}, + }, + }, + }, + }, + } + + if out == nil { + out = base + } else { + out = &ql.ASTNode{ + Ref: "group", + Args: ql.ASTNodeSet{ + &ql.ASTNode{ + Ref: "or", + Args: ql.ASTNodeSet{ + base, + &ql.ASTNode{ + Ref: "group", + Args: ql.ASTNodeSet{ + &ql.ASTNode{ + Ref: "and", + Args: ql.ASTNodeSet{ + &ql.ASTNode{ + Ref: "group", + Args: ql.ASTNodeSet{ + &ql.ASTNode{ + Ref: "or", + Args: ql.ASTNodeSet{ + &ql.ASTNode{ + Ref: "and", + Args: ql.ASTNodeSet{ + &ql.ASTNode{ + Ref: "null", + Args: ql.ASTNodeSet{ + &ql.ASTNode{ + Symbol: ident, + }, + }, + }, + &ql.ASTNode{ + Value: ql.WrapValue(isValueNull(i, false)), + }, + }, + }, + + &ql.ASTNode{ + Ref: "eq", + Args: ql.ASTNodeSet{{ + Symbol: ident, + }, { + Value: ql.WrapValue(value), + }}, + }, + }, + }, + }, + }, + out, + }, + }, + }, + }, + }, + }, + }, + } + + } + } + + return +} + +// PagingCursorFrom constructs a new paging cursor for the given valueGetter +func PagingCursorFrom(ss SortExprSet, v valueGetter, primaries ...string) (_ *PagingCursor, err error) { + var ( + cur = &PagingCursor{LThen: ss.Reversed()} + pkUsed = make(map[string]bool) + pkIndex = make(map[string]bool) + + value any + ) + + // Index all of the primary keys for easier code + for _, a := range primaries { + pkIndex[a] = true + } + + if len(pkIndex) == 0 { + err = fmt.Errorf("can not construct cursor without primary key attributes") + return + } + + for _, s := range ss { + if ok := pkIndex[s.Column]; ok { + pkUsed[s.Column] = true + } + + // @todo multi values? + value, err = v.GetValue(s.Column, 0) + if err != nil { + return + } + + cur.Set(s.Column, value, s.Descending) + } + + // Make sure the rest of the unused primary keys are applied + if len(pkUsed) != len(pkIndex) { + for _, ident := range primaries { + if _, ok := pkUsed[ident]; ok { + continue + } + + value, err = v.GetValue(ident, 0) + if err != nil { + return + } + + cur.Set(ident, value, false) + } + } + + return cur, nil +} + +func parseCursor(in string) (p *PagingCursor, err error) { + if len(in) == 0 { + return nil, nil + } + + var buf []byte + if buf, err = base64.StdEncoding.DecodeString(in); err != nil { + return nil, fmt.Errorf("could not decode cursor: %w", err) + } + + p = &PagingCursor{} + if err = p.UnmarshalJSON(buf); err != nil { + return nil, fmt.Errorf("could not decode cursor: %w", err) + } + + return p, nil +} + +// Making sure uint64 other int* values are properly unmarshaled +func (v *pagingCursorValue) UnmarshalJSON(in []byte) (err error) { + var ( + u uint64 + i int64 + ) + + if string(in) == "null" { + // if we do not do this we risk conversion to int(0) + v.v = nil + return + } + + if err = json.Unmarshal(in, &u); err == nil { + // handle big integers properly + v.v = u + return + } + + if err = json.Unmarshal(in, &i); err == nil { + v.v = i + return + } + + return json.Unmarshal(in, &v.v) +} diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/filter/sorting.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/filter/sorting.go new file mode 100644 index 000000000..34e440e38 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/filter/sorting.go @@ -0,0 +1,190 @@ +package filter + +import ( + "bytes" + "encoding/json" + "fmt" + "regexp" + "strings" + + "github.com/cortezaproject/corteza/server/pkg/slice" +) + +type ( + // Sort is a helper struct that should be embedded in filter types + // to help with the sorting + Sorting struct { + Sort SortExprSet `json:"sort,omitempty"` + } + + SortExpr struct { + Column string + Descending bool + // NullsFirst bool + } + + SortExprSet []*SortExpr +) + +func NewSorting(sort string) (s Sorting, err error) { + s = Sorting{} + + if s.Sort, err = parseSort(sort); err != nil { + return + } + + return +} + +func (s *Sorting) OrderBy() SortExprSet { + return s.Sort +} + +// parses sort string +// +// We allow a simplified version of what SQL supports, so: +// "( ), ..." +// +// Unlike before, we do not use pkg/ql for parsing this as we do not allow +// any complex sorting expressions +func parseSort(in string) (set SortExprSet, err error) { + exprMatcher := regexp.MustCompile(`([0-9a-zA-Z_\.]+)(\s+(asc|ASC|desc|DESC))?`) + + set = SortExprSet{} + if in == "" { + return + } + + in = strings.TrimSpace(in) + if in == "" { + return + } + + for _, expr := range strings.Split(in, ",") { + mm := exprMatcher.FindStringSubmatch(strings.TrimSpace(expr)) + + o := &SortExpr{} + switch { + case len(mm) == 0: + return nil, fmt.Errorf("invalid sort expression") + case len(mm) >= 2: + o.Column = mm[1] + fallthrough + case len(mm) >= 4: + o.Descending = strings.ToUpper(mm[3]) == "DESC" + } + + set = append(set, o) + } + + return set, nil +} + +// UnmarshalJSON parses sort expression when passed inside JSON +func (set *SortExprSet) UnmarshalJSON(in []byte) error { + // This is an edgecase where `sort: ""` is passed in + if bytes.Compare(in, []byte{34, 34}) == 0 { + return nil + } + + tmp, err := parseSort(string(in)) + *set = tmp + return err +} + +// UnmarshalJSON parses sort expression when passed inside JSON +func (set SortExprSet) MarshalJSON() ([]byte, error) { + return json.Marshal(set.String()) +} + +// UnmarshalJSON parses stringified sort expression when passed inside JSON +func (set *SortExprSet) Set(in string) error { + tmp, err := parseSort(in) + *set = tmp + return err +} + +// Validate returns error if any of the SortExpr columns is missing from the given list +func (set SortExprSet) Validate(cc ...string) error { + var valid = slice.ToStringBoolMap(cc) + for _, c := range set { + if !valid[c.Column] { + return fmt.Errorf("invalid sort %q column userd", c.Column) + } + } + + return nil +} + +// Get returns sort expression from set if exists +func (set SortExprSet) Get(col string) *SortExpr { + for _, e := range set { + if e.Column == col { + return e + } + } + + return nil +} + +// Clone returns cloned sort expression set +func (set SortExprSet) Clone() (out SortExprSet) { + out = make([]*SortExpr, len(set)) + for i := range set { + out[i] = &SortExpr{ + Column: set[i].Column, + Descending: set[i].Descending, + } + } + + return out +} + +// Reverse reverses direction on each expression +func (set SortExprSet) Reverse() { + for i := range set { + set[i].Descending = !set[i].Descending + } +} + +// Sorting is revered if 1st expr has desc direction +func (set SortExprSet) Reversed() bool { + if len(set) > 0 { + return set[0].Descending + } + + return false +} + +// LastDescending returns true if last sort expr/col is descending +func (set SortExprSet) LastDescending() bool { + if len(set) > 0 { + return set[len(set)-1].Descending + } + + return false +} + +// Reverse reverses direction on each expression +func (set SortExprSet) Columns() []string { + out := make([]string, len(set)) + for i := range set { + out[i] = set[i].Column + } + + return out +} + +func (set SortExprSet) String() string { + out := make([]string, len(set)) + for i := range set { + out[i] = set[i].Column + + if set[i].Descending { + out[i] += " DESC" + } + + } + + return strings.Join(out, ", ") +} diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/filter/state.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/filter/state.go new file mode 100644 index 000000000..fe264709c --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/filter/state.go @@ -0,0 +1,27 @@ +package filter + +import ( + "strconv" +) + +type ( + // State for filtering by state, + // for example: include, exclude or return only deleted values + State uint +) + +// State* constants aid with Filter* +const ( + // StateExcluded do not include entries + StateExcluded State = 0 + + // StateInclusive include entries + StateInclusive State = 1 + + // StateExclusive only entries that have this state + StateExclusive State = 2 +) + +func (s State) String() string { + return strconv.Itoa(int(s)) +} diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/gvalfnc/generic.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/gvalfnc/generic.go new file mode 100644 index 000000000..a63f6f686 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/gvalfnc/generic.go @@ -0,0 +1,20 @@ +package gvalfnc + +import ( + "github.com/modern-go/reflect2" + "github.com/spf13/cast" +) + +func IsNil(i any) bool { + return reflect2.IsNil(i) +} + +func CastFloat(i any) (float64, error) { + return cast.ToFloat64E(i) +} +func CastInt(i any) (int, error) { + return cast.ToIntE(i) +} +func CastString(i any) (string, error) { + return cast.ToStringE(i) +} diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/gvalfnc/string.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/gvalfnc/string.go new file mode 100644 index 000000000..0034e4c82 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/gvalfnc/string.go @@ -0,0 +1,17 @@ +package gvalfnc + +import ( + "strings" + + "github.com/spf13/cast" +) + +// @todo +func ConcatStrings(parts ...any) (string, error) { + pp, err := cast.ToStringSliceE(parts) + if err != nil { + return "", err + } + + return strings.Join(pp, ""), nil +} diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/gvalfnc/time.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/gvalfnc/time.go new file mode 100644 index 000000000..4337815f3 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/gvalfnc/time.go @@ -0,0 +1,101 @@ +package gvalfnc + +import ( + "errors" + "time" + + "github.com/lestrrat-go/strftime" + "github.com/spf13/cast" +) + +func Now() time.Time { + return time.Now() +} + +func Quarter(in any) (int, error) { + t, _, err := PrepMod(in, 0) + if err != nil { + return 0, err + } + + return int(t.Month() / 4), nil +} + +func Year(in any) (int, error) { + t, _, err := PrepMod(in, 0) + if err != nil { + return 0, err + } + + return t.Year(), nil +} + +func Month(in any) (int, error) { + t, _, err := PrepMod(in, 0) + if err != nil { + return 0, err + } + + return int(t.Month()), nil +} + +func Date(in any) (time.Time, error) { + t, _, err := PrepMod(in, 0) + return time.Date(t.Year(), t.Month(), t.Day(), 0, 0, 0, 0, t.Location()), err +} + +func Day(in any) (int, error) { + t, _, err := PrepMod(in, 0) + if err != nil { + return 0, err + } + + return t.Day(), nil +} + +func PrepMod(base interface{}, mod interface{}) (*time.Time, int, error) { + var ( + t *time.Time + ) + + switch auxt := base.(type) { + case time.Time: + t = &auxt + case *time.Time: + t = auxt + case string: + tt, err := cast.ToTimeE(auxt) + + if err != nil { + return nil, 0, err + } + + t = &tt + default: + return nil, 0, errors.New("unexpected input type") + } + + m, err := cast.ToIntE(mod) + if err != nil { + return nil, 0, err + } + + return t, m, nil +} + +// Strftime formats time with POSIX standard format +// More details here: +// https://github.com/lestrrat-go/strftime#supported-conversion-specifications +func StrfTime(base interface{}, f string) (string, error) { + t, _, err := PrepMod(base, 0) + + if err != nil { + return "", err + } + + o, _ := strftime.Format(f, *t, + strftime.WithMilliseconds('b'), + strftime.WithUnixSeconds('L')) + + return o, nil +} diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/handle/handle.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/handle/handle.go new file mode 100644 index 000000000..b60dfaa5f --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/handle/handle.go @@ -0,0 +1,40 @@ +package handle + +import ( + "regexp" + "strings" +) + +var ( + validHandle = regexp.MustCompile(`^[A-Za-z][0-9A-Za-z_\-.]*[A-Za-z0-9]$`) + invalidChars = regexp.MustCompile(`[^0-9A-Za-z_\-.]+`) +) + +func IsValid(s string) bool { + return s == "" || (len(s) >= 2 && validHandle.MatchString(s)) +} + +// Cast transforms candidates to find a valid (non-empty) handle +func Cast(check func(string) bool, candidates ...string) (handle string, ok bool) { + ok = true + + for _, c := range candidates { + if c == "" { + continue + } + + // Capitalize + handle = strings.ReplaceAll(c[:1]+strings.Title(c)[1:], " ", "") + handle = invalidChars.ReplaceAllString(handle, "") + + if handle == "" { + continue + } + + if IsValid(handle) && (check == nil || check(handle)) { + return + } + } + + return "", false +} diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/http/client.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/http/client.go new file mode 100644 index 000000000..2055c96de --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/http/client.go @@ -0,0 +1,164 @@ +package http + +import ( + "bytes" + "encoding/json" + "fmt" + "io/ioutil" + "net" + "net/http" + "net/http/httputil" + "strings" + "time" + + "github.com/pkg/errors" +) + +type ( + Config struct { + BaseURL string + Timeout int + } + + Client struct { + Transport *http.Transport + Client *http.Client + + debugLevel DebugLevel + config *Config + } + + DebugLevel string +) + +const ( + INFO DebugLevel = "info" + FULL DebugLevel = "full" +) + +func New(flags *Config) (*Client, error) { + timeout := time.Duration(flags.Timeout) * time.Second + + transport := &http.Transport{ + Dial: (&net.Dialer{ + Timeout: timeout, + }).Dial, + TLSHandshakeTimeout: timeout, + } + + // @todo migrate to http.DefaultClient & http.DefaultTransport, see internal/http.SetupDefaults + client := &http.Client{ + Timeout: timeout, + Transport: transport, + CheckRedirect: func(req *http.Request, via []*http.Request) error { + return http.ErrUseLastResponse + }, + } + + return &Client{ + Transport: transport, + Client: client, + config: flags, + }, nil +} + +func (c *Client) Debug(level DebugLevel) *Client { + c.debugLevel = level + return c +} + +func (c *Client) Get(url string) (*http.Request, error) { + return c.Request("GET", url, nil) +} + +func (c *Client) Post(url string, body interface{}) (*http.Request, error) { + return c.Request("POST", url, body) +} + +func (c *Client) Patch(url string, body interface{}) (*http.Request, error) { + return c.Request("PATCH", url, body) +} + +func (c *Client) Delete(url string) (*http.Request, error) { + return c.Request("DELETE", url, nil) +} + +func (c *Client) Request(method, url string, body interface{}) (*http.Request, error) { + if c.config.BaseURL != "" { + url = strings.TrimRight(c.config.BaseURL, "/") + "/" + strings.TrimLeft(url, "/") + } + + if c.debugLevel == "info" { + fmt.Println("HTTP >>>", method, url) + } + + request := func() (*http.Request, error) { + if body != nil { + b, err := json.Marshal(body) + if err != nil { + return nil, err + } + return http.NewRequest(method, url, bytes.NewBuffer(b)) + } + return http.NewRequest(method, url, nil) + } + + req, err := request() + if err != nil { + return nil, errors.Wrap(err, "creating request failed") + } + req.Header.Add("Content-Type", "application/json") + return req, nil +} + +func (c *Client) Do(req *http.Request) (*http.Response, error) { + if c.debugLevel == FULL { + fmt.Println("HTTP >>> (request)") + b, err := httputil.DumpRequestOut(req, true) + if err != nil { + fmt.Println("HTTP >>> Error:", err) + } else { + if b != nil { + fmt.Println(strings.TrimSpace(string(b))) + } + } + fmt.Println("---") + } + + resp, err := c.Client.Do(req) + if c.debugLevel == FULL { + fmt.Println("HTTP <<< (response)") + if err != nil { + fmt.Println("HTTP <<< Error:", err) + } else { + + b, err := httputil.DumpResponse(resp, true) + if err != nil { + fmt.Println("HTTP <<< Error:", err) + } else { + if b != nil { + fmt.Println(string(b)) + } + } + } + fmt.Println("-----------------") + } + if err != nil { + if c.debugLevel == INFO { + fmt.Println("HTTP <<< Response error", err) + } + return nil, errors.Wrap(err, "request failed") + } + if c.debugLevel == INFO { + fmt.Println("HTTP <<< Response", resp.StatusCode) + } + return resp, nil +} + +func ToError(resp *http.Response) error { + body, err := ioutil.ReadAll(resp.Body) + if body == nil || err != nil { + return errors.Errorf("unexpected response (%d, %s)", resp.StatusCode, err) + } + return errors.New(string(body)) +} diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/http/default.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/http/default.go new file mode 100644 index 000000000..46a58f1af --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/http/default.go @@ -0,0 +1,34 @@ +package http + +import ( + "crypto/tls" + "net" + "net/http" + "time" +) + +// SetupDefaults Reconfigures defaults for HTTP client & transport +func SetupDefaults(timeout time.Duration, tlsInsecure bool) { + if tlsInsecure { + // This will allow HTTPS requests to insecure hosts (expired, wrong host, self signed, untrusted root...) + // With this enabled, features like OIDC auto-discovery should work on any of examples found on badssl.com. + // + // With SYSTEM_HTTP_CLIENT_TSL_INSECURE=0 (default) next command returns 404 error (expected) + // > ./system external-auth auto-discovery foo-tls-1 https://expired.badssl.com/ + // + // Without SYSTEM_HTTP_CLIENT_TSL_INSECURE=1 next command returns "x509: certificate has expired or is not yet valid" + // > ./system external-auth auto-discovery foo-tls-1 https://expired.badssl.com/ + // + http.DefaultTransport.(*http.Transport).TLSClientConfig = &tls.Config{InsecureSkipVerify: true} + http.DefaultTransport.(*http.Transport).DialContext = (&net.Dialer{Timeout: timeout}).DialContext + http.DefaultTransport.(*http.Transport).TLSHandshakeTimeout = timeout + } + + if timeout > 0 { + http.DefaultClient.Timeout = timeout + } + + http.DefaultClient.CheckRedirect = func(req *http.Request, via []*http.Request) error { + return http.ErrUseLastResponse + } +} diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/http/file_server.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/http/file_server.go new file mode 100644 index 000000000..74c6457e8 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/http/file_server.go @@ -0,0 +1,152 @@ +package http + +import ( + "io/fs" + "net/http" + "path" + "strings" + + "github.com/go-chi/chi/v5" + "go.uber.org/zap" +) + +type ( + // special file-server meant to be used for serving single page applications + // or anything that needs a bit of extra attention like fallback handling + // 404 handler, error handler and URL prefixing + fileServer struct { + // fileServer files + files http.FileSystem + + urlPrefix string + + fallbacks []string + + // Final not-found handler + notFound http.HandlerFunc + + // how errors are handled + errHandler func(w http.ResponseWriter, error string, code int) + + logger *zap.Logger + } + + configurator func(*fileServer) error +) + +// MountSPA helper function, preconfigures FileServer for SPA serving +// and mounts it to chi Router +func MountSPA(r chi.Router, path string, root fs.FS, cc ...configurator) error { + path = "/" + strings.Trim(strings.TrimRight(path, "*"), "/") + "/" + + cc = append( + []configurator{UrlPrefix(path), Fallbacks("index.html")}, + // appnd all configurators at the end and allow override of prefix & fallbacks + cc... + ) + + handler, err := FileServer(root, cc...) + if err != nil { + return err + } + + r.Handle( + strings.TrimRight(path, "/"), + http.RedirectHandler("."+path, http.StatusTemporaryRedirect), + ) + + r.Handle(path+"*", handler) + return nil +} + +func FileServer(files fs.FS, cc ...configurator) (h *fileServer, err error) { + h = &fileServer{ + files: http.FS(files), + notFound: http.NotFound, + errHandler: http.Error, + logger: zap.NewNop(), + } + + for _, configure := range cc { + if err = configure(h); err != nil { + return + } + } + + return +} + +func UrlPrefix(prefix string) configurator { + return func(s *fileServer) error { + s.urlPrefix = prefix + return nil + } +} + +func Fallbacks(ff ...string) configurator { + return func(s *fileServer) error { + s.fallbacks = ff + return nil + } +} + +func NotFound(h http.HandlerFunc) configurator { + return func(s *fileServer) error { + s.notFound = h + return nil + } +} + +func Logger(l *zap.Logger) configurator { + return func(s *fileServer) error { + s.logger = l + return nil + } +} + +// Serves the single-page-application +// +// This is file-server with some special logic for handling missing +// files (404s) and directories. +// In both cases we serve index file directly +func (h *fileServer) ServeHTTP(w http.ResponseWriter, r *http.Request) { + // catch requests for non-existing files and redirect to index.html + if h.files == nil { + h.errHandler(w, "configured without files", http.StatusInternalServerError) + return + } + + trimmed := path.Clean(strings.TrimPrefix(r.URL.Path, h.urlPrefix)) + h.logger.Debug(r.URL.Path, zap.String("trimmed", trimmed), zap.String("urlPrefix", h.urlPrefix)) + r.URL.Path = trimmed + + var ( + err error + fh http.File + st fs.FileInfo + ) + + for _, candidate := range append([]string{r.URL.Path}, h.fallbacks...) { + if len(candidate) == 0 { + continue + } + + if fh, err = h.files.Open(candidate); err != nil { + continue + } else if st, err = fh.Stat(); err != nil { + continue + } else if st.IsDir() { + // index + continue + } + + break + } + + if fh == nil || st == nil { + h.notFound(w, r) + return + } + + http.ServeContent(w, r, st.Name(), st.ModTime(), fh) +} diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/http/request.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/http/request.go new file mode 100644 index 000000000..f4cfbebae --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/http/request.go @@ -0,0 +1,120 @@ +package http + +import ( + "bytes" + "encoding/json" + "io" + "mime/multipart" + "net/http" + "net/url" + + "github.com/pkg/errors" +) + +type ( + Request struct { + *http.Request + Body io.Reader + } + + // The BufferedReader behaves exactly like a bytes.Reader, with the exception + // when the last block is read, it automatically rewinds the internal pointer to the start, + // so effectively, the content can be read again without calling Seek() externally. + BufferedReader struct { + s []byte + i int64 // current reading index + prevRune int // index of previous rune; or < 0 + } +) + +func NewRequest(r *http.Request) (rr *Request, err error) { + rs, err := NewBufferedReader(r.Body) + + if err != nil { + return + } + + rr = &Request{r, rs} + return +} + +// NewBufferedReader copies original data to the +// BufferedReader +func NewBufferedReader(rr io.Reader) (bb *BufferedReader, err error) { + var ( + buf = &bytes.Buffer{} + ) + + bb = &BufferedReader{} + + _, err = io.Copy(buf, rr) + + if err != nil { + return + } + + return &BufferedReader{ + s: buf.Bytes(), + i: 0, + prevRune: -1, + }, nil +} + +func (r *BufferedReader) Read(b []byte) (n int, err error) { + if r.i >= int64(len(r.s)) { + n = 0 + err = io.EOF + r.Seek(0, io.SeekStart) + return + } + r.prevRune = -1 + n = copy(b, r.s[r.i:]) + r.i += int64(n) + return +} + +func (r *BufferedReader) Seek(offset int64, whence int) (int64, error) { + r.prevRune = -1 + var abs int64 + switch whence { + case io.SeekStart: + abs = offset + case io.SeekCurrent: + abs = r.i + offset + case io.SeekEnd: + abs = int64(len(r.s)) + offset + default: + return 0, errors.New("bytes.Reader.Seek: invalid whence") + } + if abs < 0 { + return 0, errors.New("bytes.Reader.Seek: negative position") + } + r.i = abs + return abs, nil +} + +func (bb *Request) MarshalJSON() ([]byte, error) { + return json.Marshal(&struct { + Method string + URL *url.URL + Header http.Header + ContentLength int64 + Host string + Form url.Values + PostForm url.Values + MultipartForm *multipart.Form + RemoteAddr string + RequestURI string + }{ + Method: bb.Method, + URL: bb.URL, + Header: bb.Header, + ContentLength: bb.ContentLength, + Host: bb.Host, + Form: bb.Form, + PostForm: bb.PostForm, + MultipartForm: bb.MultipartForm, + RemoteAddr: bb.RemoteAddr, + RequestURI: bb.RequestURI, + }) +} diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/http/test_data/file_server/index.html b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/http/test_data/file_server/index.html new file mode 100644 index 000000000..11e3e65c7 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/http/test_data/file_server/index.html @@ -0,0 +1 @@ +index html diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/http/test_data/file_server/sub/index.html b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/http/test_data/file_server/sub/index.html new file mode 100644 index 000000000..d15502162 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/http/test_data/file_server/sub/index.html @@ -0,0 +1 @@ +sub index html diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/http/test_data/file_server/sub/test.html b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/http/test_data/file_server/sub/test.html new file mode 100644 index 000000000..61a1bcffe --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/http/test_data/file_server/sub/test.html @@ -0,0 +1 @@ +sub test html diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/http/test_data/file_server/test.html b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/http/test_data/file_server/test.html new file mode 100644 index 000000000..87fd3abcc --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/http/test_data/file_server/test.html @@ -0,0 +1 @@ + test html diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/locale/context.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/locale/context.go similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/locale/context.go rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/locale/context.go diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/locale/http.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/locale/http.go similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/locale/http.go rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/locale/http.go diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/locale/input.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/locale/input.go new file mode 100644 index 000000000..149cd9e4f --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/locale/input.go @@ -0,0 +1,9 @@ +package locale + +import ( + "github.com/cortezaproject/corteza/server/pkg/xss" +) + +func SanitizeMessage(in string) string { + return xss.RichText(in) +} diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/locale/load.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/locale/load.go similarity index 96% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/locale/load.go rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/locale/load.go index 9538d2062..1b1fd957a 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/locale/load.go +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/locale/load.go @@ -195,13 +195,8 @@ func loadTranslations(lang *Language) (err error) { return } -func (svc *service) loadResourceTranslations(ctx context.Context, lang *Language, tg language.Tag) (err error) { - lang.resources, err = svc.s.TransformResource(ctx, tg) - if err != nil { - return err - } - - return +func (svc *service) LoadResourceTranslations(ctx context.Context, tg language.Tag) (out map[string]map[string]*ResourceTranslation, err error) { + return svc.s.TransformResource(ctx, tg) } // procInternal reads internal YAML translation files and converts it into diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/locale/locale.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/locale/locale.go similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/locale/locale.go rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/locale/locale.go diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/locale/resource.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/locale/resource.go similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/locale/resource.go rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/locale/resource.go diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/locale/service.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/locale/service.go similarity index 93% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/locale/service.go rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/locale/service.go index e9d680513..f4e424e76 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/locale/service.go +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/locale/service.go @@ -9,7 +9,7 @@ import ( "sync" locale "github.com/cortezaproject/corteza-locale" - "github.com/cortezaproject/corteza-server/pkg/options" + "github.com/cortezaproject/corteza/server/pkg/options" "go.uber.org/zap" "golang.org/x/text/language" "golang.org/x/text/language/display" @@ -131,8 +131,6 @@ func (svc *service) SupportedLang(tag language.Tag) bool { // all translation files func (svc *service) ReloadStatic() (err error) { var ( - i int - lang *Language ll, aux []*Language logFields = make([]zap.Field, 0) @@ -141,6 +139,10 @@ func (svc *service) ReloadStatic() (err error) { svc.l.Lock() defer svc.l.Unlock() + if len(svc.tags) == 0 { + return fmt.Errorf("no supported languages (LOCALE_LANGUAGES is empty)") + } + svc.log.Info("reloading static", zap.Strings("path", svc.src), zap.Strings("tags", tagsToStrings(svc.tags)), @@ -178,7 +180,7 @@ func (svc *service) ReloadStatic() (err error) { ll = append(ll, aux...) } - for i, lang = range ll { + for _, lang := range ll { logFields = []zap.Field{ zap.Stringer("tag", lang.Tag), } @@ -206,11 +208,6 @@ func (svc *service) ReloadStatic() (err error) { return err } - if i == 0 && svc.def == nil { - // set first one as default - svc.def = lang - } - if svc.set[lang.Tag] != nil { svc.log.Info( "language overloaded", @@ -234,7 +231,7 @@ func (svc *service) ReloadStatic() (err error) { } // Do another pass and link all extended languages - for _, lang = range svc.set { + for _, lang := range svc.set { if lang.Extends.IsRoot() { continue } @@ -246,6 +243,16 @@ func (svc *service) ReloadStatic() (err error) { lang.extends = svc.set[lang.Extends] } + if svc.def == nil { + first := svc.tags[0] + + if svc.set[first] == nil { + return fmt.Errorf("could not find %s in loaded languages", first) + } + + svc.def = svc.set[first] + } + return nil } @@ -276,7 +283,7 @@ func (svc *service) ReloadResourceTranslations(ctx context.Context) (err error) svc.set[tag] = lang } - if err = svc.loadResourceTranslations(ctx, lang, lang.Tag); err != nil { + if lang.resources, err = svc.LoadResourceTranslations(ctx, lang.Tag); err != nil { return err } @@ -324,14 +331,19 @@ func (svc *service) LocalizedList(ctx context.Context) []*Language { } l = &Language{ - Tag: l.Tag, - Name: l.Name, - LocalizedName: display.Languages(reqLang).Name(l.Tag), + Tag: l.Tag, + Name: l.Name, + } + + if nl := display.Languages(reqLang); nl != nil { + l.LocalizedName = nl.Name(l.Tag) } if l.Name == "" { - // for cases when language name is not configured - l.Name = display.Languages(l.Tag).Name(l.Tag) + if nl := display.Languages(l.Tag); nl != nil { + // for cases when language name is not configured + l.Name = nl.Name(l.Tag) + } } ll = append(ll, l) @@ -421,6 +433,9 @@ func (svc *service) TResourceFor(tag language.Tag, ns, key string, rr ...string) func (svc *service) ResourceTranslations(tag language.Tag, resource string) ResourceTranslationIndex { out := make(ResourceTranslationIndex) + svc.l.Lock() + defer svc.l.Unlock() + if svc != nil && svc.set != nil { if l, has := svc.set[tag]; has { return l.resourceTranslations(resource) diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/logger/context.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/logger/context.go similarity index 96% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/logger/context.go rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/logger/context.go index a3916bfa8..efba75b3d 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/logger/context.go +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/logger/context.go @@ -2,7 +2,7 @@ package logger import ( "context" - "github.com/go-chi/chi/middleware" + "github.com/go-chi/chi/v5/middleware" "go.uber.org/zap" ) diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/logger/handlers.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/logger/handlers.go similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/logger/handlers.go rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/logger/handlers.go diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/logger/logger.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/logger/logger.go new file mode 100644 index 000000000..b53325150 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/logger/logger.go @@ -0,0 +1,173 @@ +package logger + +import ( + "fmt" + "time" + + "github.com/cortezaproject/corteza/server/pkg/options" + "go.uber.org/zap" + "go.uber.org/zap/zapcore" + "moul.io/zapfilter" +) + +var ( + defaultLogger = zap.NewNop() +) + +func Default() *zap.Logger { + if defaultLogger == nil { + return zap.NewNop() + } + + return defaultLogger +} + +func SetDefault(logger *zap.Logger) { + defaultLogger = logger +} + +// Init (re)initializes global logger according to the settings +// +// It also peaks into http-server options to determinate if log events +// should be buffered for use from web console +func Init() { + var ( + // @todo this should probably be refactored by adding a new option to LogOpt + // that controls if we create a buffered output as well; and when not explicitly + // set, we take state of web-console as a base + hSrvOpt = options.HttpServer() + logger = Must(Make(options.Log())) + ) + + if hSrvOpt.WebConsoleEnabled { + // web console is the only thing right now + // that needs logger to buffer events for later access + logger = withDebugBuffer(logger) + } + + defaultLogger = logger +} + +// Make creates a logger (debug or production) according to options +func Make(opt *options.LogOpt) (logger *zap.Logger, err error) { + if opt.Debug { + // Do we want to enable debug logger + // with a bit more dev-friendly output + logger, err = Debug(opt) + } else { + logger, err = Production(opt) + } + + if err != nil { + return nil, err + } + + logger = withFilter(logger, opt.Filter) + logger = withStacktraceLevel(logger, opt.StacktraceLevel) + + return logger, nil +} + +// MakeDebugLogger creates a logger +func MakeDebugLogger() *zap.Logger { + var ( + logger = Must(Debug(options.Log())) + ) + + logger = withStacktraceLevel(logger, "dpanic") + + return logger +} + +// Must is a utility function that panics if given log maker returns an error +func Must(logger *zap.Logger, err error) *zap.Logger { + if err != nil { + panic(fmt.Errorf("failed to configure logger: %w", err)) + } + + return logger +} + +// Debug prepares debug logger using options +func Debug(opt *options.LogOpt) (*zap.Logger, error) { + var ( + // make a copy of debug options so that we do not + dbgOpt = &options.LogOpt{ + Debug: true, + Level: "debug", + Filter: opt.Filter, + IncludeCaller: opt.IncludeCaller, + StacktraceLevel: opt.StacktraceLevel, + } + ) + + var ( + conf = applyOptionsToConfig(zap.NewDevelopmentConfig(), dbgOpt) + ) + + // Print log level in colors + conf.EncoderConfig.EncodeLevel = zapcore.CapitalColorLevelEncoder + + // Shorten timestamp, we do not care about the date + conf.EncoderConfig.EncodeTime = func(t time.Time, enc zapcore.PrimitiveArrayEncoder) { + enc.AppendString(t.Format("15:04:05.000")) + } + + return conf.Build() +} + +func Production(opt *options.LogOpt) (*zap.Logger, error) { + var ( + conf = applyOptionsToConfig(zap.NewProductionConfig(), opt) + ) + + return conf.Build() +} + +// Applies options from environment variables +func applyOptionsToConfig(conf zap.Config, opt *options.LogOpt) zap.Config { + // LOG_LEVEL + conf.Level = zap.NewAtomicLevelAt(mustParseLevel(opt.Level)) + + // LOG_INCLUDE_CALLER + conf.DisableCaller = !opt.IncludeCaller + + conf.Sampling = nil + + return conf +} + +// Applies filtering options +// +// This is controlled with LOG_FILTER environmental var +func withFilter(l *zap.Logger, filter string) *zap.Logger { + if len(filter) > 0 { + l = zap.New(zapfilter.NewFilteringCore(l.Core(), zapfilter.MustParseRules(filter))) + } + + return l +} + +// Applies stacktrace level options +// +// This is controlled with LOG_STACKTRACE_LEVEL environmental var +func withStacktraceLevel(l *zap.Logger, level string) *zap.Logger { + return l.WithOptions(zap.AddStacktrace(mustParseLevel(level))) +} + +// Adds Tee logger that copies all log messages to debug buffer +func withDebugBuffer(in *zap.Logger) *zap.Logger { + return zap.New(zapcore.NewTee( + in.Core(), + + DebugBufferedLogger(debugLogRR), + )) +} + +func mustParseLevel(l string) (o zapcore.Level) { + if err := o.Set(l); err != nil { + panic(err) + } + + return +} diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/logger/masked.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/logger/masked.go similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/logger/masked.go rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/logger/masked.go diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/logger/rrbuf.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/logger/rrbuf.go new file mode 100644 index 000000000..468c7d86e --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/logger/rrbuf.go @@ -0,0 +1,154 @@ +package logger + +import ( + "fmt" + "io" + "sync" + + "go.uber.org/zap" + "go.uber.org/zap/zapcore" +) + +type ( + rrBufEntry struct { + num int + rec []byte + } + + // simple round-robin struct that holds our buffer with log entries + rr struct { + mux sync.RWMutex + num int + buf []*rrBufEntry + } + + debugBufferingLogger struct { + zapcore.LevelEnabler + out *rr + enc zapcore.Encoder + } +) + +const ( + // allowing 10k entries (no limiting the entry size) + debugLogCap = 10240 +) + +var ( + // initialize debug logger round robin db + debugLogRR = &rr{ + buf: make([]*rrBufEntry, 0), + } +) + +// WriteLogBuffer provides access to default debug log buffer +func WriteLogBuffer(w io.Writer, after, limit int) (_ int, err error) { + return writeLogBuffer(w, debugLogRR, after, limit) +} + +// writes stream of entries from log buffer into provided writer array of JSON objects. +func writeLogBuffer(w io.Writer, logBuf *rr, after, limit int) (_ int, err error) { + var ( + // was at least one entry outputted? + has bool + ) + + debugLogRR.mux.RLock() + defer debugLogRR.mux.RUnlock() + if _, err = w.Write([]byte{'['}); err != nil { + return + } + + for _, e := range logBuf.buf { + if after >= e.num { + continue + } + + // count back to zero + limit-- + + if has { + if _, err = w.Write([]byte{','}); err != nil { + return + } + } + + if _, err = w.Write(e.rec); err != nil { + return + } + + if limit == 0 { + break + } + + has = true + } + + if _, err = w.Write([]byte{']'}); err != nil { + return + } + + return +} + +func (r *rr) append(ent []byte) { + r.mux.Lock() + defer r.mux.Unlock() + + r.num++ + + // modify serialized json + var bufEnt = &rrBufEntry{r.num, append(ent[:len(ent)-2], []byte(fmt.Sprintf(`,"index":%d}`, r.num))...)} + + if len(r.buf) >= debugLogCap { + r.buf = append(r.buf[1:], bufEnt) + } else { + r.buf = append(r.buf, bufEnt) + } +} + +// DebugBufferedLogger provides buffered logger compatible with zap. +func DebugBufferedLogger(out *rr) *debugBufferingLogger { + var encConf = zap.NewProductionEncoderConfig() + encConf.EncodeTime = zapcore.RFC3339NanoTimeEncoder + + return &debugBufferingLogger{ + LevelEnabler: zapcore.DebugLevel, + out: out, + enc: zapcore.NewJSONEncoder(encConf), + } +} + +func (c *debugBufferingLogger) With(fields []zapcore.Field) zapcore.Core { + clone := c.clone() + for i := range fields { + fields[i].AddTo(clone.enc) + } + return clone +} + +func (c *debugBufferingLogger) Check(ent zapcore.Entry, ce *zapcore.CheckedEntry) *zapcore.CheckedEntry { + if c.Enabled(ent.Level) { + return ce.AddCore(ent, c) + } + return ce +} + +func (c *debugBufferingLogger) Write(ent zapcore.Entry, fields []zapcore.Field) error { + encbuf, err := c.enc.EncodeEntry(ent, fields) + if err != nil { + return err + } + + c.out.append(encbuf.Bytes()) + return nil +} + +func (c *debugBufferingLogger) Sync() error { return nil } +func (c *debugBufferingLogger) clone() *debugBufferingLogger { + return &debugBufferingLogger{ + LevelEnabler: c.LevelEnabler, + enc: c.enc.Clone(), + out: c.out, + } +} diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/DB.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/options/DB.go similarity index 90% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/DB.go rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/options/DB.go index 00c8b11c4..aec395144 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/DB.go +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/options/DB.go @@ -4,7 +4,7 @@ import ( "strings" ) -func (o *DBOpt) Defaults() { +func (o *DBOpt) Cleanup() { if o.DSN != "" && !strings.Contains(o.DSN, "://") { // Make sure DSN is compatible with new requirements o.DSN = "mysql://" + o.DSN diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/HTTPClient.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/options/HTTPClient.go similarity index 61% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/HTTPClient.go rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/options/HTTPClient.go index df0cac35f..bb9bc0b17 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/HTTPClient.go +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/options/HTTPClient.go @@ -2,6 +2,6 @@ package options func (o *HTTPClientOpt) Defaults() { // just in case anyone used env var with the typo (before it was fixed) - o.ClientTSLInsecure = EnvBool("HTTP_CLIENT_TSL_INSECURE", o.ClientTSLInsecure) + o.TlsInsecure = EnvBool("HTTP_CLIENT_TSL_INSECURE", o.TlsInsecure) } diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/HTTPServer.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/options/HTTPServer.go similarity index 57% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/HTTPServer.go rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/options/HTTPServer.go index 83185fa66..486aec975 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/HTTPServer.go +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/options/HTTPServer.go @@ -1,6 +1,16 @@ package options -func (o *HTTPServerOpt) Defaults() { +func (o *HttpServerOpt) Defaults() { + if Environment().IsDevelopment() { + // enable web console and remove username, password defaults + // if this is explicitly via ENV, it will override these defaults + o.WebConsoleEnabled = true + o.WebConsoleUsername = "" + o.WebConsolePassword = "" + } +} + +func (o *HttpServerOpt) Cleanup() { o.BaseUrl = CleanBase(o.BaseUrl) o.ApiBaseUrl = CleanBase(o.ApiBaseUrl) o.WebappBaseUrl = CleanBase(o.WebappBaseUrl) diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/auth.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/options/auth.go similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/auth.go rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/options/auth.go diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/corredor.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/options/corredor.go similarity index 86% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/corredor.go rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/options/corredor.go index 9508ba400..211b14ca0 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/corredor.go +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/options/corredor.go @@ -4,7 +4,7 @@ import ( "path" ) -func (o *CorredorOpt) Defaults() { +func (o *CorredorOpt) Cleanup() { o.TlsCertCA = path.Join(o.TlsCertPath, o.TlsCertCA) o.TlsCertPrivate = path.Join(o.TlsCertPath, o.TlsCertPrivate) o.TlsCertPublic = path.Join(o.TlsCertPath, o.TlsCertPublic) diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/environment.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/options/environment.go similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/environment.go rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/options/environment.go diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/helpers.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/options/helpers.go similarity index 82% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/helpers.go rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/options/helpers.go index 6e604d5c6..3e8afb300 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/helpers.go +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/options/helpers.go @@ -51,7 +51,7 @@ func fill(opt interface{}) { continue } - if f.Kind() == reflect.Float32 { + if f.Kind() == reflect.Float32 || f.Kind() == reflect.Float64 { v.FieldByName(t.Name).SetFloat(float64(EnvFloat32(tag, float32(f.Float())))) continue } @@ -61,15 +61,20 @@ func fill(opt interface{}) { } } -func guessHostname() string { - // All env keys we'll check, first that has any value set, will be used as hostname - candidates := []string{ - os.Getenv("DOMAIN"), +func GuessApiHostname() string { + return guessHostname(os.Getenv("DOMAIN")) +} + +func GuessWebappHostname() string { + return guessHostname(os.Getenv("DOMAIN_WEBAPP")) +} + +func guessHostname(base ...string) string { + // All env keys we'll check, first one with a value set, will be used as hostname + candidates := append(base, []string{ os.Getenv("LETSENCRYPT_HOST"), os.Getenv("VIRTUAL_HOST"), - os.Getenv("HOSTNAME"), - os.Getenv("HOST"), - } + }...) for _, host := range candidates { if len(host) > 0 { @@ -77,7 +82,7 @@ func guessHostname() string { } } - return "local.cortezaproject.org" + return "localhost" } // returns path prefix @@ -86,10 +91,18 @@ func pathPrefix(pp ...string) string { } // will return base URL with domain and prefix path -func fullURL(pp ...string) string { +func FullURL(pp ...string) string { + return fullUrl(GuessApiHostname(), pp...) +} + +func FullWebappURL(pp ...string) string { + return fullUrl(GuessWebappHostname(), pp...) +} + +// will return base URL with domain and prefix path +func fullUrl(host string, pp ...string) string { var ( full string - host = guessHostname() ) if strings.Contains(host, "local.") || strings.Contains(host, "localhost") || !isSecure() { diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/options/options.gen.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/options/options.gen.go new file mode 100644 index 000000000..093408456 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/options/options.gen.go @@ -0,0 +1,1091 @@ +package options + +// This file is auto-generated. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// + +import ( + "github.com/cortezaproject/corteza/server/pkg/rand" + "github.com/cortezaproject/corteza/server/pkg/version" + "time" +) + +type ( + DBOpt struct { + DSN string `env:"DB_DSN"` + } + + HTTPClientOpt struct { + TlsInsecure bool `env:"HTTP_CLIENT_TLS_INSECURE"` + Timeout time.Duration `env:"HTTP_CLIENT_TIMEOUT"` + } + + HttpServerOpt struct { + Domain string `env:"DOMAIN"` + DomainWebapp string `env:"DOMAIN_WEBAPP"` + Addr string `env:"HTTP_ADDR"` + LogRequest bool `env:"HTTP_LOG_REQUEST"` + LogResponse bool `env:"HTTP_LOG_RESPONSE"` + Tracing bool `env:"HTTP_ERROR_TRACING"` + EnableHealthcheckRoute bool `env:"HTTP_ENABLE_HEALTHCHECK_ROUTE"` + EnableVersionRoute bool `env:"HTTP_ENABLE_VERSION_ROUTE"` + EnableDebugRoute bool `env:"HTTP_ENABLE_DEBUG_ROUTE"` + EnableMetrics bool `env:"HTTP_METRICS"` + MetricsServiceLabel string `env:"HTTP_METRICS_NAME"` + MetricsUsername string `env:"HTTP_METRICS_USERNAME"` + MetricsPassword string `env:"HTTP_METRICS_PASSWORD"` + EnablePanicReporting bool `env:"HTTP_REPORT_PANIC"` + BaseUrl string `env:"HTTP_BASE_URL"` + ApiEnabled bool `env:"HTTP_API_ENABLED"` + ApiBaseUrl string `env:"HTTP_API_BASE_URL"` + WebappEnabled bool `env:"HTTP_WEBAPP_ENABLED"` + WebappBaseUrl string `env:"HTTP_WEBAPP_BASE_URL"` + WebappBaseDir string `env:"HTTP_WEBAPP_BASE_DIR"` + WebappList string `env:"HTTP_WEBAPP_LIST"` + SslTerminated bool `env:"HTTP_SSL_TERMINATED"` + AssetsPath string `env:"HTTP_SERVER_ASSETS_PATH"` + WebConsoleEnabled bool `env:"HTTP_SERVER_WEB_CONSOLE_ENABLED"` + WebConsoleUsername string `env:"HTTP_SERVER_WEB_CONSOLE_USERNAME"` + WebConsolePassword string `env:"HTTP_SERVER_WEB_CONSOLE_PASSWORD"` + } + + RbacOpt struct { + Log bool `env:"RBAC_LOG"` + ServiceUser string `env:"RBAC_SERVICE_USER"` + BypassRoles string `env:"RBAC_BYPASS_ROLES"` + AuthenticatedRoles string `env:"RBAC_AUTHENTICATED_ROLES"` + AnonymousRoles string `env:"RBAC_ANONYMOUS_ROLES"` + } + + SCIMOpt struct { + Enabled bool `env:"SCIM_ENABLED"` + BaseURL string `env:"SCIM_BASE_URL"` + Secret string `env:"SCIM_SECRET"` + ExternalIdAsPrimary bool `env:"SCIM_EXTERNAL_ID_AS_PRIMARY"` + ExternalIdValidation string `env:"SCIM_EXTERNAL_ID_VALIDATION"` + } + + SMTPOpt struct { + Host string `env:"SMTP_HOST"` + Port int `env:"SMTP_PORT"` + User string `env:"SMTP_USER"` + Pass string `env:"SMTP_PASS"` + From string `env:"SMTP_FROM"` + TlsInsecure bool `env:"SMTP_TLS_INSECURE"` + TlsServerName string `env:"SMTP_TLS_SERVER_NAME"` + } + + ActionLogOpt struct { + Enabled bool `env:"ACTIONLOG_ENABLED"` + Debug bool `env:"ACTIONLOG_DEBUG"` + WorkflowFunctionsEnabled bool `env:"ACTIONLOG_WORKFLOW_FUNCTIONS_ENABLED"` + } + + ApigwOpt struct { + Enabled bool `env:"APIGW_ENABLED"` + Debug bool `env:"APIGW_DEBUG"` + LogEnabled bool `env:"APIGW_LOG_ENABLED"` + ProfilerEnabled bool `env:"APIGW_PROFILER_ENABLED"` + ProfilerGlobal bool `env:"APIGW_PROFILER_GLOBAL"` + LogRequestBody bool `env:"APIGW_LOG_REQUEST_BODY"` + ProxyEnableDebugLog bool `env:"APIGW_PROXY_ENABLE_DEBUG_LOG"` + ProxyFollowRedirects bool `env:"APIGW_PROXY_FOLLOW_REDIRECTS"` + ProxyOutboundTimeout time.Duration `env:"APIGW_PROXY_OUTBOUND_TIMEOUT"` + } + + AuthOpt struct { + LogEnabled bool `env:"AUTH_LOG_ENABLED"` + PasswordSecurity bool `env:"AUTH_PASSWORD_SECURITY"` + JwtAlgorithm string `env:"AUTH_JWT_ALGORITHM"` + Secret string `env:"AUTH_JWT_SECRET"` + JwtKey string `env:"AUTH_JWT_KEY"` + AccessTokenLifetime time.Duration `env:"AUTH_OAUTH2_ACCESS_TOKEN_LIFETIME"` + RefreshTokenLifetime time.Duration `env:"AUTH_OAUTH2_REFRESH_TOKEN_LIFETIME"` + ExternalRedirectURL string `env:"AUTH_EXTERNAL_REDIRECT_URL"` + ExternalCookieSecret string `env:"AUTH_EXTERNAL_COOKIE_SECRET"` + BaseURL string `env:"AUTH_BASE_URL"` + SessionCookieName string `env:"AUTH_SESSION_COOKIE_NAME"` + SessionCookiePath string `env:"AUTH_SESSION_COOKIE_PATH"` + SessionCookieDomain string `env:"AUTH_SESSION_COOKIE_DOMAIN"` + SessionCookieSecure bool `env:"AUTH_SESSION_COOKIE_SECURE"` + SessionLifetime time.Duration `env:"AUTH_SESSION_LIFETIME"` + SessionPermLifetime time.Duration `env:"AUTH_SESSION_PERM_LIFETIME"` + GarbageCollectorInterval time.Duration `env:"AUTH_GARBAGE_COLLECTOR_INTERVAL"` + RequestRateLimit int `env:"AUTH_REQUEST_RATE_LIMIT"` + RequestRateWindowLength time.Duration `env:"AUTH_REQUEST_RATE_WINDOW_LENGTH"` + CsrfSecret string `env:"AUTH_CSRF_SECRET"` + CsrfEnabled bool `env:"AUTH_CSRF_ENABLED"` + CsrfFieldName string `env:"AUTH_CSRF_FIELD_NAME"` + CsrfCookieName string `env:"AUTH_CSRF_COOKIE_NAME"` + DefaultClient string `env:"AUTH_DEFAULT_CLIENT"` + AssetsPath string `env:"AUTH_ASSETS_PATH"` + DevelopmentMode bool `env:"AUTH_DEVELOPMENT_MODE"` + } + + CorredorOpt struct { + Enabled bool `env:"CORREDOR_ENABLED"` + Addr string `env:"CORREDOR_ADDR"` + MaxBackoffDelay time.Duration `env:"CORREDOR_MAX_BACKOFF_DELAY"` + MaxReceiveMessageSize int `env:"CORREDOR_MAX_RECEIVE_MESSAGE_SIZE"` + DefaultExecTimeout time.Duration `env:"CORREDOR_DEFAULT_EXEC_TIMEOUT"` + ListTimeout time.Duration `env:"CORREDOR_LIST_TIMEOUT"` + ListRefresh time.Duration `env:"CORREDOR_LIST_REFRESH"` + RunAsEnabled bool `env:"CORREDOR_RUN_AS_ENABLED"` + TlsCertEnabled bool `env:"CORREDOR_CLIENT_CERTIFICATES_ENABLED"` + TlsCertPath string `env:"CORREDOR_CLIENT_CERTIFICATES_PATH"` + TlsCertCA string `env:"CORREDOR_CLIENT_CERTIFICATES_CA"` + TlsCertPrivate string `env:"CORREDOR_CLIENT_CERTIFICATES_PRIVATE"` + TlsCertPublic string `env:"CORREDOR_CLIENT_CERTIFICATES_PUBLIC"` + TlsServerName string `env:"CORREDOR_CLIENT_CERTIFICATES_SERVER_NAME"` + } + + EnvironmentOpt struct { + Environment string `env:"ENVIRONMENT"` + } + + EventbusOpt struct { + SchedulerEnabled bool `env:"EVENTBUS_SCHEDULER_ENABLED"` + SchedulerInterval time.Duration `env:"EVENTBUS_SCHEDULER_INTERVAL"` + } + + FederationOpt struct { + Enabled bool `env:"FEDERATION_ENABLED"` + Label string `env:"FEDERATION_LABEL"` + Host string `env:"FEDERATION_HOST"` + StructureMonitorInterval time.Duration `env:"FEDERATION_SYNC_STRUCTURE_MONITOR_INTERVAL"` + StructurePageSize int `env:"FEDERATION_SYNC_STRUCTURE_PAGE_SIZE"` + DataMonitorInterval time.Duration `env:"FEDERATION_SYNC_DATA_MONITOR_INTERVAL"` + DataPageSize int `env:"FEDERATION_SYNC_DATA_PAGE_SIZE"` + } + + LimitOpt struct { + SystemUsers int `env:"LIMIT_SYSTEM_USERS"` + } + + LocaleOpt struct { + Languages string `env:"LOCALE_LANGUAGES"` + Path string `env:"LOCALE_PATH"` + QueryStringParam string `env:"LOCALE_QUERY_STRING_PARAM"` + ResourceTranslationsEnabled bool `env:"LOCALE_RESOURCE_TRANSLATIONS_ENABLED"` + Log bool `env:"LOCALE_LOG"` + DevelopmentMode bool `env:"LOCALE_DEVELOPMENT_MODE"` + } + + LogOpt struct { + Debug bool `env:"LOG_DEBUG"` + Level string `env:"LOG_LEVEL"` + Filter string `env:"LOG_FILTER"` + IncludeCaller bool `env:"LOG_INCLUDE_CALLER"` + StacktraceLevel string `env:"LOG_STACKTRACE_LEVEL"` + } + + MessagebusOpt struct { + Enabled bool `env:"MESSAGEBUS_ENABLED"` + LogEnabled bool `env:"MESSAGEBUS_LOG_ENABLED"` + } + + MonitorOpt struct { + Interval time.Duration `env:"MONITOR_INTERVAL"` + } + + ObjectStoreOpt struct { + Path string `env:"STORAGE_PATH"` + MinioEndpoint string `env:"MINIO_ENDPOINT"` + MinioSecure bool `env:"MINIO_SECURE"` + MinioAccessKey string `env:"MINIO_ACCESS_KEY"` + MinioSecretKey string `env:"MINIO_SECRET_KEY"` + MinioSSECKey string `env:"MINIO_SSEC_KEY"` + MinioBucket string `env:"MINIO_BUCKET"` + MinioPathPrefix string `env:"MINIO_PATH_PREFIX"` + MinioStrict bool `env:"MINIO_STRICT"` + } + + ProvisionOpt struct { + Always bool `env:"PROVISION_ALWAYS"` + Path string `env:"PROVISION_PATH"` + } + + SeederOpt struct { + LogEnabled bool `env:"SEEDER_LOG_ENABLED"` + } + + SentryOpt struct { + DSN string `env:"SENTRY_DSN"` + Debug bool `env:"SENTRY_DEBUG"` + AttachStacktrace bool `env:"SENTRY_ATTACH_STACKTRACE"` + SampleRate float64 `env:"SENTRY_SAMPLE_RATE"` + MaxBreadcrumbs int `env:"SENTRY_MAX_BREADCRUMBS"` + ServerName string `env:"SENTRY_SERVERNAME"` + Release string `env:"SENTRY_RELEASE"` + Dist string `env:"SENTRY_DIST"` + Environment string `env:"SENTRY_ENVIRONMENT"` + WebappDSN string `env:"SENTRY_WEBAPP_DSN"` + } + + TemplateOpt struct { + RendererGotenbergAddress string `env:"TEMPLATE_RENDERER_GOTENBERG_ADDRESS"` + RendererGotenbergEnabled bool `env:"TEMPLATE_RENDERER_GOTENBERG_ENABLED"` + } + + UpgradeOpt struct { + Debug bool `env:"UPGRADE_DEBUG"` + Always bool `env:"UPGRADE_ALWAYS"` + } + + WaitForOpt struct { + Delay time.Duration `env:"WAIT_FOR"` + StatusPage bool `env:"WAIT_FOR_STATUS_PAGE"` + Services string `env:"WAIT_FOR_SERVICES"` + ServicesTimeout time.Duration `env:"WAIT_FOR_SERVICES_TIMEOUT"` + ServicesProbeTimeout time.Duration `env:"WAIT_FOR_SERVICES_PROBE_TIMEOUT"` + ServicesProbeInterval time.Duration `env:"WAIT_FOR_SERVICES_PROBE_INTERVAL"` + } + + WebsocketOpt struct { + LogEnabled bool `env:"WEBSOCKET_LOG_ENABLED"` + Timeout time.Duration `env:"WEBSOCKET_TIMEOUT"` + PingTimeout time.Duration `env:"WEBSOCKET_PING_TIMEOUT"` + PingPeriod time.Duration `env:"WEBSOCKET_PING_PERIOD"` + } + + WorkflowOpt struct { + Register bool `env:"WORKFLOW_REGISTER"` + ExecDebug bool `env:"WORKFLOW_EXEC_DEBUG"` + CallStackSize int `env:"WORKFLOW_CALL_STACK_SIZE"` + StackTraceEnabled bool `env:"WORKFLOW_STACK_TRACE_ENABLED"` + } + + DiscoveryOpt struct { + Enabled bool `env:"DISCOVERY_ENABLED"` + Debug bool `env:"DISCOVERY_DEBUG"` + CortezaDomain string `env:"DISCOVERY_CORTEZA_DOMAIN"` + BaseUrl string `env:"DISCOVERY_BASE_URL"` + } +) + +// DB initializes and returns a DBOpt with default values +// +// This function is auto-generated +func DB() (o *DBOpt) { + o = &DBOpt{ + DSN: "sqlite3://file::memory:?cache=shared&mode=memory", + } + + // Custom defaults + func(o interface{}) { + if def, ok := o.(interface{ Defaults() }); ok { + def.Defaults() + } + }(o) + + fill(o) + + // Custom cleanup + func(o interface{}) { + if def, ok := o.(interface{ Cleanup() }); ok { + def.Cleanup() + } + }(o) + + return +} + +// HTTPClient initializes and returns a HTTPClientOpt with default values +// +// This function is auto-generated +func HTTPClient() (o *HTTPClientOpt) { + o = &HTTPClientOpt{ + Timeout: 30 * time.Second, + } + + // Custom defaults + func(o interface{}) { + if def, ok := o.(interface{ Defaults() }); ok { + def.Defaults() + } + }(o) + + fill(o) + + // Custom cleanup + func(o interface{}) { + if def, ok := o.(interface{ Cleanup() }); ok { + def.Cleanup() + } + }(o) + + return +} + +// HttpServer initializes and returns a HttpServerOpt with default values +// +// This function is auto-generated +func HttpServer() (o *HttpServerOpt) { + o = &HttpServerOpt{ + Domain: "localhost", + DomainWebapp: "localhost", + Addr: ":80", + EnableHealthcheckRoute: true, + EnableVersionRoute: true, + MetricsServiceLabel: "corteza", + MetricsUsername: "metrics", + MetricsPassword: string(rand.Bytes(5)), + EnablePanicReporting: true, + BaseUrl: "/", + ApiEnabled: true, + ApiBaseUrl: "/", + WebappBaseUrl: "/", + WebappBaseDir: "./webapp/public", + WebappList: "admin,compose,workflow,reporter", + SslTerminated: isSecure(), + WebConsoleEnabled: false, + WebConsoleUsername: "admin", + WebConsolePassword: string(rand.Bytes(32)), + } + + // Custom defaults + func(o interface{}) { + if def, ok := o.(interface{ Defaults() }); ok { + def.Defaults() + } + }(o) + + fill(o) + + // Custom cleanup + func(o interface{}) { + if def, ok := o.(interface{ Cleanup() }); ok { + def.Cleanup() + } + }(o) + + return +} + +// Rbac initializes and returns a RbacOpt with default values +// +// This function is auto-generated +func Rbac() (o *RbacOpt) { + o = &RbacOpt{ + BypassRoles: "super-admin", + AuthenticatedRoles: "authenticated", + AnonymousRoles: "anonymous", + } + + // Custom defaults + func(o interface{}) { + if def, ok := o.(interface{ Defaults() }); ok { + def.Defaults() + } + }(o) + + fill(o) + + // Custom cleanup + func(o interface{}) { + if def, ok := o.(interface{ Cleanup() }); ok { + def.Cleanup() + } + }(o) + + return +} + +// SCIM initializes and returns a SCIMOpt with default values +// +// This function is auto-generated +func SCIM() (o *SCIMOpt) { + o = &SCIMOpt{ + BaseURL: "/scim", + ExternalIdValidation: "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + } + + // Custom defaults + func(o interface{}) { + if def, ok := o.(interface{ Defaults() }); ok { + def.Defaults() + } + }(o) + + fill(o) + + // Custom cleanup + func(o interface{}) { + if def, ok := o.(interface{ Cleanup() }); ok { + def.Cleanup() + } + }(o) + + return +} + +// SMTP initializes and returns a SMTPOpt with default values +// +// This function is auto-generated +func SMTP() (o *SMTPOpt) { + o = &SMTPOpt{} + + // Custom defaults + func(o interface{}) { + if def, ok := o.(interface{ Defaults() }); ok { + def.Defaults() + } + }(o) + + fill(o) + + // Custom cleanup + func(o interface{}) { + if def, ok := o.(interface{ Cleanup() }); ok { + def.Cleanup() + } + }(o) + + return +} + +// ActionLog initializes and returns a ActionLogOpt with default values +// +// This function is auto-generated +func ActionLog() (o *ActionLogOpt) { + o = &ActionLogOpt{ + Enabled: true, + } + + // Custom defaults + func(o interface{}) { + if def, ok := o.(interface{ Defaults() }); ok { + def.Defaults() + } + }(o) + + fill(o) + + // Custom cleanup + func(o interface{}) { + if def, ok := o.(interface{ Cleanup() }); ok { + def.Cleanup() + } + }(o) + + return +} + +// Apigw initializes and returns a ApigwOpt with default values +// +// This function is auto-generated +func Apigw() (o *ApigwOpt) { + o = &ApigwOpt{ + Enabled: true, + ProfilerEnabled: true, + ProfilerGlobal: false, + ProxyFollowRedirects: true, + ProxyOutboundTimeout: time.Second * 30, + } + + // Custom defaults + func(o interface{}) { + if def, ok := o.(interface{ Defaults() }); ok { + def.Defaults() + } + }(o) + + fill(o) + + // Custom cleanup + func(o interface{}) { + if def, ok := o.(interface{ Cleanup() }); ok { + def.Cleanup() + } + }(o) + + return +} + +// Auth initializes and returns a AuthOpt with default values +// +// This function is auto-generated +func Auth() (o *AuthOpt) { + o = &AuthOpt{ + PasswordSecurity: true, + JwtAlgorithm: "HS512", + Secret: getSecretFromEnv("jwt secret"), + AccessTokenLifetime: time.Hour * 2, + RefreshTokenLifetime: time.Hour * 24 * 3, + ExternalRedirectURL: FullURL("/auth/external/{provider}/callback"), + ExternalCookieSecret: getSecretFromEnv("external cookie secret"), + BaseURL: FullURL("/auth"), + SessionCookieName: "session", + SessionCookiePath: pathPrefix("/auth"), + SessionCookieDomain: GuessApiHostname(), + SessionCookieSecure: isSecure(), + SessionLifetime: 24 * time.Hour, + SessionPermLifetime: 360 * 24 * time.Hour, + GarbageCollectorInterval: 15 * time.Minute, + RequestRateLimit: 60, + RequestRateWindowLength: time.Minute, + CsrfSecret: getSecretFromEnv("csrf secret"), + CsrfEnabled: true, + CsrfFieldName: "same-site-authenticity-token", + CsrfCookieName: "same-site-authenticity-token", + DefaultClient: "corteza-webapp", + } + + // Custom defaults + func(o interface{}) { + if def, ok := o.(interface{ Defaults() }); ok { + def.Defaults() + } + }(o) + + fill(o) + + // Custom cleanup + func(o interface{}) { + if def, ok := o.(interface{ Cleanup() }); ok { + def.Cleanup() + } + }(o) + + return +} + +// Corredor initializes and returns a CorredorOpt with default values +// +// This function is auto-generated +func Corredor() (o *CorredorOpt) { + o = &CorredorOpt{ + Addr: "localhost:50051", + MaxBackoffDelay: time.Minute, + MaxReceiveMessageSize: 2 << 23, + DefaultExecTimeout: time.Minute, + ListTimeout: time.Second * 2, + ListRefresh: time.Second * 5, + RunAsEnabled: true, + TlsCertPath: "/certs/corredor/client", + TlsCertCA: "ca.crt", + TlsCertPrivate: "private.key", + TlsCertPublic: "public.crt", + } + + // Custom defaults + func(o interface{}) { + if def, ok := o.(interface{ Defaults() }); ok { + def.Defaults() + } + }(o) + + fill(o) + + // Custom cleanup + func(o interface{}) { + if def, ok := o.(interface{ Cleanup() }); ok { + def.Cleanup() + } + }(o) + + return +} + +// Environment initializes and returns a EnvironmentOpt with default values +// +// This function is auto-generated +func Environment() (o *EnvironmentOpt) { + o = &EnvironmentOpt{ + Environment: "production", + } + + // Custom defaults + func(o interface{}) { + if def, ok := o.(interface{ Defaults() }); ok { + def.Defaults() + } + }(o) + + fill(o) + + // Custom cleanup + func(o interface{}) { + if def, ok := o.(interface{ Cleanup() }); ok { + def.Cleanup() + } + }(o) + + return +} + +// Eventbus initializes and returns a EventbusOpt with default values +// +// This function is auto-generated +func Eventbus() (o *EventbusOpt) { + o = &EventbusOpt{ + SchedulerEnabled: true, + SchedulerInterval: time.Minute, + } + + // Custom defaults + func(o interface{}) { + if def, ok := o.(interface{ Defaults() }); ok { + def.Defaults() + } + }(o) + + fill(o) + + // Custom cleanup + func(o interface{}) { + if def, ok := o.(interface{ Cleanup() }); ok { + def.Cleanup() + } + }(o) + + return +} + +// Federation initializes and returns a FederationOpt with default values +// +// This function is auto-generated +func Federation() (o *FederationOpt) { + o = &FederationOpt{ + Label: "federated", + Host: "local.cortezaproject.org", + StructureMonitorInterval: time.Minute * 2, + StructurePageSize: 1, + DataMonitorInterval: time.Minute, + DataPageSize: 100, + } + + // Custom defaults + func(o interface{}) { + if def, ok := o.(interface{ Defaults() }); ok { + def.Defaults() + } + }(o) + + fill(o) + + // Custom cleanup + func(o interface{}) { + if def, ok := o.(interface{ Cleanup() }); ok { + def.Cleanup() + } + }(o) + + return +} + +// Limit initializes and returns a LimitOpt with default values +// +// This function is auto-generated +func Limit() (o *LimitOpt) { + o = &LimitOpt{} + + // Custom defaults + func(o interface{}) { + if def, ok := o.(interface{ Defaults() }); ok { + def.Defaults() + } + }(o) + + fill(o) + + // Custom cleanup + func(o interface{}) { + if def, ok := o.(interface{ Cleanup() }); ok { + def.Cleanup() + } + }(o) + + return +} + +// Locale initializes and returns a LocaleOpt with default values +// +// This function is auto-generated +func Locale() (o *LocaleOpt) { + o = &LocaleOpt{ + Languages: "en", + QueryStringParam: "lng", + } + + // Custom defaults + func(o interface{}) { + if def, ok := o.(interface{ Defaults() }); ok { + def.Defaults() + } + }(o) + + fill(o) + + // Custom cleanup + func(o interface{}) { + if def, ok := o.(interface{ Cleanup() }); ok { + def.Cleanup() + } + }(o) + + return +} + +// Log initializes and returns a LogOpt with default values +// +// This function is auto-generated +func Log() (o *LogOpt) { + o = &LogOpt{ + Level: "warn", + StacktraceLevel: "dpanic", + } + + // Custom defaults + func(o interface{}) { + if def, ok := o.(interface{ Defaults() }); ok { + def.Defaults() + } + }(o) + + fill(o) + + // Custom cleanup + func(o interface{}) { + if def, ok := o.(interface{ Cleanup() }); ok { + def.Cleanup() + } + }(o) + + return +} + +// Messagebus initializes and returns a MessagebusOpt with default values +// +// This function is auto-generated +func Messagebus() (o *MessagebusOpt) { + o = &MessagebusOpt{ + Enabled: true, + } + + // Custom defaults + func(o interface{}) { + if def, ok := o.(interface{ Defaults() }); ok { + def.Defaults() + } + }(o) + + fill(o) + + // Custom cleanup + func(o interface{}) { + if def, ok := o.(interface{ Cleanup() }); ok { + def.Cleanup() + } + }(o) + + return +} + +// Monitor initializes and returns a MonitorOpt with default values +// +// This function is auto-generated +func Monitor() (o *MonitorOpt) { + o = &MonitorOpt{ + Interval: 5 * time.Minute, + } + + // Custom defaults + func(o interface{}) { + if def, ok := o.(interface{ Defaults() }); ok { + def.Defaults() + } + }(o) + + fill(o) + + // Custom cleanup + func(o interface{}) { + if def, ok := o.(interface{ Cleanup() }); ok { + def.Cleanup() + } + }(o) + + return +} + +// ObjectStore initializes and returns a ObjectStoreOpt with default values +// +// This function is auto-generated +func ObjectStore() (o *ObjectStoreOpt) { + o = &ObjectStoreOpt{ + Path: "var/store", + MinioSecure: true, + MinioBucket: "{component}", + } + + // Custom defaults + func(o interface{}) { + if def, ok := o.(interface{ Defaults() }); ok { + def.Defaults() + } + }(o) + + fill(o) + + // Custom cleanup + func(o interface{}) { + if def, ok := o.(interface{ Cleanup() }); ok { + def.Cleanup() + } + }(o) + + return +} + +// Provision initializes and returns a ProvisionOpt with default values +// +// This function is auto-generated +func Provision() (o *ProvisionOpt) { + o = &ProvisionOpt{ + Always: true, + Path: "provision/*", + } + + // Custom defaults + func(o interface{}) { + if def, ok := o.(interface{ Defaults() }); ok { + def.Defaults() + } + }(o) + + fill(o) + + // Custom cleanup + func(o interface{}) { + if def, ok := o.(interface{ Cleanup() }); ok { + def.Cleanup() + } + }(o) + + return +} + +// Seeder initializes and returns a SeederOpt with default values +// +// This function is auto-generated +func Seeder() (o *SeederOpt) { + o = &SeederOpt{} + + // Custom defaults + func(o interface{}) { + if def, ok := o.(interface{ Defaults() }); ok { + def.Defaults() + } + }(o) + + fill(o) + + // Custom cleanup + func(o interface{}) { + if def, ok := o.(interface{ Cleanup() }); ok { + def.Cleanup() + } + }(o) + + return +} + +// Sentry initializes and returns a SentryOpt with default values +// +// This function is auto-generated +func Sentry() (o *SentryOpt) { + o = &SentryOpt{ + AttachStacktrace: true, + MaxBreadcrumbs: 0, + Release: version.Version, + } + + // Custom defaults + func(o interface{}) { + if def, ok := o.(interface{ Defaults() }); ok { + def.Defaults() + } + }(o) + + fill(o) + + // Custom cleanup + func(o interface{}) { + if def, ok := o.(interface{ Cleanup() }); ok { + def.Cleanup() + } + }(o) + + return +} + +// Template initializes and returns a TemplateOpt with default values +// +// This function is auto-generated +func Template() (o *TemplateOpt) { + o = &TemplateOpt{} + + // Custom defaults + func(o interface{}) { + if def, ok := o.(interface{ Defaults() }); ok { + def.Defaults() + } + }(o) + + fill(o) + + // Custom cleanup + func(o interface{}) { + if def, ok := o.(interface{ Cleanup() }); ok { + def.Cleanup() + } + }(o) + + return +} + +// Upgrade initializes and returns a UpgradeOpt with default values +// +// This function is auto-generated +func Upgrade() (o *UpgradeOpt) { + o = &UpgradeOpt{ + Always: true, + } + + // Custom defaults + func(o interface{}) { + if def, ok := o.(interface{ Defaults() }); ok { + def.Defaults() + } + }(o) + + fill(o) + + // Custom cleanup + func(o interface{}) { + if def, ok := o.(interface{ Cleanup() }); ok { + def.Cleanup() + } + }(o) + + return +} + +// WaitFor initializes and returns a WaitForOpt with default values +// +// This function is auto-generated +func WaitFor() (o *WaitForOpt) { + o = &WaitForOpt{ + StatusPage: true, + ServicesTimeout: time.Minute, + ServicesProbeTimeout: time.Second * 30, + ServicesProbeInterval: time.Second * 5, + } + + // Custom defaults + func(o interface{}) { + if def, ok := o.(interface{ Defaults() }); ok { + def.Defaults() + } + }(o) + + fill(o) + + // Custom cleanup + func(o interface{}) { + if def, ok := o.(interface{ Cleanup() }); ok { + def.Cleanup() + } + }(o) + + return +} + +// Websocket initializes and returns a WebsocketOpt with default values +// +// This function is auto-generated +func Websocket() (o *WebsocketOpt) { + o = &WebsocketOpt{ + Timeout: 15 * time.Second, + PingTimeout: 120 * time.Second, + PingPeriod: ((120 * time.Second) * 9) / 10, + } + + // Custom defaults + func(o interface{}) { + if def, ok := o.(interface{ Defaults() }); ok { + def.Defaults() + } + }(o) + + fill(o) + + // Custom cleanup + func(o interface{}) { + if def, ok := o.(interface{ Cleanup() }); ok { + def.Cleanup() + } + }(o) + + return +} + +// Workflow initializes and returns a WorkflowOpt with default values +// +// This function is auto-generated +func Workflow() (o *WorkflowOpt) { + o = &WorkflowOpt{ + Register: true, + CallStackSize: 16, + StackTraceEnabled: true, + } + + // Custom defaults + func(o interface{}) { + if def, ok := o.(interface{ Defaults() }); ok { + def.Defaults() + } + }(o) + + fill(o) + + // Custom cleanup + func(o interface{}) { + if def, ok := o.(interface{ Cleanup() }); ok { + def.Cleanup() + } + }(o) + + return +} + +// Discovery initializes and returns a DiscoveryOpt with default values +// +// This function is auto-generated +func Discovery() (o *DiscoveryOpt) { + o = &DiscoveryOpt{ + Enabled: false, + Debug: false, + } + + // Custom defaults + func(o interface{}) { + if def, ok := o.(interface{ Defaults() }); ok { + def.Defaults() + } + }(o) + + fill(o) + + // Custom cleanup + func(o interface{}) { + if def, ok := o.(interface{ Cleanup() }); ok { + def.Cleanup() + } + }(o) + + return +} diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/options.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/options/options.go similarity index 85% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/options.go rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/options/options.go index 881ec72f0..9a505c17d 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/options.go +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/options/options.go @@ -16,17 +16,18 @@ type ( Corredor CorredorOpt Monitor MonitorOpt WaitFor WaitForOpt - HTTPServer HTTPServerOpt + HTTPServer HttpServerOpt Websocket WebsocketOpt Eventbus EventbusOpt Messagebus MessagebusOpt Federation FederationOpt SCIM SCIMOpt Workflow WorkflowOpt - RBAC RBACOpt + RBAC RbacOpt Locale LocaleOpt Limit LimitOpt - Plugins PluginsOpt + Discovery DiscoveryOpt + Apigw ApigwOpt } ) @@ -46,16 +47,17 @@ func Init() *Options { Corredor: *Corredor(), Monitor: *Monitor(), WaitFor: *WaitFor(), - HTTPServer: *HTTPServer(), + HTTPServer: *HttpServer(), Websocket: *Websocket(), Eventbus: *Eventbus(), Messagebus: *Messagebus(), Federation: *Federation(), SCIM: *SCIM(), Workflow: *Workflow(), - RBAC: *RBAC(), + RBAC: *Rbac(), Locale: *Locale(), Limit: *Limit(), - Plugins: *Plugins(), + Discovery: *Discovery(), + Apigw: *Apigw(), } } diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/waitFor.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/options/waitFor.go similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/options/waitFor.go rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/options/waitFor.go diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/payload/util.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/payload/util.go similarity index 68% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/payload/util.go rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/payload/util.go index fe1dd814b..b13285f77 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/payload/util.go +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/payload/util.go @@ -1,10 +1,14 @@ package payload import ( + "encoding/json" "fmt" + "github.com/cortezaproject/corteza/server/pkg/filter" + "github.com/cortezaproject/corteza/server/pkg/handle" "github.com/jmoiron/sqlx/types" "github.com/spf13/cast" "strconv" + "strings" "time" ) @@ -100,3 +104,40 @@ func ParseInt64(s string) int64 { func ParseBool(s string) bool { return cast.ToBool(s) } + +func ParseFilterState(s string) filter.State { + return filter.State(cast.ToUint(s)) +} + +// similar to labels.ParseStrings but for map[string]any +func ParseMeta(ss []string) (m map[string]any, err error) { + if len(ss) == 0 { + return nil, nil + } + + m = make(map[string]any) + + for _, s := range ss { + if strings.HasPrefix(s, "{") && strings.HasSuffix(s, "}") { + // assume json + if err = json.Unmarshal([]byte(s), &m); err != nil { + return nil, err + } + + continue + } + + kv := strings.SplitN(s, "=", 2) + if !handle.IsValid(kv[0]) { + return nil, fmt.Errorf("invalid metadata key format") + } + + if len(kv) == 2 { + m[kv[0]] = kv[1] + } else { + m[kv[0]] = nil + } + } + + return m, nil +} diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/ql/ast_nodes.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/ql/ast_nodes.go new file mode 100644 index 000000000..e1801c5ad --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/ql/ast_nodes.go @@ -0,0 +1,377 @@ +package ql + +import ( + "encoding/json" + "errors" + "fmt" + "strconv" + "strings" + + "github.com/cortezaproject/corteza/server/pkg/expr" + "github.com/spf13/cast" +) + +type ( + ASTNode struct { + pMeta *parserMeta + + // Meta holds additional node data + // while processing the AST + Meta map[string]any `json:"-"` + + Ref string `json:"ref,omitempty"` + Args ASTNodeSet `json:"args,omitempty"` + + Symbol string `json:"symbol,omitempty"` + Value *typedValue `json:"value,omitempty"` + + Raw string `json:"raw,omitempty"` + } + ASTNodeSet []*ASTNode + + typedValue struct { + V expr.TypedValue + } + + parserMeta struct { + opDef *opDef + } +) + +func (n *ASTNode) String() string { + if n == nil { + return "" + } + + // Leaf edge-cases + switch { + case n.Symbol != "": + return n.Symbol + case n.Value != nil: + return "\"" + cast.ToString(n.Value.V.Get()) + "\"" + } + + // Process arguments for the op. + args := make([]string, len(n.Args)) + for i, a := range n.Args { + s := a.String() + args[i] = s + } + + // Default handlers + return fmt.Sprintf("%s(%s)", n.Ref, strings.Join(args, ", ")) +} + +func MakeValueOf(t string, v interface{}) *typedValue { + return &typedValue{ + V: expr.Must(qlTypeRegistry(t).Cast(v)), + } +} + +func WrapValue(v expr.TypedValue) *typedValue { + return &typedValue{ + V: v, + } +} + +func (t *typedValue) UnmarshalJSON(in []byte) (err error) { + var ( + aux = struct { + Type string `json:"@type"` + Value interface{} `json:"@value"` + }{} + ) + + if len(in) == 0 { + return nil + } + + if err = json.Unmarshal(in, &aux); err != nil { + return + } + + if aux.Type == "" { + return errors.New("invalid value definition: missing @type definition") + } + + t.V, err = qlTypeRegistry(aux.Type).Cast(aux.Value) + return +} + +func (t *typedValue) MarshalJSON() ([]byte, error) { + var ( + aux = struct { + Type string `json:"@type"` + Value interface{} `json:"@value"` + }{} + ) + + if t.V == nil { + return json.Marshal(aux) + } + + aux.Type = t.V.Type() + aux.Value = t.V.Get() + + switch aux.Type { + case "ID", "Record", "User": + v := aux.Value.(uint64) + aux.Value = strconv.FormatUint(v, 10) + } + + return json.Marshal(aux) +} + +func (n *ASTNode) CollectSymbols() (out []string) { + out = make([]string, 0, 8) + + n.Traverse(func(a *ASTNode) (bool, *ASTNode, error) { + if a.Symbol != "" { + out = append(out, a.Symbol) + } + + return true, a, nil + }) + + return +} + +// Traverse traverses the AST down to leaf nodes. +// +// If fnc. returns false, the traversal of the current branch ends. +func (n *ASTNode) Traverse(f func(*ASTNode) (bool, *ASTNode, error)) (err error) { + var ok bool + var r *ASTNode + if n == nil { + return nil + } + + ok, r, err = f(n) + if err != nil { + return err + } + *n = *r + if !ok { + return + } + + for _, a := range n.Args { + if err = a.Traverse(f); err != nil { + return + } + } + + return +} + +func (n ASTNode) Clone() *ASTNode { + aa := n.Args + + if n.Args != nil { + n.Args = make(ASTNodeSet, len(aa)) + for i, a := range aa { + n.Args[i] = a.Clone() + } + } + + if n.Value != nil { + n.Value = &typedValue{ + V: n.Value.V, + } + } + + return &n +} + +func (n lNull) ToAST() (out *ASTNode) { + return &ASTNode{ + Ref: "null", + } +} + +func (n lBoolean) ToAST() (out *ASTNode) { + return &ASTNode{ + Value: MakeValueOf("Boolean", n.value), + } +} + +func (n lString) ToAST() (out *ASTNode) { + return &ASTNode{ + Value: MakeValueOf("String", n.value), + } +} + +// @todo differentiate between floats and others +func (n lNumber) ToAST() (out *ASTNode) { + if isFloaty(n.value) { + return &ASTNode{ + Value: MakeValueOf("Float", n.value), + } + } else { + return &ASTNode{ + Value: MakeValueOf("Integer", n.value), + } + } +} + +func (n operator) ToAST() (out *ASTNode) { + op := getOp(n.kind) + + return &ASTNode{ + Ref: op.name, + Args: make(ASTNodeSet, 0, 2), + pMeta: &parserMeta{opDef: op}, + } +} + +func (n Ident) ToAST() (out *ASTNode) { + return &ASTNode{ + Symbol: n.Value, + } +} + +func (n keyword) ToAST() (out *ASTNode) { + return &ASTNode{ + Ref: n.keyword, + } +} + +func (n interval) ToAST() (out *ASTNode) { + return &ASTNode{ + Ref: "interval", + Args: ASTNodeSet{ + // @todo consider introducing a new concept on the ASTNode to cover + // system defined symbols/keywords. This is a temporary solutions + // to fix reporting interval definitions; it should eventually be reworked + {Value: MakeValueOf("String", n.unit)}, + {Value: MakeValueOf("Number", n.value)}, + }, + } +} + +func (n function) ToAST() (out *ASTNode) { + auxA := n.arguments.ToAST() + + return &ASTNode{ + Ref: n.name, + Args: auxA.Args, + } +} + +func (nn parserNodeSet) ToAST() (out *ASTNode) { + auxArgs := make(ASTNodeSet, 0, len(nn)) + + for _, n := range nn { + auxArgs = append(auxArgs, n.ToAST()) + } + + return &ASTNode{ + Ref: "group", + Args: auxArgs, + } +} + +func (nn parserNodes) ToAST() (out *ASTNode) { + // Prep + auxArgs := make(ASTNodeSet, 0, len(nn)) + + // Convert the entire level to AST nodes + for _, n := range nn { + auxArgs = append(auxArgs, n.ToAST()) + } + + // In the current level, have the operators consume operands + // based on their defined weight + // + // - find the highest prio. op and have it consume what it wants + // - repeat until all ops are satisfied + // -- post optimizations? + for { + var bestOp *opDef + bestOpIx := -1 + + // We're done when it is reduced to 1 + if len(auxArgs) <= 1 { + break + } + + for _i, _a := range auxArgs { + i := _i + a := _a + + // use this as a delimiter for now + if a.pMeta == nil || a.pMeta.opDef == nil { + continue + } + + if bestOp == nil { + bestOp = a.pMeta.opDef + bestOpIx = i + continue + } + + if a.pMeta.opDef.weight < bestOp.weight { + bestOp = a.pMeta.opDef + bestOpIx = i + continue + } + } + + // Have the op consume what it needs. + arg := auxArgs[bestOpIx] + if !isUnary(arg.Ref) { + arg.Args = append(arg.Args, auxArgs[bestOpIx-1], auxArgs[bestOpIx+1]) + // this is not needed anymore so we can remove it + arg.pMeta = nil + + // Remove the consumed bits and replace it with the new bit + aux := auxArgs[0 : bestOpIx-1] + aux = append(aux, arg) + // +1 for right side, +1 because the left index is inclusive + aux = append(aux, auxArgs[bestOpIx+2:]...) + auxArgs = aux + } else { + arg.Args = append(arg.Args, auxArgs[bestOpIx+1]) + // this is not needed anymore so we can remove it + arg.pMeta = nil + + // Remove the consumed bits and replace it with the new bit + aux := auxArgs[0:bestOpIx] + aux = append(aux, arg) + // +1 because the left index is inclusive + aux = append(aux, auxArgs[bestOpIx+2:]...) + auxArgs = aux + } + } + + if len(auxArgs) > 1 { + return &ASTNode{ + Ref: "group", + Args: auxArgs, + } + } + + return auxArgs[0] +} + +// A simplified type registry for the types that QL needs to understand +func qlTypeRegistry(ref string) expr.Type { + switch ref { + case "ID", "Record", "User": + return &expr.ID{} + case "Boolean", "Bool": + return &expr.Boolean{} + case "Integer": + return &expr.Integer{} + case "UnsignedInteger": + return &expr.UnsignedInteger{} + case "Float", "Number": + return &expr.Float{} + case "String", "Select": + return &expr.String{} + case "DateTime": + return &expr.DateTime{} + } + + return nil +} diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/ql/lexer.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/ql/lexer.go new file mode 100644 index 000000000..876afa828 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/ql/lexer.go @@ -0,0 +1,112 @@ +package ql + +import ( + "bufio" + "io" +) + +// Lexer represents a lexical scanner. +type ( + RuneReader interface { + read() rune + unread() + } + + TokenConsumers interface { + Test(ch rune) bool + Consume(s RuneReader) Token + } + + Token struct { + code tokenCode + literal string + line uint + char uint + } + + Lexer struct { + r *bufio.Reader + consumers []TokenConsumers + line uint + char uint + } +) + +// eof represents a marker rune for the end of the reader. +var eof = rune(0) + +// NewLexer returns a new instance of Lexer. +func NewLexer(r io.Reader) *Lexer { + return &Lexer{ + r: bufio.NewReader(r), + consumers: []TokenConsumers{ + &TokenConsumerGeneric{token: WS, whitelist: CHAR_WHITELIST_WHITESPACE}, + // @todo ensure operator order (eg != is valid, =! is not) + &TokenConsumerGeneric{token: OPERATOR, whitelist: CHAR_WHITELIST_OPERATORS}, + &TokenConsumerGeneric{token: COMMA, whitelist: ",", maxLength: 1}, + &TokenConsumerGeneric{token: DOT, whitelist: ".", maxLength: 1}, + &TokenConsumerGeneric{token: PARENTHESIS_OPEN, whitelist: "(", maxLength: 1}, + &TokenConsumerGeneric{token: PARENTHESIS_CLOSE, whitelist: ")", maxLength: 1}, + &TokenConsumerString{}, + &TokenConsumerNumber{}, + &TokenConsumerIdent{}, + }, + } +} + +// Scan returns the next token and literal value. +func (s *Lexer) Scan() Token { + var ch = s.peek() + + if ch == '\n' { + s.line++ + s.char = 0 + } + + if eof == ch { + return Token{code: EOF, line: s.line, char: s.char} + } + + for _, c := range s.consumers { + if c.Test(ch) { + t := c.Consume(s) + t.line = s.line + t.char = s.char + return t + } + } + + return Token{code: ILLEGAL, literal: string(ch), line: s.line, char: s.char} +} + +// read reads the next rune from the buffered reader. +// Returns the rune(0) if an error occurs (or io.EOF is returned). +func (s *Lexer) read() rune { + ch, _, err := s.r.ReadRune() + s.char++ + if err != nil { + return eof + } + return ch +} + +func (s *Lexer) peek() rune { + bb, err := s.r.Peek(1) + if err != nil || len(bb) == 0 { + return eof + } + return rune(bb[0]) +} + +// unread places the previously read rune back on the reader. +func (s *Lexer) unread() { _ = s.r.UnreadRune() } + +func (t Token) Is(cc ...tokenCode) bool { + for _, c := range cc { + if t.code == c { + return true + } + } + + return false +} diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/ql/parser.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/ql/parser.go new file mode 100644 index 000000000..a8ad239b2 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/ql/parser.go @@ -0,0 +1,309 @@ +package ql + +import ( + "fmt" + "strings" +) + +type ( + // Parser represents a parser. + Parser struct { + lexer *Lexer + tokbuf []Token + + OnIdent IdentHandler + OnFunction FunctionHandler + + // parenthesis level control + level uint + } + + IdentHandler func(ident Ident) (Ident, error) + FunctionHandler func(ident function) (parserNode, error) +) + +// NewParser returns a new instance of Parser. +func NewParser() *Parser { + p := &Parser{ + OnIdent: func(ident Ident) (Ident, error) { return ident, nil }, + OnFunction: func(ident function) (parserNode, error) { return ident, nil }, + } + + return p +} + +// Removes oldest token in the buffer, adds new one and returns 2nd oldest +func (p *Parser) nextToken() Token { + var t Token + for { + t = p.lexer.Scan() + if !t.Is(WS) { + p.tokbuf = append(p.tokbuf[1:], t) + return p.tokbuf[0] + } + } +} + +func (p *Parser) peekToken(s int) Token { + return p.tokbuf[s] +} + +func (p *Parser) initLexer(s string) { + p.lexer = NewLexer(strings.NewReader(s)) + p.tokbuf = make([]Token, 3) + + for c := 1; c < cap(p.tokbuf); c++ { + // Fill the buffer + p.nextToken() + } +} + +// Parse parses the given expression and returns the generated AST +func (p *Parser) Parse(s string) (*ASTNode, error) { + p.initLexer(s) + + if set, err := p.parse(p.nextToken()); err != nil { + return nil, err + } else if len(set) == 1 { + err := set[0].Validate() + if err != nil { + return nil, err + } + return set[0].ToAST(), nil + } else { + err := set.Validate() + if err != nil { + return nil, err + } + return set.ToAST(), nil + } + +} + +// Peek ahead if there is an alias ident () +// +// @todo remove this; not used anywhere after report builder gets removed +func (p *Parser) peekIfAlias() bool { + var f, s = p.peekToken(1), p.peekToken(2) + return f.Is(IDENT) && strings.ToUpper(f.literal) == "AS" && s.Is(IDENT) +} + +func (p *Parser) parse(t Token) (list parserNodes, err error) { + goto checkToken + +next: + if p.peekToken(1).Is(COMMA) || p.peekIfAlias() { + // Peek ahead and exit on comma + return + } + if p.peekToken(1).Is(PARENTHESIS_CLOSE) { + // Peek ahead and exit on closed parenthesis + if p.level == 0 { + return nil, fmt.Errorf("closing unopened parenthesis in expression") + } + p.level-- + return + } + + t = p.nextToken() + +checkToken: + switch t.code { + case EOF: + break + case WS: + // Ignore ws... next token... + goto next + case ILLEGAL: + return nil, fmt.Errorf("found an illegal token (%+v)", t) + case IDENT: + var ident parserNode + if ident, err = p.parseIdent(t); err != nil { + return nil, err + } else { + list = append(list, ident) + goto next + } + case LNULL: + list = append(list, lNull{}) + goto next + case LBOOL: + list = append(list, lBoolean{value: evalBool(t.literal)}) + goto next + case OPERATOR: + if len(list) > 0 { + // Merge with previous operator node + if prevOp, ok := list[len(list)-1].(operator); ok { + list[len(list)-1] = operator{kind: prevOp.kind + " " + t.literal} + goto next + } + } + + list = append(list, operator{kind: t.literal}) + goto next + case KEYWORD: + if keyword, err := p.parseKeyword(t); err != nil { + return nil, err + } else { + list = append(list, keyword) + } + goto next + case LNUMBER: + list = append(list, lNumber{value: t.literal}) + goto next + case LSTRING: + list = append(list, lString{value: t.literal}) + goto next + case PARENTHESIS_OPEN: + depth := p.level + p.level++ + if sub, err := p.parse(p.nextToken()); err != nil { + return nil, err + } else { + list = append(list, sub) + } + + // Allow parent level to continue parsing. + // Example: ((A) AND (B)) + // +1 since PARENTHESIS_CLOSE decrease level + if (p.level + 1) != depth { + p.nextToken() + goto next + } + default: + return nil, fmt.Errorf("unexpected token while parsing expression (%v)", t) + } + + return list, nil +} + +func (p *Parser) parseIdent(t Token) (list parserNode, err error) { + if p.peekToken(1).Is(PARENTHESIS_OPEN) { + // Handle function calls: ... + f := function{name: t.literal} + if f.arguments, err = p.parseSet(); err != nil { + return nil, err + } else { + return p.OnFunction(f) + } + } + + i := Ident{Value: t.literal} + + if p.peekToken(1).Is(DOT) { + p.nextToken() + i.Value += "." + l2 := p.nextToken() + if l2.Is(IDENT) { + i.Value += l2.literal + } + } + + return p.OnIdent(i) +} + +func (p *Parser) parseSet() (list parserNodeSet, err error) { + var expr parserNodes + var parenthesisOpened = false + +next: + t := p.nextToken() + + if p.peekIfAlias() { + return + } + + switch t.code { + case WS: + goto next + case PARENTHESIS_OPEN: + p.level++ + parenthesisOpened = true + goto next + case LNUMBER: + list = append(list, lNumber{value: t.literal}) + goto next + case LSTRING: + list = append(list, lString{value: t.literal}) + goto next + case OPERATOR: + list = append(list, operator{kind: t.literal}) + goto next + case KEYWORD: + if keyword, err := p.parseKeyword(t); err != nil { + return nil, err + } else { + list = append(list, keyword) + } + goto next + case IDENT: + if p.peekToken(1).Is(OPERATOR) { + // Looks like we have an expression ahead of us + + if parenthesisOpened { + // Expression will find closing parenthesis and dec. the level + // so, lets bump up the number + p.level++ + } + + if expr, err = p.parse(t); err != nil { + return + } + + list = append(list, expr) + goto next + } + + var ident parserNode + if ident, err = p.parseIdent(t); err != nil { + return nil, err + } else { + list = append(list, ident) + + goto next + } + case COMMA: + goto next + case EOF: + return + case PARENTHESIS_CLOSE: + // Peek ahead and exit on closed parenthesis + if p.level == 0 { + return nil, fmt.Errorf("closing unopened parenthesis in set") + } + p.level-- + return + default: + return nil, fmt.Errorf("unexpected token while parsing set (%v)", t) + } +} + +func (p *Parser) parseKeyword(t Token) (list parserNode, err error) { + switch strings.ToUpper(t.literal) { + case "INTERVAL": + i := interval{value: p.nextToken().literal} + u := p.nextToken() + + if u.code != IDENT { + return nil, fmt.Errorf("expecting identifier, got %v", t) + } else { + switch strings.ToUpper(u.literal) { + case "MICROSECOND", "SECOND", "MINUTE", "HOUR", + "DAY", "WEEK", "MONTH", "QUARTER", "YEAR", + "SECOND_MICROSECOND", "MINUTE_MICROSECOND", "MINUTE_SECOND", "HOUR_MICROSECOND", "HOUR_SECOND", + "HOUR_MINUTE", "DAY_MICROSECOND", "DAY_SECOND", "DAY_MINUTE", "DAY_HOUR", "YEAR_MONTH": + // All good + break + default: + return nil, fmt.Errorf("expecting interval unit, got %v", u.literal) + } + } + + i.unit = u.literal + + return i, nil + + default: + return keyword{keyword: t.literal}, nil + } +} diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/ql/parser_nodes.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/ql/parser_nodes.go new file mode 100644 index 000000000..d5574bc32 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/ql/parser_nodes.go @@ -0,0 +1,213 @@ +package ql + +import ( + "fmt" + "strings" +) + +// SelectStatement represents a SQL SELECT statement. +type ( + parserNode interface { + fmt.Stringer + + Validate() error + ToAST() *ASTNode + } + + parserNodeSet []parserNode // Stream of comma delimited nodes + parserNodes []parserNode // Stream of space delimited nodes + + lNull struct{} + lBoolean struct{ value bool } + + lString struct { + value string + args []interface{} + } + + lNumber struct { + value string + } + + operator struct { + kind string + } + + Ident struct { + Value string + args []interface{} + } + + keyword struct { + keyword string + } + + interval struct { + value string + unit string + } + + function struct { + name string + arguments parserNodeSet + } + + opDef struct { + name string + weight int + } +) + +var ( + ops = map[string]opDef{ + // generic comparison + `=`: {name: `eq`, weight: 40}, + `==`: {name: `eq`, weight: 40}, + `===`: {name: `eq`, weight: 40}, + `!=`: {name: `ne`, weight: 40}, + `!==`: {name: `ne`, weight: 40}, + `<>`: {name: `ne`, weight: 40}, + `<`: {name: `lt`, weight: 30}, + `<=`: {name: `le`, weight: 30}, + `>`: {name: `gt`, weight: 30}, + `>=`: {name: `ge`, weight: 30}, + `IS`: {name: `is`, weight: 40}, + `IS NOT`: {name: `nis`, weight: 40}, + `IN`: {name: `in`, weight: 40}, + `NOT IN`: {name: `nin`, weight: 40}, + + // conjunction + `AND`: {name: `and`, weight: 50}, + `&&`: {name: `and`, weight: 50}, + `OR`: {name: `or`, weight: 60}, + `||`: {name: `or`, weight: 60}, + `XOR`: {name: `xor`, weight: 60}, + + // math + `+`: {name: `add`, weight: 20}, + `-`: {name: `sub`, weight: 20}, + `*`: {name: `mult`, weight: 10}, + `/`: {name: `div`, weight: 10}, + + // modifiers + `!`: {name: `not`, weight: 0}, + + // str comp. + `LIKE`: {name: `like`, weight: 40}, + `NOT LIKE`: {name: `nlike`, weight: 40}, + } +) + +func isUnary(s string) bool { + return s == "!" || s == "not" +} + +func getOp(op string) *opDef { + o, ok := ops[strings.ToUpper(op)] + if !ok { + return nil + } + return &o +} + +func (n lNull) Validate() (err error) { return } +func (n lNull) String() string { return "NULL" } + +func (n lBoolean) Validate() (err error) { return } +func (n lBoolean) String() string { + if n.value { + return "TRUE" + } else { + return "FALSE" + } +} + +func (n lString) Validate() (err error) { return } +func (n lString) String() string { return fmt.Sprintf("%q", n.value) } + +func (n lNumber) Validate() (err error) { return } +func (n lNumber) String() string { return n.value } + +func (n operator) Validate() (err error) { + if getOp(n.kind) == nil { + return fmt.Errorf("unknown operator '%s'", n.kind) + } + return +} +func (n operator) String() string { return n.kind } + +func (n keyword) Validate() (err error) { return } +func (n keyword) String() string { return n.keyword } + +func (n interval) Validate() (err error) { return } +func (n interval) String() string { return fmt.Sprintf("INTERVAL %s %s", n.value, n.unit) } + +func (n function) Validate() (err error) { return } +func (n function) String() string { return fmt.Sprintf("%s(%s)", n.name, n.arguments) } + +func (n Ident) Validate() (err error) { return } +func (n Ident) String() string { return n.Value } + +func (nn parserNodes) Validate() (err error) { + if err = validate(nn); err != nil { + return + } + + l := len(nn) + if l == 0 { + return fmt.Errorf("empty set") + } + + if op, ok := nn[0].(operator); ok && !isUnary(op.kind) { + return fmt.Errorf("malformed expression, unexpected operator '%s' at first node", op) + } + + if l > 1 { + if op, ok := nn[l-1].(operator); ok { + return fmt.Errorf("malformed expression, unexpected operator '%s' at last node", op) + } + } + + return +} + +func (nn parserNodes) String() (out string) { + for i, n := range nn { + if i > 0 { + out = out + " " + } + + out = out + n.String() + } + + return +} + +func (nn parserNodeSet) Validate() (err error) { + return validate(nn) +} + +func (nn parserNodeSet) String() (out string) { + for i, n := range nn { + if i > 0 { + out = out + ", " + } + out = out + n.String() + } + + return +} + +func validate(nn []parserNode) (err error) { + if len(nn) == 0 { + return fmt.Errorf("empty node set") + } + + for _, n := range nn { + if err = n.Validate(); err != nil { + return + } + } + + return +} diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/ql/token_codes.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/ql/token_codes.go new file mode 100644 index 000000000..1ce7a1abd --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/ql/token_codes.go @@ -0,0 +1,29 @@ +package ql + +type ( + tokenCode int +) + +const ( + CHAR_WHITELIST_WHITESPACE = " \n\t" + CHAR_WHITELIST_OPERATORS = "!+-/*=<>&|" + CHAR_WHITELIST_QUOTES = "'" +) + +const ( + // Special tokens + ILLEGAL tokenCode = iota + EOF + WS // 2 + IDENT + LNULL + LBOOL // 4 + LNUMBER + LSTRING + COMMA // , + DOT // . + OPERATOR // + - / * + PARENTHESIS_OPEN + PARENTHESIS_CLOSE + KEYWORD +) diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/ql/token_consumers.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/ql/token_consumers.go new file mode 100644 index 000000000..7cb09d3fc --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/ql/token_consumers.go @@ -0,0 +1,159 @@ +package ql + +import ( + "bytes" + "strings" +) + +type ( + TokenConsumerWS struct{} + TokenConsumerIdent struct{} + TokenConsumerOperator struct{} + TokenConsumerComma struct{} + TokenConsumerString struct{} + TokenConsumerNumber struct{} + TokenConsumerGeneric struct { + token tokenCode + whitelist string + maxLength int + } +) + +func in(ch rune, wl string) bool { + var w rune + for _, w = range wl { + if ch == w { + return true + } + } + return false +} + +func (g TokenConsumerGeneric) Test(ch rune) bool { + return in(ch, g.whitelist) +} + +func (g TokenConsumerGeneric) Consume(s RuneReader) Token { + // Create a buffer and read the current character into it. + var buf bytes.Buffer + buf.WriteRune(s.read()) + + // Read every subsequent whitespace character into the buffer. + // Non-whitespace characters and EOF will cause the loop to exit. + for { + if g.maxLength > 0 && buf.Len() >= g.maxLength { + // Length control + break + } + + if ch := s.read(); ch == eof { + break + } else if !g.Test(ch) { + s.unread() + break + } else { + buf.WriteRune(ch) + } + } + + return Token{code: g.token, literal: buf.String()} +} + +func (i TokenConsumerIdent) Test(ch rune) bool { + return isLetter(ch) +} + +// Consumes the current rune and all contiguous ident runes. +func (TokenConsumerIdent) Consume(s RuneReader) Token { + // Create a buffer and read the current character into it. + var buf bytes.Buffer + buf.WriteRune(s.read()) + + // Read every subsequent ident character into the buffer. + // Non-ident characters and EOF will cause the loop to exit. + for { + if ch := s.read(); ch == eof { + break + } else if !isLetter(ch) && !isDigit(ch) && ch != '_' { + s.unread() + break + } else { + _, _ = buf.WriteRune(ch) + } + } + + lit := strings.ToUpper(buf.String()) + + switch lit { + case "NULL": + return Token{code: LNULL} + case "TRUE", "FALSE": + return Token{code: LBOOL, literal: lit} + case "IS", "LIKE", "NOT", "AND", "OR", "XOR", "IN": + return Token{code: OPERATOR, literal: lit} + case "DESC", "ASC", "INTERVAL": + return Token{code: KEYWORD, literal: lit} + } + + // Otherwise return as a regular identifier. + return Token{code: IDENT, literal: buf.String()} +} + +func (str TokenConsumerString) Test(ch rune) bool { + return in(ch, CHAR_WHITELIST_QUOTES) +} + +// Consumes entire string (skipping quotes) +func (str TokenConsumerString) Consume(s RuneReader) Token { + var buf bytes.Buffer + var escaping = false + var ch = s.read() // skip quite + + for { + if ch = s.read(); ch == eof { + break + } else if !escaping && str.Test(ch) { // test for quote + return Token{code: LSTRING, literal: buf.String()} + } else { + escaping = !escaping && ch == '\\' + if !escaping { + // Add char to buffer if not escaping + _, _ = buf.WriteRune(ch) + } + } + } + + // This string did not end properly (with an enclosing quote). + return Token{code: ILLEGAL, literal: buf.String() + string(ch)} +} + +func (str TokenConsumerNumber) Test(ch rune) bool { + return isDigit(ch) +} + +// Consumes entire number (very naive and simplified) +func (str TokenConsumerNumber) Consume(s RuneReader) Token { + // Create a buffer and read the current character into it. + var buf bytes.Buffer + buf.WriteRune(s.read()) + + for { + if ch := s.read(); ch == eof { + break + } else if !isDigit(ch) { + s.unread() + break + } else { + _, _ = buf.WriteRune(ch) + } + } + + // Otherwise return as a regular identifier. + return Token{code: LNUMBER, literal: buf.String()} +} + +// isLetter returns true if the rune is a letter. +func isLetter(ch rune) bool { return (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') } + +// isDigit returns true if the rune is a digit. +func isDigit(ch rune) bool { return ch >= '0' && ch <= '9' } diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/ql/util.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/ql/util.go new file mode 100644 index 000000000..dd01af5a2 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/ql/util.go @@ -0,0 +1,56 @@ +package ql + +import ( + "regexp" + "strings" +) + +var ( + truthy = regexp.MustCompile(`^(t(rue)?|y(es)?|1)$`) +) + +// Check what boolean value the given string conforms to +func evalBool(v string) bool { + return truthy.MatchString(strings.ToLower(v)) +} + +// Check if the given string is a float +func isFloaty(v string) bool { + return strings.Contains(v, ".") +} + +func MergeAnd(a, b *ASTNode) *ASTNode { + return merger(a, b, "and") +} + +func MergeOr(a, b *ASTNode) *ASTNode { + return merger(a, b, "or") +} + +func merger(a, b *ASTNode, ref string) *ASTNode { + // 1. merge the two + aa := make(ASTNodeSet, 0, 2) + + // It needs to be under a group, so we get an `(a) and/or (b)` + if a != nil { + aa = append(aa, &ASTNode{Ref: "group", Args: ASTNodeSet{a}}) + } + if b != nil { + aa = append(aa, &ASTNode{Ref: "group", Args: ASTNodeSet{b}}) + } + + // 2. flatten + // @todo do some more in-depth processing? + if len(aa) == 1 { + // this [0][0] will always hold if we get to this point + return aa[0].Args[0] + } + if len(aa) == 0 { + return nil + } + + return &ASTNode{ + Ref: ref, + Args: aa, + } +} diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/rand/rand.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/rand/rand.go similarity index 100% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/rand/rand.go rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/rand/rand.go diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/slice/ints.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/slice/ints.go new file mode 100644 index 000000000..a348d233a --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/slice/ints.go @@ -0,0 +1,42 @@ +package slice + +import ( + "bytes" + "strconv" +) + +type ( + // UInt64s represents slice of uint64 with some extra powers: + // - encodes (JSON) uint64s as strings + UInt64s []uint64 +) + +func HasUint64(ss []uint64, s uint64) bool { + for i := range ss { + if ss[i] == s { + return true + } + } + + return false +} + +func (uu UInt64s) MarshalJSON() ([]byte, error) { + var ( + buf = bytes.Buffer{} + ) + + buf.WriteByte('[') + for i, u := range uu { + if i > 0 { + buf.WriteByte(',') + } + + buf.WriteByte('"') + buf.WriteString(strconv.FormatUint(u, 10)) + buf.WriteByte('"') + } + buf.WriteByte(']') + + return buf.Bytes(), nil +} diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/slice/keys.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/slice/keys.go new file mode 100644 index 000000000..fda7f5030 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/slice/keys.go @@ -0,0 +1,26 @@ +package slice + +import ( + "reflect" + "sort" + + "github.com/spf13/cast" +) + +// Keys returns sorted map keys +// +// If input is not a map it will return an empty slice +func Keys(m interface{}) (kk []string) { + v := reflect.ValueOf(m) + if v.Kind() == reflect.Map { + kk = make([]string, 0, v.Len()) + for _, kval := range v.MapKeys() { + if k := cast.ToString(kval.Interface()); k != "" { + kk = append(kk, k) + } + } + } + + sort.Strings(kk) + return +} diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/slice/strings.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/slice/strings.go new file mode 100644 index 000000000..2977a5a8e --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/slice/strings.go @@ -0,0 +1,89 @@ +package slice + +func ContainsAny[C comparable](haystack []C, needles ...C) bool { + for _, h := range haystack { + for _, n := range needles { + if h == n { + return true + } + } + } + + return false +} + +func ContainsAll[C comparable](haystack []C, needles ...C) bool { + var matches = 0 + for _, h := range haystack { + for _, n := range needles { + if h == n { + matches++ + } + } + } + + return len(needles) == matches +} + +func IntersectStrings(a []string, b []string) []string { + var ( + out = make([]string, 0, len(a)+len(b)) + ah = ToStringBoolMap(a) + ) + + for i := 0; i < len(b); i++ { + if ah[b[i]] { + out = append(out, b[i]) + } + } + + return out +} + +func ToStringBoolMap(s []string) (h map[string]bool) { + h = make(map[string]bool) + for i := 0; i < len(s); i++ { + h[s[i]] = true + } + + return +} + +func ToUint64BoolMap(u []uint64) (h map[uint64]bool) { + h = make(map[uint64]bool) + for i := 0; i < len(u); i++ { + h[u[i]] = true + } + + return +} + +// @todo replace with ContainsAny +func HasString(ss []string, s string) bool { + for i := range ss { + if ss[i] == s { + return true + } + } + + return false +} + +// RemoveString removes one or more strings form the input slice +func PluckString(ss []string, ff ...string) (o []string) { + if len(ff) == 0 { + return ss + } + + f := ToStringBoolMap(ff) + o = make([]string, 0, len(ss)) + + for _, s := range ss { + if !f[s] { + // remove from the list + o = append(o, s) + } + } + + return o +} diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/sql/json.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/sql/json.go new file mode 100644 index 000000000..0ee5a05ea --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/sql/json.go @@ -0,0 +1,26 @@ +package sql + +import ( + "encoding/json" + "fmt" +) + +func ParseJSON(raw any, dest any) error { + var ( + data []byte + ) + + if b, ok := raw.([]byte); ok { + data = b + } else if s, ok := raw.(string); ok { + data = []byte(s) + } else if raw == nil { + return nil + } + + if err := json.Unmarshal(data, dest); err != nil { + return fmt.Errorf("can not scan JSON into %T: %w", dest, err) + } + + return nil +} diff --git a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/version/version.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/version/version.go similarity index 80% rename from aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/version/version.go rename to extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/version/version.go index cdbb2dc9f..1da6ab570 100644 --- a/aux/server-discovery/vendor/github.com/cortezaproject/corteza-server/pkg/version/version.go +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/version/version.go @@ -9,7 +9,7 @@ var ( BuildTime = time.Now().Format(time.RFC3339) // Version is set as LDFLAG at build time: - // -X github.com/cortezaproject/corteza-server/pkg/version.Version=.... + // -X github.com/cortezaproject/corteza/server/pkg/version.Version=.... // See Makefile for details Version = "development" ) diff --git a/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/xss/rich_text.go b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/xss/rich_text.go new file mode 100644 index 000000000..63b942cd3 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/cortezaproject/corteza/server/pkg/xss/rich_text.go @@ -0,0 +1,46 @@ +package xss + +import ( + "html" + "regexp" + + "github.com/microcosm-cc/bluemonday" +) + +var ( + p *bluemonday.Policy +) + +func init() { + // use standard html escaping policy + p = bluemonday.UGCPolicy() + + // match only colors for html editor elements on style attr + p.AllowAttrs("style").OnElements("span", "p") + p.AllowStyles("color").Matching(regexp.MustCompile("(?i)^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$")).Globally() + p.AllowStyles("background-color").Matching(regexp.MustCompile("(?i)^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$")).Globally() + + // allow text alignment + p.AllowStyles("text-align").Matching(regexp.MustCompile("^(left|center|right|justify)$")).OnElements("span", "p") + + // allow checklists + p.AllowAttrs("data-type").Matching(regexp.MustCompile("^(todo_list|todo_item)$")).OnElements("ul", "li") + p.AllowAttrs("data-done").Matching(regexp.MustCompile("^(true|false)$")).OnElements("ul", "li") + p.AllowAttrs("data-drag-handle").OnElements("li") + p.AllowAttrs("contenteditable").OnElements("span", "div") + p.AllowAttrs("class").Matching(regexp.MustCompile("^(todo-checkbox|todo-content)$")) + + // some link specifics we need; allow target but assure safety + p.AllowAttrs("target").OnElements("a") + p.AddTargetBlankToFullyQualifiedLinks(false) +} + +// RichText assures safe HTML content +func RichText(in string) string { + sanitized := p.Sanitize(in) + + // handle escaped strings and unescape them + // all the dangerous chars should have been stripped + // by now + return html.UnescapeString(sanitized) +} diff --git a/aux/server-discovery/vendor/github.com/davecgh/go-spew/LICENSE b/extra/server-discovery/vendor/github.com/davecgh/go-spew/LICENSE similarity index 100% rename from aux/server-discovery/vendor/github.com/davecgh/go-spew/LICENSE rename to extra/server-discovery/vendor/github.com/davecgh/go-spew/LICENSE diff --git a/aux/server-discovery/vendor/github.com/davecgh/go-spew/spew/bypass.go b/extra/server-discovery/vendor/github.com/davecgh/go-spew/spew/bypass.go similarity index 100% rename from aux/server-discovery/vendor/github.com/davecgh/go-spew/spew/bypass.go rename to extra/server-discovery/vendor/github.com/davecgh/go-spew/spew/bypass.go diff --git a/aux/server-discovery/vendor/github.com/davecgh/go-spew/spew/bypasssafe.go b/extra/server-discovery/vendor/github.com/davecgh/go-spew/spew/bypasssafe.go similarity index 100% rename from aux/server-discovery/vendor/github.com/davecgh/go-spew/spew/bypasssafe.go rename to extra/server-discovery/vendor/github.com/davecgh/go-spew/spew/bypasssafe.go diff --git a/aux/server-discovery/vendor/github.com/davecgh/go-spew/spew/common.go b/extra/server-discovery/vendor/github.com/davecgh/go-spew/spew/common.go similarity index 100% rename from aux/server-discovery/vendor/github.com/davecgh/go-spew/spew/common.go rename to extra/server-discovery/vendor/github.com/davecgh/go-spew/spew/common.go diff --git a/aux/server-discovery/vendor/github.com/davecgh/go-spew/spew/config.go b/extra/server-discovery/vendor/github.com/davecgh/go-spew/spew/config.go similarity index 100% rename from aux/server-discovery/vendor/github.com/davecgh/go-spew/spew/config.go rename to extra/server-discovery/vendor/github.com/davecgh/go-spew/spew/config.go diff --git a/aux/server-discovery/vendor/github.com/davecgh/go-spew/spew/doc.go b/extra/server-discovery/vendor/github.com/davecgh/go-spew/spew/doc.go similarity index 100% rename from aux/server-discovery/vendor/github.com/davecgh/go-spew/spew/doc.go rename to extra/server-discovery/vendor/github.com/davecgh/go-spew/spew/doc.go diff --git a/aux/server-discovery/vendor/github.com/davecgh/go-spew/spew/dump.go b/extra/server-discovery/vendor/github.com/davecgh/go-spew/spew/dump.go similarity index 100% rename from aux/server-discovery/vendor/github.com/davecgh/go-spew/spew/dump.go rename to extra/server-discovery/vendor/github.com/davecgh/go-spew/spew/dump.go diff --git a/aux/server-discovery/vendor/github.com/davecgh/go-spew/spew/format.go b/extra/server-discovery/vendor/github.com/davecgh/go-spew/spew/format.go similarity index 100% rename from aux/server-discovery/vendor/github.com/davecgh/go-spew/spew/format.go rename to extra/server-discovery/vendor/github.com/davecgh/go-spew/spew/format.go diff --git a/aux/server-discovery/vendor/github.com/davecgh/go-spew/spew/spew.go b/extra/server-discovery/vendor/github.com/davecgh/go-spew/spew/spew.go similarity index 100% rename from aux/server-discovery/vendor/github.com/davecgh/go-spew/spew/spew.go rename to extra/server-discovery/vendor/github.com/davecgh/go-spew/spew/spew.go diff --git a/aux/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/LICENSE b/extra/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/LICENSE similarity index 100% rename from aux/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/LICENSE rename to extra/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/LICENSE diff --git a/extra/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/README.md b/extra/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/README.md new file mode 100644 index 000000000..4ae25dba0 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/README.md @@ -0,0 +1,72 @@ +secp256k1 +========= + +[![Build Status](https://github.com/decred/dcrd/workflows/Build%20and%20Test/badge.svg)](https://github.com/decred/dcrd/actions) +[![ISC License](https://img.shields.io/badge/license-ISC-blue.svg)](http://copyfree.org) +[![Doc](https://img.shields.io/badge/doc-reference-blue.svg)](https://pkg.go.dev/github.com/decred/dcrd/dcrec/secp256k1/v4) + +Package secp256k1 implements optimized secp256k1 elliptic curve operations. + +This package provides an optimized pure Go implementation of elliptic curve +cryptography operations over the secp256k1 curve as well as data structures and +functions for working with public and private secp256k1 keys. See +https://www.secg.org/sec2-v2.pdf for details on the standard. + +In addition, sub packages are provided to produce, verify, parse, and serialize +ECDSA signatures and EC-Schnorr-DCRv0 (a custom Schnorr-based signature scheme +specific to Decred) signatures. See the README.md files in the relevant sub +packages for more details about those aspects. + +An overview of the features provided by this package are as follows: + +- Private key generation, serialization, and parsing +- Public key generation, serialization and parsing per ANSI X9.62-1998 + - Parses uncompressed, compressed, and hybrid public keys + - Serializes uncompressed and compressed public keys +- Specialized types for performing optimized and constant time field operations + - `FieldVal` type for working modulo the secp256k1 field prime + - `ModNScalar` type for working modulo the secp256k1 group order +- Elliptic curve operations in Jacobian projective coordinates + - Point addition + - Point doubling + - Scalar multiplication with an arbitrary point + - Scalar multiplication with the base point (group generator) +- Point decompression from a given x coordinate +- Nonce generation via RFC6979 with support for extra data and version + information that can be used to prevent nonce reuse between signing algorithms + +It also provides an implementation of the Go standard library `crypto/elliptic` +`Curve` interface via the `S256` function so that it may be used with other +packages in the standard library such as `crypto/tls`, `crypto/x509`, and +`crypto/ecdsa`. However, in the case of ECDSA, it is highly recommended to use +the `ecdsa` sub package of this package instead since it is optimized +specifically for secp256k1 and is significantly faster as a result. + +Although this package was primarily written for dcrd, it has intentionally been +designed so it can be used as a standalone package for any projects needing to +use optimized secp256k1 elliptic curve cryptography. + +Finally, a comprehensive suite of tests is provided to provide a high level of +quality assurance. + +## secp256k1 use in Decred + +At the time of this writing, the primary public key cryptography in widespread +use on the Decred network used to secure coins is based on elliptic curves +defined by the secp256k1 domain parameters. + +## Installation and Updating + +This package is part of the `github.com/decred/dcrd/dcrec/secp256k1/v3` module. +Use the standard go tooling for working with modules to incorporate it. + +## Examples + +* [Encryption](https://pkg.go.dev/github.com/decred/dcrd/dcrec/secp256k1/v4#example-package-EncryptDecryptMessage) + Demonstrates encrypting and decrypting a message using a shared key derived + through ECDHE. + +## License + +Package secp256k1 is licensed under the [copyfree](http://copyfree.org) ISC +License. diff --git a/aux/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/compressedbytepoints.go b/extra/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/compressedbytepoints.go similarity index 100% rename from aux/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/compressedbytepoints.go rename to extra/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/compressedbytepoints.go diff --git a/aux/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/curve.go b/extra/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/curve.go similarity index 100% rename from aux/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/curve.go rename to extra/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/curve.go diff --git a/aux/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/doc.go b/extra/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/doc.go similarity index 100% rename from aux/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/doc.go rename to extra/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/doc.go diff --git a/aux/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/ecdh.go b/extra/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/ecdh.go similarity index 100% rename from aux/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/ecdh.go rename to extra/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/ecdh.go diff --git a/aux/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/ellipticadaptor.go b/extra/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/ellipticadaptor.go similarity index 100% rename from aux/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/ellipticadaptor.go rename to extra/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/ellipticadaptor.go diff --git a/aux/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/error.go b/extra/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/error.go similarity index 100% rename from aux/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/error.go rename to extra/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/error.go diff --git a/aux/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/field.go b/extra/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/field.go similarity index 100% rename from aux/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/field.go rename to extra/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/field.go diff --git a/aux/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/genstatics.go b/extra/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/genstatics.go similarity index 100% rename from aux/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/genstatics.go rename to extra/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/genstatics.go diff --git a/aux/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/loadprecomputed.go b/extra/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/loadprecomputed.go similarity index 100% rename from aux/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/loadprecomputed.go rename to extra/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/loadprecomputed.go diff --git a/aux/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/modnscalar.go b/extra/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/modnscalar.go similarity index 100% rename from aux/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/modnscalar.go rename to extra/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/modnscalar.go diff --git a/aux/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/nonce.go b/extra/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/nonce.go similarity index 100% rename from aux/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/nonce.go rename to extra/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/nonce.go diff --git a/aux/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/privkey.go b/extra/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/privkey.go similarity index 100% rename from aux/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/privkey.go rename to extra/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/privkey.go diff --git a/aux/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/pubkey.go b/extra/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/pubkey.go similarity index 100% rename from aux/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/pubkey.go rename to extra/server-discovery/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/pubkey.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/.codecov.yml b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/.codecov.yml similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/.codecov.yml rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/.codecov.yml diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/.dockerignore b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/.dockerignore similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/.dockerignore rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/.dockerignore diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/.gitignore b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/.gitignore similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/.gitignore rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/.gitignore diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/LICENSE b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/LICENSE similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/LICENSE rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/LICENSE diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/Makefile b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/Makefile similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/Makefile rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/Makefile diff --git a/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/README.md b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/README.md new file mode 100644 index 000000000..7087eec05 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/README.md @@ -0,0 +1,377 @@ +# go-elasticsearch + +The official Go client for [Elasticsearch](https://www.elastic.co/products/elasticsearch). + +[![GoDoc](https://godoc.org/github.com/elastic/go-elasticsearch?status.svg)](https://pkg.go.dev/github.com/elastic/go-elasticsearch/v7) +[![Go Report Card](https://goreportcard.com/badge/github.com/elastic/go-elasticsearch)](https://goreportcard.com/report/github.com/elastic/go-elasticsearch) +[![codecov.io](https://codecov.io/github/elastic/go-elasticsearch/coverage.svg?branch=master)](https://codecov.io/gh/elastic/go-elasticsearch?branch=master) +[![Build](https://github.com/elastic/go-elasticsearch/workflows/Build/badge.svg)](https://github.com/elastic/go-elasticsearch/actions?query=branch%3A7.x) +[![Unit](https://github.com/elastic/go-elasticsearch/workflows/Unit/badge.svg)](https://github.com/elastic/go-elasticsearch/actions?query=branch%3A7.x) +[![Integration](https://github.com/elastic/go-elasticsearch/workflows/Integration/badge.svg)](https://github.com/elastic/go-elasticsearch/actions?query=branch%3A7.x) +[![API](https://github.com/elastic/go-elasticsearch/workflows/API/badge.svg)](https://github.com/elastic/go-elasticsearch/actions?query=branch%3A7.x) + +## Compatibility + +The client major versions correspond to the compatible Elasticsearch major versions: to connect to Elasticsearch `7.x`, use a [`7.x`](https://github.com/elastic/go-elasticsearch/tree/7.x) version of the client, to connect to Elasticsearch `6.x`, use a [`6.x`](https://github.com/elastic/go-elasticsearch/tree/6.x) version of the client. + +When using Go modules, include the version in the import path, and specify either an explicit version or a branch: + + require github.com/elastic/go-elasticsearch/v7 7.x + require github.com/elastic/go-elasticsearch/v7 7.0.0 + +It's possible to use multiple versions of the client in a single project: + + // go.mod + github.com/elastic/go-elasticsearch/v6 6.x + github.com/elastic/go-elasticsearch/v7 7.x + + // main.go + import ( + elasticsearch6 "github.com/elastic/go-elasticsearch/v6" + elasticsearch7 "github.com/elastic/go-elasticsearch/v7" + ) + // ... + es6, _ := elasticsearch6.NewDefaultClient() + es7, _ := elasticsearch7.NewDefaultClient() + +The `master` branch of the client is compatible with the current `master` branch of Elasticsearch. + + + +## Installation + +Add the package to your `go.mod` file: + + require github.com/elastic/go-elasticsearch/v7 7.x + +Or, clone the repository: + + git clone --branch 7.x https://github.com/elastic/go-elasticsearch.git $GOPATH/src/github.com/elastic/go-elasticsearch + +A complete example: + +```bash +mkdir my-elasticsearch-app && cd my-elasticsearch-app + +cat > go.mod <<-END + module my-elasticsearch-app + + require github.com/elastic/go-elasticsearch/v7 7.x +END + +cat > main.go <<-END + package main + + import ( + "log" + + "github.com/elastic/go-elasticsearch/v7" + ) + + func main() { + es, _ := elasticsearch.NewDefaultClient() + log.Println(elasticsearch.Version) + log.Println(es.Info()) + } +END + +go run main.go +``` + + + + +## Usage + +The `elasticsearch` package ties together two separate packages for calling the Elasticsearch APIs and transferring data over HTTP: `esapi` and `estransport`, respectively. + +Use the `elasticsearch.NewDefaultClient()` function to create the client with the default settings. + +```golang +es, err := elasticsearch.NewDefaultClient() +if err != nil { + log.Fatalf("Error creating the client: %s", err) +} + +res, err := es.Info() +if err != nil { + log.Fatalf("Error getting response: %s", err) +} + +defer res.Body.Close() +log.Println(res) + +// [200 OK] { +// "name" : "node-1", +// "cluster_name" : "go-elasticsearch" +// ... +``` + +> NOTE: It is _critical_ to both close the response body _and_ to consume it, in order to re-use persistent TCP connections in the default HTTP transport. If you're not interested in the response body, call `io.Copy(ioutil.Discard, res.Body)`. + +When you export the `ELASTICSEARCH_URL` environment variable, +it will be used to set the cluster endpoint(s). Separate multiple adresses by a comma. + +To set the cluster endpoint(s) programatically, pass a configuration object +to the `elasticsearch.NewClient()` function. + +```golang +cfg := elasticsearch.Config{ + Addresses: []string{ + "http://localhost:9200", + "http://localhost:9201", + }, + // ... +} +es, err := elasticsearch.NewClient(cfg) +``` + +To set the username and password, include them in the endpoint URL, +or use the corresponding configuration options. + +```golang +cfg := elasticsearch.Config{ + // ... + Username: "foo", + Password: "bar", +} +``` + +To set a custom certificate authority used to sign the certificates of cluster nodes, +use the `CACert` configuration option. + +```golang +cert, _ := ioutil.ReadFile(*cacert) + +cfg := elasticsearch.Config{ + // ... + CACert: cert, +} +``` + +To configure other HTTP settings, pass an [`http.Transport`](https://golang.org/pkg/net/http/#Transport) +object in the configuration object. + +```golang +cfg := elasticsearch.Config{ + Transport: &http.Transport{ + MaxIdleConnsPerHost: 10, + ResponseHeaderTimeout: time.Second, + TLSClientConfig: &tls.Config{ + MinVersion: tls.VersionTLS11, + // ... + }, + // ... + }, +} +``` + +See the [`_examples/configuration.go`](_examples/configuration.go) and +[`_examples/customization.go`](_examples/customization.go) files for +more examples of configuration and customization of the client. +See the [`_examples/security`](_examples/security) for an example of a security configuration. + +The following example demonstrates a more complex usage. It fetches the Elasticsearch version from the cluster, indexes a couple of documents concurrently, and prints the search results, using a lightweight wrapper around the response body. + +```golang +// $ go run _examples/main.go + +package main + +import ( + "bytes" + "context" + "encoding/json" + "log" + "strconv" + "strings" + "sync" + + "github.com/elastic/go-elasticsearch/v7" + "github.com/elastic/go-elasticsearch/v7/esapi" +) + +func main() { + log.SetFlags(0) + + var ( + r map[string]interface{} + wg sync.WaitGroup + ) + + // Initialize a client with the default settings. + // + // An `ELASTICSEARCH_URL` environment variable will be used when exported. + // + es, err := elasticsearch.NewDefaultClient() + if err != nil { + log.Fatalf("Error creating the client: %s", err) + } + + // 1. Get cluster info + // + res, err := es.Info() + if err != nil { + log.Fatalf("Error getting response: %s", err) + } + defer res.Body.Close() + // Check response status + if res.IsError() { + log.Fatalf("Error: %s", res.String()) + } + // Deserialize the response into a map. + if err := json.NewDecoder(res.Body).Decode(&r); err != nil { + log.Fatalf("Error parsing the response body: %s", err) + } + // Print client and server version numbers. + log.Printf("Client: %s", elasticsearch.Version) + log.Printf("Server: %s", r["version"].(map[string]interface{})["number"]) + log.Println(strings.Repeat("~", 37)) + + // 2. Index documents concurrently + // + for i, title := range []string{"Test One", "Test Two"} { + wg.Add(1) + + go func(i int, title string) { + defer wg.Done() + + // Build the request body. + var b strings.Builder + b.WriteString(`{"title" : "`) + b.WriteString(title) + b.WriteString(`"}`) + + // Set up the request object. + req := esapi.IndexRequest{ + Index: "test", + DocumentID: strconv.Itoa(i + 1), + Body: strings.NewReader(b.String()), + Refresh: "true", + } + + // Perform the request with the client. + res, err := req.Do(context.Background(), es) + if err != nil { + log.Fatalf("Error getting response: %s", err) + } + defer res.Body.Close() + + if res.IsError() { + log.Printf("[%s] Error indexing document ID=%d", res.Status(), i+1) + } else { + // Deserialize the response into a map. + var r map[string]interface{} + if err := json.NewDecoder(res.Body).Decode(&r); err != nil { + log.Printf("Error parsing the response body: %s", err) + } else { + // Print the response status and indexed document version. + log.Printf("[%s] %s; version=%d", res.Status(), r["result"], int(r["_version"].(float64))) + } + } + }(i, title) + } + wg.Wait() + + log.Println(strings.Repeat("-", 37)) + + // 3. Search for the indexed documents + // + // Build the request body. + var buf bytes.Buffer + query := map[string]interface{}{ + "query": map[string]interface{}{ + "match": map[string]interface{}{ + "title": "test", + }, + }, + } + if err := json.NewEncoder(&buf).Encode(query); err != nil { + log.Fatalf("Error encoding query: %s", err) + } + + // Perform the search request. + res, err = es.Search( + es.Search.WithContext(context.Background()), + es.Search.WithIndex("test"), + es.Search.WithBody(&buf), + es.Search.WithTrackTotalHits(true), + es.Search.WithPretty(), + ) + if err != nil { + log.Fatalf("Error getting response: %s", err) + } + defer res.Body.Close() + + if res.IsError() { + var e map[string]interface{} + if err := json.NewDecoder(res.Body).Decode(&e); err != nil { + log.Fatalf("Error parsing the response body: %s", err) + } else { + // Print the response status and error information. + log.Fatalf("[%s] %s: %s", + res.Status(), + e["error"].(map[string]interface{})["type"], + e["error"].(map[string]interface{})["reason"], + ) + } + } + + if err := json.NewDecoder(res.Body).Decode(&r); err != nil { + log.Fatalf("Error parsing the response body: %s", err) + } + // Print the response status, number of results, and request duration. + log.Printf( + "[%s] %d hits; took: %dms", + res.Status(), + int(r["hits"].(map[string]interface{})["total"].(map[string]interface{})["value"].(float64)), + int(r["took"].(float64)), + ) + // Print the ID and document source for each hit. + for _, hit := range r["hits"].(map[string]interface{})["hits"].([]interface{}) { + log.Printf(" * ID=%s, %s", hit.(map[string]interface{})["_id"], hit.(map[string]interface{})["_source"]) + } + + log.Println(strings.Repeat("=", 37)) +} + +// Client: 7.0.0-SNAPSHOT +// Server: 7.0.0-SNAPSHOT +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// [201 Created] updated; version=1 +// [201 Created] updated; version=1 +// ------------------------------------- +// [200 OK] 2 hits; took: 5ms +// * ID=1, map[title:Test One] +// * ID=2, map[title:Test Two] +// ===================================== +``` + +As you see in the example above, the `esapi` package allows to call the Elasticsearch APIs in two distinct ways: either by creating a struct, such as `IndexRequest`, and calling its `Do()` method by passing it a context and the client, or by calling the `Search()` function on the client directly, using the option functions such as `WithIndex()`. See more information and examples in the +[package documentation](https://godoc.org/github.com/elastic/go-elasticsearch/esapi). + +The `estransport` package handles the transfer of data to and from Elasticsearch, including retrying failed requests, keeping a connection pool, discovering cluster nodes and logging. + +Read more about the client internals and usage in the following blog posts: + +* https://www.elastic.co/blog/the-go-client-for-elasticsearch-introduction +* https://www.elastic.co/blog/the-go-client-for-elasticsearch-configuration-and-customization +* https://www.elastic.co/blog/the-go-client-for-elasticsearch-working-with-data + + + +## Helpers + +The `esutil` package provides convenience helpers for working with the client. At the moment, it provides the `esutil.JSONReader()` and the `esutil.BulkIndexer` helpers. + + + +## Examples + +The **[`_examples`](./_examples)** folder contains a number of recipes and comprehensive examples to get you started with the client, including configuration and customization of the client, using a custom certificate authority (CA) for security (TLS), mocking the transport for unit tests, embedding the client in a custom type, building queries, performing requests individually and in bulk, and parsing the responses. + + + +## License + +(c) 2019 Elasticsearch. Licensed under the Apache License, Version 2.0. diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/doc.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/doc.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/doc.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/doc.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/elasticsearch.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/elasticsearch.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/elasticsearch.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/elasticsearch.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api._.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api._.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api._.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api._.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.bulk.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.bulk.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.bulk.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.bulk.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.aliases.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.aliases.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.aliases.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.aliases.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.allocation.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.allocation.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.allocation.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.allocation.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.count.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.count.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.count.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.count.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.fielddata.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.fielddata.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.fielddata.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.fielddata.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.health.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.health.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.health.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.health.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.help.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.help.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.help.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.help.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.indices.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.indices.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.indices.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.indices.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.master.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.master.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.master.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.master.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.nodeattrs.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.nodeattrs.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.nodeattrs.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.nodeattrs.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.nodes.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.nodes.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.nodes.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.nodes.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.pending_tasks.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.pending_tasks.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.pending_tasks.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.pending_tasks.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.plugins.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.plugins.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.plugins.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.plugins.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.recovery.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.recovery.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.recovery.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.recovery.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.repositories.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.repositories.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.repositories.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.repositories.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.segments.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.segments.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.segments.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.segments.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.shards.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.shards.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.shards.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.shards.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.snapshots.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.snapshots.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.snapshots.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.snapshots.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.tasks.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.tasks.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.tasks.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.tasks.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.templates.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.templates.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.templates.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.templates.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.thread_pool.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.thread_pool.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.thread_pool.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cat.thread_pool.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.clear_scroll.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.clear_scroll.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.clear_scroll.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.clear_scroll.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.allocation_explain.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.allocation_explain.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.allocation_explain.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.allocation_explain.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.delete_component_template.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.delete_component_template.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.delete_component_template.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.delete_component_template.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.delete_voting_config_exclusions.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.delete_voting_config_exclusions.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.delete_voting_config_exclusions.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.delete_voting_config_exclusions.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.exists_component_template.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.exists_component_template.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.exists_component_template.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.exists_component_template.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.get_component_template.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.get_component_template.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.get_component_template.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.get_component_template.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.get_settings.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.get_settings.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.get_settings.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.get_settings.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.health.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.health.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.health.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.health.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.pending_tasks.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.pending_tasks.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.pending_tasks.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.pending_tasks.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.post_voting_config_exclusions.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.post_voting_config_exclusions.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.post_voting_config_exclusions.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.post_voting_config_exclusions.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.put_component_template.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.put_component_template.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.put_component_template.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.put_component_template.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.put_settings.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.put_settings.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.put_settings.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.put_settings.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.remote_info.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.remote_info.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.remote_info.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.remote_info.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.reroute.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.reroute.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.reroute.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.reroute.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.state.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.state.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.state.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.state.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.stats.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.stats.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.stats.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.cluster.stats.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.count.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.count.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.count.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.count.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.create.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.create.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.create.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.create.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.dangling_indices.delete_dangling_index.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.dangling_indices.delete_dangling_index.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.dangling_indices.delete_dangling_index.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.dangling_indices.delete_dangling_index.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.dangling_indices.import_dangling_index.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.dangling_indices.import_dangling_index.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.dangling_indices.import_dangling_index.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.dangling_indices.import_dangling_index.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.dangling_indices.list_dangling_indices.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.dangling_indices.list_dangling_indices.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.dangling_indices.list_dangling_indices.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.dangling_indices.list_dangling_indices.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.delete.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.delete.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.delete.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.delete.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.delete_by_query.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.delete_by_query.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.delete_by_query.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.delete_by_query.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.delete_by_query_rethrottle.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.delete_by_query_rethrottle.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.delete_by_query_rethrottle.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.delete_by_query_rethrottle.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.delete_script.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.delete_script.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.delete_script.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.delete_script.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.exists.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.exists.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.exists.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.exists.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.exists_source.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.exists_source.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.exists_source.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.exists_source.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.explain.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.explain.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.explain.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.explain.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.features.get_features.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.features.get_features.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.features.get_features.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.features.get_features.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.field_caps.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.field_caps.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.field_caps.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.field_caps.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.get.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.get.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.get.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.get.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.get_script.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.get_script.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.get_script.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.get_script.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.get_script_context.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.get_script_context.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.get_script_context.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.get_script_context.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.get_script_languages.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.get_script_languages.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.get_script_languages.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.get_script_languages.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.get_source.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.get_source.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.get_source.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.get_source.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.index.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.index.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.index.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.index.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.add_block.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.add_block.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.add_block.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.add_block.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.analyze.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.analyze.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.analyze.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.analyze.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.clear_cache.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.clear_cache.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.clear_cache.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.clear_cache.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.clone.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.clone.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.clone.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.clone.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.close.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.close.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.close.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.close.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.create.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.create.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.create.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.create.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.delete.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.delete.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.delete.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.delete.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.delete_alias.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.delete_alias.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.delete_alias.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.delete_alias.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.delete_index_template.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.delete_index_template.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.delete_index_template.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.delete_index_template.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.delete_template.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.delete_template.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.delete_template.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.delete_template.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.exists.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.exists.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.exists.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.exists.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.exists_alias.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.exists_alias.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.exists_alias.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.exists_alias.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.exists_index_template.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.exists_index_template.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.exists_index_template.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.exists_index_template.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.exists_template.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.exists_template.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.exists_template.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.exists_template.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.exists_type.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.exists_type.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.exists_type.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.exists_type.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.flush.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.flush.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.flush.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.flush.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.flush_synced.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.flush_synced.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.flush_synced.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.flush_synced.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.forcemerge.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.forcemerge.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.forcemerge.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.forcemerge.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.get.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.get.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.get.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.get.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.get_alias.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.get_alias.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.get_alias.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.get_alias.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.get_field_mapping.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.get_field_mapping.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.get_field_mapping.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.get_field_mapping.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.get_index_template.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.get_index_template.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.get_index_template.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.get_index_template.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.get_mapping.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.get_mapping.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.get_mapping.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.get_mapping.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.get_settings.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.get_settings.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.get_settings.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.get_settings.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.get_template.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.get_template.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.get_template.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.get_template.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.get_upgrade.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.get_upgrade.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.get_upgrade.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.get_upgrade.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.open.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.open.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.open.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.open.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.put_alias.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.put_alias.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.put_alias.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.put_alias.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.put_index_template.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.put_index_template.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.put_index_template.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.put_index_template.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.put_mapping.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.put_mapping.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.put_mapping.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.put_mapping.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.put_settings.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.put_settings.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.put_settings.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.put_settings.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.put_template.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.put_template.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.put_template.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.put_template.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.recovery.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.recovery.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.recovery.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.recovery.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.refresh.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.refresh.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.refresh.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.refresh.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.resolve_index.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.resolve_index.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.resolve_index.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.resolve_index.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.rollover.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.rollover.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.rollover.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.rollover.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.segments.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.segments.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.segments.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.segments.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.shard_stores.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.shard_stores.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.shard_stores.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.shard_stores.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.shrink.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.shrink.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.shrink.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.shrink.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.simulate_index_template.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.simulate_index_template.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.simulate_index_template.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.simulate_index_template.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.simulate_template.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.simulate_template.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.simulate_template.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.simulate_template.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.split.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.split.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.split.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.split.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.stats.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.stats.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.stats.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.stats.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.update_aliases.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.update_aliases.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.update_aliases.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.update_aliases.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.upgrade.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.upgrade.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.upgrade.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.upgrade.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.validate_query.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.validate_query.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.validate_query.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.indices.validate_query.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.info.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.info.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.info.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.info.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.ingest.delete_pipeline.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.ingest.delete_pipeline.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.ingest.delete_pipeline.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.ingest.delete_pipeline.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.ingest.get_pipeline.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.ingest.get_pipeline.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.ingest.get_pipeline.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.ingest.get_pipeline.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.ingest.processor_grok.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.ingest.processor_grok.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.ingest.processor_grok.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.ingest.processor_grok.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.ingest.put_pipeline.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.ingest.put_pipeline.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.ingest.put_pipeline.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.ingest.put_pipeline.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.ingest.simulate.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.ingest.simulate.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.ingest.simulate.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.ingest.simulate.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.mget.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.mget.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.mget.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.mget.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.msearch.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.msearch.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.msearch.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.msearch.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.msearch_template.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.msearch_template.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.msearch_template.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.msearch_template.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.mtermvectors.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.mtermvectors.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.mtermvectors.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.mtermvectors.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.nodes.hot_threads.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.nodes.hot_threads.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.nodes.hot_threads.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.nodes.hot_threads.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.nodes.info.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.nodes.info.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.nodes.info.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.nodes.info.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.nodes.reload_secure_settings.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.nodes.reload_secure_settings.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.nodes.reload_secure_settings.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.nodes.reload_secure_settings.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.nodes.stats.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.nodes.stats.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.nodes.stats.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.nodes.stats.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.nodes.usage.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.nodes.usage.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.nodes.usage.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.nodes.usage.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.ping.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.ping.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.ping.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.ping.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.put_script.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.put_script.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.put_script.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.put_script.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.rank_eval.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.rank_eval.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.rank_eval.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.rank_eval.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.reindex.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.reindex.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.reindex.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.reindex.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.reindex_rethrottle.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.reindex_rethrottle.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.reindex_rethrottle.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.reindex_rethrottle.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.render_search_template.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.render_search_template.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.render_search_template.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.render_search_template.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.scripts_painless_execute.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.scripts_painless_execute.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.scripts_painless_execute.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.scripts_painless_execute.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.scroll.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.scroll.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.scroll.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.scroll.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.search.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.search.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.search.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.search.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.search_shards.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.search_shards.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.search_shards.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.search_shards.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.search_template.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.search_template.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.search_template.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.search_template.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.cleanup_repository.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.cleanup_repository.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.cleanup_repository.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.cleanup_repository.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.clone.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.clone.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.clone.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.clone.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.create.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.create.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.create.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.create.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.create_repository.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.create_repository.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.create_repository.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.create_repository.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.delete.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.delete.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.delete.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.delete.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.delete_repository.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.delete_repository.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.delete_repository.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.delete_repository.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.get.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.get.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.get.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.get.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.get_features.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.get_features.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.get_features.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.get_features.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.get_repository.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.get_repository.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.get_repository.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.get_repository.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.restore.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.restore.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.restore.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.restore.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.status.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.status.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.status.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.status.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.verify_repository.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.verify_repository.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.verify_repository.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.snapshot.verify_repository.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.tasks.cancel.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.tasks.cancel.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.tasks.cancel.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.tasks.cancel.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.tasks.get.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.tasks.get.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.tasks.get.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.tasks.get.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.tasks.list.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.tasks.list.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.tasks.list.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.tasks.list.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.termvectors.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.termvectors.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.termvectors.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.termvectors.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.update.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.update.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.update.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.update.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.update_by_query.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.update_by_query.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.update_by_query.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.update_by_query.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.update_by_query_rethrottle.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.update_by_query_rethrottle.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.update_by_query_rethrottle.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.update_by_query_rethrottle.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.async_search.delete.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.async_search.delete.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.async_search.delete.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.async_search.delete.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.async_search.get.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.async_search.get.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.async_search.get.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.async_search.get.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.async_search.status.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.async_search.status.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.async_search.status.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.async_search.status.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.async_search.submit.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.async_search.submit.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.async_search.submit.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.async_search.submit.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.autoscaling.delete_autoscaling_policy.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.autoscaling.delete_autoscaling_policy.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.autoscaling.delete_autoscaling_policy.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.autoscaling.delete_autoscaling_policy.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.autoscaling.get_autoscaling_capacity.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.autoscaling.get_autoscaling_capacity.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.autoscaling.get_autoscaling_capacity.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.autoscaling.get_autoscaling_capacity.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.autoscaling.get_autoscaling_decision.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.autoscaling.get_autoscaling_decision.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.autoscaling.get_autoscaling_decision.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.autoscaling.get_autoscaling_decision.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.autoscaling.get_autoscaling_policy.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.autoscaling.get_autoscaling_policy.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.autoscaling.get_autoscaling_policy.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.autoscaling.get_autoscaling_policy.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.autoscaling.put_autoscaling_policy.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.autoscaling.put_autoscaling_policy.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.autoscaling.put_autoscaling_policy.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.autoscaling.put_autoscaling_policy.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.cat.ml_data_frame_analytics.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.cat.ml_data_frame_analytics.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.cat.ml_data_frame_analytics.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.cat.ml_data_frame_analytics.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.cat.ml_datafeeds.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.cat.ml_datafeeds.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.cat.ml_datafeeds.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.cat.ml_datafeeds.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.cat.ml_jobs.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.cat.ml_jobs.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.cat.ml_jobs.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.cat.ml_jobs.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.cat.ml_trained_models.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.cat.ml_trained_models.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.cat.ml_trained_models.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.cat.ml_trained_models.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.cat.transforms.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.cat.transforms.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.cat.transforms.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.cat.transforms.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.delete_auto_follow_pattern.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.delete_auto_follow_pattern.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.delete_auto_follow_pattern.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.delete_auto_follow_pattern.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.follow.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.follow.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.follow.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.follow.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.follow_info.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.follow_info.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.follow_info.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.follow_info.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.follow_stats.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.follow_stats.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.follow_stats.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.follow_stats.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.forget_follower.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.forget_follower.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.forget_follower.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.forget_follower.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.get_auto_follow_pattern.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.get_auto_follow_pattern.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.get_auto_follow_pattern.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.get_auto_follow_pattern.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.pause_auto_follow_pattern.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.pause_auto_follow_pattern.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.pause_auto_follow_pattern.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.pause_auto_follow_pattern.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.pause_follow.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.pause_follow.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.pause_follow.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.pause_follow.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.put_auto_follow_pattern.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.put_auto_follow_pattern.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.put_auto_follow_pattern.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.put_auto_follow_pattern.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.resume_auto_follow_pattern.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.resume_auto_follow_pattern.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.resume_auto_follow_pattern.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.resume_auto_follow_pattern.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.resume_follow.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.resume_follow.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.resume_follow.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.resume_follow.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.stats.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.stats.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.stats.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.stats.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.unfollow.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.unfollow.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.unfollow.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ccr.unfollow.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.close_point_in_time.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.close_point_in_time.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.close_point_in_time.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.close_point_in_time.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.data_frame_transform_deprecated.delete_transform.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.data_frame_transform_deprecated.delete_transform.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.data_frame_transform_deprecated.delete_transform.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.data_frame_transform_deprecated.delete_transform.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.data_frame_transform_deprecated.get_transform.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.data_frame_transform_deprecated.get_transform.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.data_frame_transform_deprecated.get_transform.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.data_frame_transform_deprecated.get_transform.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.data_frame_transform_deprecated.get_transform_stats.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.data_frame_transform_deprecated.get_transform_stats.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.data_frame_transform_deprecated.get_transform_stats.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.data_frame_transform_deprecated.get_transform_stats.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.data_frame_transform_deprecated.preview_transform.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.data_frame_transform_deprecated.preview_transform.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.data_frame_transform_deprecated.preview_transform.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.data_frame_transform_deprecated.preview_transform.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.data_frame_transform_deprecated.put_transform.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.data_frame_transform_deprecated.put_transform.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.data_frame_transform_deprecated.put_transform.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.data_frame_transform_deprecated.put_transform.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.data_frame_transform_deprecated.start_transform.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.data_frame_transform_deprecated.start_transform.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.data_frame_transform_deprecated.start_transform.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.data_frame_transform_deprecated.start_transform.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.data_frame_transform_deprecated.stop_transform.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.data_frame_transform_deprecated.stop_transform.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.data_frame_transform_deprecated.stop_transform.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.data_frame_transform_deprecated.stop_transform.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.data_frame_transform_deprecated.update_transform.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.data_frame_transform_deprecated.update_transform.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.data_frame_transform_deprecated.update_transform.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.data_frame_transform_deprecated.update_transform.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.enrich.delete_policy.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.enrich.delete_policy.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.enrich.delete_policy.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.enrich.delete_policy.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.enrich.execute_policy.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.enrich.execute_policy.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.enrich.execute_policy.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.enrich.execute_policy.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.enrich.get_policy.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.enrich.get_policy.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.enrich.get_policy.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.enrich.get_policy.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.enrich.put_policy.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.enrich.put_policy.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.enrich.put_policy.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.enrich.put_policy.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.enrich.stats.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.enrich.stats.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.enrich.stats.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.enrich.stats.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.eql.delete.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.eql.delete.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.eql.delete.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.eql.delete.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.eql.get.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.eql.get.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.eql.get.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.eql.get.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.eql.get_status.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.eql.get_status.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.eql.get_status.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.eql.get_status.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.eql.search.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.eql.search.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.eql.search.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.eql.search.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.graph.explore.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.graph.explore.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.graph.explore.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.graph.explore.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.delete_lifecycle.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.delete_lifecycle.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.delete_lifecycle.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.delete_lifecycle.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.explain_lifecycle.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.explain_lifecycle.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.explain_lifecycle.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.explain_lifecycle.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.get_lifecycle.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.get_lifecycle.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.get_lifecycle.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.get_lifecycle.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.get_status.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.get_status.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.get_status.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.get_status.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.move_to_step.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.move_to_step.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.move_to_step.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.move_to_step.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.put_lifecycle.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.put_lifecycle.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.put_lifecycle.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.put_lifecycle.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.remove_policy.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.remove_policy.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.remove_policy.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.remove_policy.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.retry.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.retry.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.retry.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.retry.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.start.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.start.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.start.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.start.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.stop.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.stop.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.stop.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ilm.stop.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.indices.create_data_stream.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.indices.create_data_stream.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.indices.create_data_stream.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.indices.create_data_stream.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.indices.data_streams_stats.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.indices.data_streams_stats.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.indices.data_streams_stats.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.indices.data_streams_stats.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.indices.delete_data_stream.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.indices.delete_data_stream.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.indices.delete_data_stream.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.indices.delete_data_stream.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.indices.freeze.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.indices.freeze.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.indices.freeze.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.indices.freeze.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.indices.get_data_stream.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.indices.get_data_stream.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.indices.get_data_stream.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.indices.get_data_stream.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.indices.migrate_to_data_stream.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.indices.migrate_to_data_stream.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.indices.migrate_to_data_stream.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.indices.migrate_to_data_stream.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.indices.promote_data_stream.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.indices.promote_data_stream.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.indices.promote_data_stream.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.indices.promote_data_stream.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.indices.reload_search_analyzers.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.indices.reload_search_analyzers.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.indices.reload_search_analyzers.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.indices.reload_search_analyzers.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.indices.unfreeze.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.indices.unfreeze.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.indices.unfreeze.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.indices.unfreeze.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.license.delete.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.license.delete.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.license.delete.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.license.delete.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.license.get.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.license.get.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.license.get.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.license.get.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.license.get_basic_status.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.license.get_basic_status.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.license.get_basic_status.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.license.get_basic_status.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.license.get_trial_status.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.license.get_trial_status.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.license.get_trial_status.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.license.get_trial_status.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.license.post.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.license.post.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.license.post.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.license.post.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.license.post_start_basic.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.license.post_start_basic.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.license.post_start_basic.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.license.post_start_basic.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.license.post_start_trial.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.license.post_start_trial.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.license.post_start_trial.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.license.post_start_trial.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.logstash.delete_pipeline.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.logstash.delete_pipeline.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.logstash.delete_pipeline.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.logstash.delete_pipeline.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.logstash.get_pipeline.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.logstash.get_pipeline.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.logstash.get_pipeline.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.logstash.get_pipeline.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.logstash.put_pipeline.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.logstash.put_pipeline.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.logstash.put_pipeline.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.logstash.put_pipeline.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.migration.deprecations.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.migration.deprecations.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.migration.deprecations.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.migration.deprecations.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.close_job.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.close_job.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.close_job.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.close_job.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_calendar.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_calendar.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_calendar.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_calendar.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_calendar_event.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_calendar_event.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_calendar_event.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_calendar_event.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_calendar_job.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_calendar_job.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_calendar_job.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_calendar_job.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_data_frame_analytics.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_data_frame_analytics.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_data_frame_analytics.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_data_frame_analytics.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_datafeed.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_datafeed.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_datafeed.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_datafeed.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_expired_data.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_expired_data.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_expired_data.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_expired_data.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_filter.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_filter.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_filter.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_filter.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_forecast.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_forecast.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_forecast.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_forecast.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_job.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_job.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_job.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_job.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_model_snapshot.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_model_snapshot.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_model_snapshot.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_model_snapshot.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_trained_model.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_trained_model.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_trained_model.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.delete_trained_model.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.estimate_model_memory.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.estimate_model_memory.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.estimate_model_memory.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.estimate_model_memory.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.evaluate_data_frame.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.evaluate_data_frame.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.evaluate_data_frame.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.evaluate_data_frame.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.explain_data_frame_analytics.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.explain_data_frame_analytics.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.explain_data_frame_analytics.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.explain_data_frame_analytics.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.find_file_structure.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.find_file_structure.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.find_file_structure.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.find_file_structure.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.flush_job.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.flush_job.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.flush_job.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.flush_job.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.forecast.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.forecast.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.forecast.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.forecast.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_buckets.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_buckets.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_buckets.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_buckets.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_calendar_events.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_calendar_events.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_calendar_events.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_calendar_events.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_calendars.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_calendars.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_calendars.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_calendars.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_categories.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_categories.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_categories.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_categories.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_data_frame_analytics.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_data_frame_analytics.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_data_frame_analytics.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_data_frame_analytics.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_data_frame_analytics_stats.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_data_frame_analytics_stats.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_data_frame_analytics_stats.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_data_frame_analytics_stats.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_datafeed_stats.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_datafeed_stats.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_datafeed_stats.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_datafeed_stats.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_datafeeds.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_datafeeds.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_datafeeds.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_datafeeds.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_filters.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_filters.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_filters.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_filters.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_influencers.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_influencers.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_influencers.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_influencers.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_job_stats.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_job_stats.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_job_stats.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_job_stats.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_jobs.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_jobs.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_jobs.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_jobs.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_model_snapshots.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_model_snapshots.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_model_snapshots.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_model_snapshots.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_overall_buckets.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_overall_buckets.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_overall_buckets.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_overall_buckets.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_records.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_records.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_records.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_records.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_trained_models.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_trained_models.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_trained_models.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_trained_models.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_trained_models_stats.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_trained_models_stats.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_trained_models_stats.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.get_trained_models_stats.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.info.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.info.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.info.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.info.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.open_job.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.open_job.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.open_job.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.open_job.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.post_calendar_events.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.post_calendar_events.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.post_calendar_events.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.post_calendar_events.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.post_data.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.post_data.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.post_data.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.post_data.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.preview_datafeed.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.preview_datafeed.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.preview_datafeed.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.preview_datafeed.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.put_calendar.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.put_calendar.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.put_calendar.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.put_calendar.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.put_calendar_job.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.put_calendar_job.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.put_calendar_job.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.put_calendar_job.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.put_data_frame_analytics.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.put_data_frame_analytics.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.put_data_frame_analytics.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.put_data_frame_analytics.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.put_datafeed.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.put_datafeed.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.put_datafeed.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.put_datafeed.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.put_filter.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.put_filter.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.put_filter.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.put_filter.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.put_job.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.put_job.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.put_job.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.put_job.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.put_trained_model.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.put_trained_model.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.put_trained_model.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.put_trained_model.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.revert_model_snapshot.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.revert_model_snapshot.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.revert_model_snapshot.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.revert_model_snapshot.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.set_upgrade_mode.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.set_upgrade_mode.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.set_upgrade_mode.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.set_upgrade_mode.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.start_data_frame_analytics.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.start_data_frame_analytics.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.start_data_frame_analytics.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.start_data_frame_analytics.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.start_datafeed.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.start_datafeed.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.start_datafeed.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.start_datafeed.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.stop_data_frame_analytics.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.stop_data_frame_analytics.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.stop_data_frame_analytics.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.stop_data_frame_analytics.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.stop_datafeed.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.stop_datafeed.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.stop_datafeed.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.stop_datafeed.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.update_data_frame_analytics.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.update_data_frame_analytics.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.update_data_frame_analytics.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.update_data_frame_analytics.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.update_datafeed.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.update_datafeed.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.update_datafeed.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.update_datafeed.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.update_filter.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.update_filter.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.update_filter.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.update_filter.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.update_job.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.update_job.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.update_job.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.update_job.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.update_model_snapshot.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.update_model_snapshot.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.update_model_snapshot.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.update_model_snapshot.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.upgrade_job_snapshot.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.upgrade_job_snapshot.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.upgrade_job_snapshot.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.upgrade_job_snapshot.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.validate.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.validate.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.validate.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.validate.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.validate_detector.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.validate_detector.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.validate_detector.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ml.validate_detector.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.monitoring.bulk.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.monitoring.bulk.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.monitoring.bulk.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.monitoring.bulk.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.open_point_in_time.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.open_point_in_time.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.open_point_in_time.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.open_point_in_time.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.rollup.delete_job.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.rollup.delete_job.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.rollup.delete_job.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.rollup.delete_job.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.rollup.get_jobs.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.rollup.get_jobs.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.rollup.get_jobs.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.rollup.get_jobs.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.rollup.get_rollup_caps.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.rollup.get_rollup_caps.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.rollup.get_rollup_caps.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.rollup.get_rollup_caps.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.rollup.get_rollup_index_caps.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.rollup.get_rollup_index_caps.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.rollup.get_rollup_index_caps.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.rollup.get_rollup_index_caps.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.rollup.put_job.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.rollup.put_job.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.rollup.put_job.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.rollup.put_job.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.rollup.rollup.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.rollup.rollup.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.rollup.rollup.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.rollup.rollup.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.rollup.rollup_search.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.rollup.rollup_search.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.rollup.rollup_search.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.rollup.rollup_search.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.rollup.start_job.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.rollup.start_job.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.rollup.start_job.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.rollup.start_job.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.rollup.stop_job.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.rollup.stop_job.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.rollup.stop_job.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.rollup.stop_job.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.searchable_snapshots.clear_cache.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.searchable_snapshots.clear_cache.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.searchable_snapshots.clear_cache.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.searchable_snapshots.clear_cache.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.searchable_snapshots.mount.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.searchable_snapshots.mount.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.searchable_snapshots.mount.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.searchable_snapshots.mount.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.searchable_snapshots.repository_stats.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.searchable_snapshots.repository_stats.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.searchable_snapshots.repository_stats.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.searchable_snapshots.repository_stats.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.searchable_snapshots.stats.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.searchable_snapshots.stats.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.searchable_snapshots.stats.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.searchable_snapshots.stats.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.authenticate.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.authenticate.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.authenticate.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.authenticate.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.change_password.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.change_password.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.change_password.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.change_password.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.clear_api_key_cache.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.clear_api_key_cache.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.clear_api_key_cache.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.clear_api_key_cache.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.clear_cached_privileges.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.clear_cached_privileges.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.clear_cached_privileges.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.clear_cached_privileges.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.clear_cached_realms.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.clear_cached_realms.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.clear_cached_realms.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.clear_cached_realms.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.clear_cached_roles.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.clear_cached_roles.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.clear_cached_roles.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.clear_cached_roles.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.create_api_key.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.create_api_key.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.create_api_key.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.create_api_key.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.delete_privileges.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.delete_privileges.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.delete_privileges.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.delete_privileges.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.delete_role.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.delete_role.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.delete_role.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.delete_role.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.delete_role_mapping.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.delete_role_mapping.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.delete_role_mapping.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.delete_role_mapping.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.delete_user.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.delete_user.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.delete_user.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.delete_user.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.disable_user.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.disable_user.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.disable_user.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.disable_user.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.enable_user.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.enable_user.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.enable_user.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.enable_user.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.get_api_key.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.get_api_key.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.get_api_key.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.get_api_key.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.get_builtin_privileges.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.get_builtin_privileges.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.get_builtin_privileges.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.get_builtin_privileges.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.get_privileges.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.get_privileges.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.get_privileges.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.get_privileges.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.get_role.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.get_role.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.get_role.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.get_role.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.get_role_mapping.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.get_role_mapping.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.get_role_mapping.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.get_role_mapping.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.get_token.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.get_token.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.get_token.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.get_token.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.get_user.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.get_user.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.get_user.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.get_user.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.get_user_privileges.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.get_user_privileges.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.get_user_privileges.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.get_user_privileges.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.grant_api_key.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.grant_api_key.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.grant_api_key.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.grant_api_key.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.has_privileges.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.has_privileges.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.has_privileges.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.has_privileges.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.invalidate_api_key.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.invalidate_api_key.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.invalidate_api_key.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.invalidate_api_key.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.invalidate_token.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.invalidate_token.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.invalidate_token.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.invalidate_token.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.put_privileges.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.put_privileges.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.put_privileges.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.put_privileges.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.put_role.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.put_role.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.put_role.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.put_role.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.put_role_mapping.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.put_role_mapping.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.put_role_mapping.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.put_role_mapping.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.put_user.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.put_user.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.put_user.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.security.put_user.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.slm.delete_lifecycle.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.slm.delete_lifecycle.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.slm.delete_lifecycle.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.slm.delete_lifecycle.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.slm.execute_lifecycle.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.slm.execute_lifecycle.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.slm.execute_lifecycle.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.slm.execute_lifecycle.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.slm.execute_retention.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.slm.execute_retention.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.slm.execute_retention.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.slm.execute_retention.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.slm.get_lifecycle.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.slm.get_lifecycle.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.slm.get_lifecycle.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.slm.get_lifecycle.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.slm.get_stats.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.slm.get_stats.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.slm.get_stats.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.slm.get_stats.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.slm.get_status.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.slm.get_status.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.slm.get_status.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.slm.get_status.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.slm.put_lifecycle.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.slm.put_lifecycle.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.slm.put_lifecycle.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.slm.put_lifecycle.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.slm.start.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.slm.start.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.slm.start.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.slm.start.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.slm.stop.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.slm.stop.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.slm.stop.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.slm.stop.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.sql.clear_cursor.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.sql.clear_cursor.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.sql.clear_cursor.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.sql.clear_cursor.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.sql.query.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.sql.query.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.sql.query.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.sql.query.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.sql.translate.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.sql.translate.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.sql.translate.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.sql.translate.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ssl.certificates.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ssl.certificates.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ssl.certificates.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.ssl.certificates.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.text_structure.find_structure.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.text_structure.find_structure.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.text_structure.find_structure.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.text_structure.find_structure.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.transform.delete_transform.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.transform.delete_transform.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.transform.delete_transform.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.transform.delete_transform.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.transform.get_transform.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.transform.get_transform.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.transform.get_transform.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.transform.get_transform.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.transform.get_transform_stats.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.transform.get_transform_stats.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.transform.get_transform_stats.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.transform.get_transform_stats.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.transform.preview_transform.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.transform.preview_transform.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.transform.preview_transform.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.transform.preview_transform.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.transform.put_transform.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.transform.put_transform.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.transform.put_transform.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.transform.put_transform.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.transform.start_transform.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.transform.start_transform.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.transform.start_transform.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.transform.start_transform.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.transform.stop_transform.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.transform.stop_transform.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.transform.stop_transform.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.transform.stop_transform.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.transform.update_transform.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.transform.update_transform.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.transform.update_transform.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.transform.update_transform.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.ack_watch.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.ack_watch.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.ack_watch.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.ack_watch.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.activate_watch.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.activate_watch.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.activate_watch.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.activate_watch.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.deactivate_watch.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.deactivate_watch.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.deactivate_watch.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.deactivate_watch.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.delete_watch.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.delete_watch.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.delete_watch.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.delete_watch.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.execute_watch.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.execute_watch.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.execute_watch.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.execute_watch.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.get_watch.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.get_watch.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.get_watch.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.get_watch.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.put_watch.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.put_watch.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.put_watch.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.put_watch.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.query_watches.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.query_watches.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.query_watches.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.query_watches.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.start.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.start.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.start.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.start.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.stats.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.stats.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.stats.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.stats.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.stop.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.stop.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.stop.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.watcher.stop.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.xpack.info.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.xpack.info.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.xpack.info.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.xpack.info.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.xpack.usage.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.xpack.usage.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.xpack.usage.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/api.xpack.xpack.usage.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/doc.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/doc.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/doc.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/doc.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/esapi.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/esapi.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/esapi.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/esapi.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/esapi.request.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/esapi.request.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/esapi.request.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/esapi.request.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/esapi.response.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/esapi.response.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/esapi.response.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esapi/esapi.response.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/estransport/connection.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/estransport/connection.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/estransport/connection.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/estransport/connection.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/estransport/discovery.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/estransport/discovery.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/estransport/discovery.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/estransport/discovery.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/estransport/doc.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/estransport/doc.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/estransport/doc.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/estransport/doc.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/estransport/estransport.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/estransport/estransport.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/estransport/estransport.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/estransport/estransport.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/estransport/logger.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/estransport/logger.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/estransport/logger.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/estransport/logger.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/estransport/metaheader.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/estransport/metaheader.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/estransport/metaheader.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/estransport/metaheader.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/estransport/metrics.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/estransport/metrics.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/estransport/metrics.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/estransport/metrics.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esutil/bulk_indexer.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esutil/bulk_indexer.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esutil/bulk_indexer.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esutil/bulk_indexer.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esutil/doc.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esutil/doc.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esutil/doc.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esutil/doc.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esutil/json_reader.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esutil/json_reader.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esutil/json_reader.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/esutil/json_reader.go diff --git a/aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/internal/version/version.go b/extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/internal/version/version.go similarity index 100% rename from aux/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/internal/version/version.go rename to extra/server-discovery/vendor/github.com/elastic/go-elasticsearch/v7/internal/version/version.go diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/.gitignore b/extra/server-discovery/vendor/github.com/go-chi/chi/v5/.gitignore similarity index 100% rename from aux/server-discovery/vendor/github.com/go-chi/chi/.gitignore rename to extra/server-discovery/vendor/github.com/go-chi/chi/v5/.gitignore diff --git a/extra/server-discovery/vendor/github.com/go-chi/chi/v5/CHANGELOG.md b/extra/server-discovery/vendor/github.com/go-chi/chi/v5/CHANGELOG.md new file mode 100644 index 000000000..88c68c6d0 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/go-chi/chi/v5/CHANGELOG.md @@ -0,0 +1,315 @@ +# Changelog + +## v5.0.7 (2021-11-18) + +- History of changes: see https://github.com/go-chi/chi/compare/v5.0.6...v5.0.7 + + +## v5.0.6 (2021-11-15) + +- History of changes: see https://github.com/go-chi/chi/compare/v5.0.5...v5.0.6 + + +## v5.0.5 (2021-10-27) + +- History of changes: see https://github.com/go-chi/chi/compare/v5.0.4...v5.0.5 + + +## v5.0.4 (2021-08-29) + +- History of changes: see https://github.com/go-chi/chi/compare/v5.0.3...v5.0.4 + + +## v5.0.3 (2021-04-29) + +- History of changes: see https://github.com/go-chi/chi/compare/v5.0.2...v5.0.3 + + +## v5.0.2 (2021-03-25) + +- History of changes: see https://github.com/go-chi/chi/compare/v5.0.1...v5.0.2 + + +## v5.0.1 (2021-03-10) + +- Small improvements +- History of changes: see https://github.com/go-chi/chi/compare/v5.0.0...v5.0.1 + + +## v5.0.0 (2021-02-27) + +- chi v5, `github.com/go-chi/chi/v5` introduces the adoption of Go's SIV to adhere to the current state-of-the-tools in Go. +- chi v1.5.x did not work out as planned, as the Go tooling is too powerful and chi's adoption is too wide. + The most responsible thing to do for everyone's benefit is to just release v5 with SIV, so I present to you all, + chi v5 at `github.com/go-chi/chi/v5`. I hope someday the developer experience and ergonomics I've been seeking + will still come to fruition in some form, see https://github.com/golang/go/issues/44550 +- History of changes: see https://github.com/go-chi/chi/compare/v1.5.4...v5.0.0 + + +## v1.5.4 (2021-02-27) + +- Undo prior retraction in v1.5.3 as we prepare for v5.0.0 release +- History of changes: see https://github.com/go-chi/chi/compare/v1.5.3...v1.5.4 + + +## v1.5.3 (2021-02-21) + +- Update go.mod to go 1.16 with new retract directive marking all versions without prior go.mod support +- History of changes: see https://github.com/go-chi/chi/compare/v1.5.2...v1.5.3 + + +## v1.5.2 (2021-02-10) + +- Reverting allocation optimization as a precaution as go test -race fails. +- Minor improvements, see history below +- History of changes: see https://github.com/go-chi/chi/compare/v1.5.1...v1.5.2 + + +## v1.5.1 (2020-12-06) + +- Performance improvement: removing 1 allocation by foregoing context.WithValue, thank you @bouk for + your contribution (https://github.com/go-chi/chi/pull/555). Note: new benchmarks posted in README. +- `middleware.CleanPath`: new middleware that clean's request path of double slashes +- deprecate & remove `chi.ServerBaseContext` in favour of stdlib `http.Server#BaseContext` +- plus other tiny improvements, see full commit history below +- History of changes: see https://github.com/go-chi/chi/compare/v4.1.2...v1.5.1 + + +## v1.5.0 (2020-11-12) - now with go.mod support + +`chi` dates back to 2016 with it's original implementation as one of the first routers to adopt the newly introduced +context.Context api to the stdlib -- set out to design a router that is faster, more modular and simpler than anything +else out there -- while not introducing any custom handler types or dependencies. Today, `chi` still has zero dependencies, +and in many ways is future proofed from changes, given it's minimal nature. Between versions, chi's iterations have been very +incremental, with the architecture and api being the same today as it was originally designed in 2016. For this reason it +makes chi a pretty easy project to maintain, as well thanks to the many amazing community contributions over the years +to who all help make chi better (total of 86 contributors to date -- thanks all!). + +Chi has been an labour of love, art and engineering, with the goals to offer beautiful ergonomics, flexibility, performance +and simplicity when building HTTP services with Go. I've strived to keep the router very minimal in surface area / code size, +and always improving the code wherever possible -- and as of today the `chi` package is just 1082 lines of code (not counting +middlewares, which are all optional). As well, I don't have the exact metrics, but from my analysis and email exchanges from +companies and developers, chi is used by thousands of projects around the world -- thank you all as there is no better form of +joy for me than to have art I had started be helpful and enjoyed by others. And of course I use chi in all of my own projects too :) + +For me, the asthetics of chi's code and usage are very important. With the introduction of Go's module support +(which I'm a big fan of), chi's past versioning scheme choice to v2, v3 and v4 would mean I'd require the import path +of "github.com/go-chi/chi/v4", leading to the lengthy discussion at https://github.com/go-chi/chi/issues/462. +Haha, to some, you may be scratching your head why I've spent > 1 year stalling to adopt "/vXX" convention in the import +path -- which isn't horrible in general -- but for chi, I'm unable to accept it as I strive for perfection in it's API design, +aesthetics and simplicity. It just doesn't feel good to me given chi's simple nature -- I do not foresee a "v5" or "v6", +and upgrading between versions in the future will also be just incremental. + +I do understand versioning is a part of the API design as well, which is why the solution for a while has been to "do nothing", +as Go supports both old and new import paths with/out go.mod. However, now that Go module support has had time to iron out kinks and +is adopted everywhere, it's time for chi to get with the times. Luckily, I've discovered a path forward that will make me happy, +while also not breaking anyone's app who adopted a prior versioning from tags in v2/v3/v4. I've made an experimental release of +v1.5.0 with go.mod silently, and tested it with new and old projects, to ensure the developer experience is preserved, and it's +largely unnoticed. Fortunately, Go's toolchain will check the tags of a repo and consider the "latest" tag the one with go.mod. +However, you can still request a specific older tag such as v4.1.2, and everything will "just work". But new users can just +`go get github.com/go-chi/chi` or `go get github.com/go-chi/chi@latest` and they will get the latest version which contains +go.mod support, which is v1.5.0+. `chi` will not change very much over the years, just like it hasn't changed much from 4 years ago. +Therefore, we will stay on v1.x from here on, starting from v1.5.0. Any breaking changes will bump a "minor" release and +backwards-compatible improvements/fixes will bump a "tiny" release. + +For existing projects who want to upgrade to the latest go.mod version, run: `go get -u github.com/go-chi/chi@v1.5.0`, +which will get you on the go.mod version line (as Go's mod cache may still remember v4.x). Brand new systems can run +`go get -u github.com/go-chi/chi` or `go get -u github.com/go-chi/chi@latest` to install chi, which will install v1.5.0+ +built with go.mod support. + +My apologies to the developers who will disagree with the decisions above, but, hope you'll try it and see it's a very +minor request which is backwards compatible and won't break your existing installations. + +Cheers all, happy coding! + + +--- + + +## v4.1.2 (2020-06-02) + +- fix that handles MethodNotAllowed with path variables, thank you @caseyhadden for your contribution +- fix to replace nested wildcards correctly in RoutePattern, thank you @@unmultimedio for your contribution +- History of changes: see https://github.com/go-chi/chi/compare/v4.1.1...v4.1.2 + + +## v4.1.1 (2020-04-16) + +- fix for issue https://github.com/go-chi/chi/issues/411 which allows for overlapping regexp + route to the correct handler through a recursive tree search, thanks to @Jahaja for the PR/fix! +- new middleware.RouteHeaders as a simple router for request headers with wildcard support +- History of changes: see https://github.com/go-chi/chi/compare/v4.1.0...v4.1.1 + + +## v4.1.0 (2020-04-1) + +- middleware.LogEntry: Write method on interface now passes the response header + and an extra interface type useful for custom logger implementations. +- middleware.WrapResponseWriter: minor fix +- middleware.Recoverer: a bit prettier +- History of changes: see https://github.com/go-chi/chi/compare/v4.0.4...v4.1.0 + +## v4.0.4 (2020-03-24) + +- middleware.Recoverer: new pretty stack trace printing (https://github.com/go-chi/chi/pull/496) +- a few minor improvements and fixes +- History of changes: see https://github.com/go-chi/chi/compare/v4.0.3...v4.0.4 + + +## v4.0.3 (2020-01-09) + +- core: fix regexp routing to include default value when param is not matched +- middleware: rewrite of middleware.Compress +- middleware: suppress http.ErrAbortHandler in middleware.Recoverer +- History of changes: see https://github.com/go-chi/chi/compare/v4.0.2...v4.0.3 + + +## v4.0.2 (2019-02-26) + +- Minor fixes +- History of changes: see https://github.com/go-chi/chi/compare/v4.0.1...v4.0.2 + + +## v4.0.1 (2019-01-21) + +- Fixes issue with compress middleware: #382 #385 +- History of changes: see https://github.com/go-chi/chi/compare/v4.0.0...v4.0.1 + + +## v4.0.0 (2019-01-10) + +- chi v4 requires Go 1.10.3+ (or Go 1.9.7+) - we have deprecated support for Go 1.7 and 1.8 +- router: respond with 404 on router with no routes (#362) +- router: additional check to ensure wildcard is at the end of a url pattern (#333) +- middleware: deprecate use of http.CloseNotifier (#347) +- middleware: fix RedirectSlashes to include query params on redirect (#334) +- History of changes: see https://github.com/go-chi/chi/compare/v3.3.4...v4.0.0 + + +## v3.3.4 (2019-01-07) + +- Minor middleware improvements. No changes to core library/router. Moving v3 into its +- own branch as a version of chi for Go 1.7, 1.8, 1.9, 1.10, 1.11 +- History of changes: see https://github.com/go-chi/chi/compare/v3.3.3...v3.3.4 + + +## v3.3.3 (2018-08-27) + +- Minor release +- See https://github.com/go-chi/chi/compare/v3.3.2...v3.3.3 + + +## v3.3.2 (2017-12-22) + +- Support to route trailing slashes on mounted sub-routers (#281) +- middleware: new `ContentCharset` to check matching charsets. Thank you + @csucu for your community contribution! + + +## v3.3.1 (2017-11-20) + +- middleware: new `AllowContentType` handler for explicit whitelist of accepted request Content-Types +- middleware: new `SetHeader` handler for short-hand middleware to set a response header key/value +- Minor bug fixes + + +## v3.3.0 (2017-10-10) + +- New chi.RegisterMethod(method) to add support for custom HTTP methods, see _examples/custom-method for usage +- Deprecated LINK and UNLINK methods from the default list, please use `chi.RegisterMethod("LINK")` and `chi.RegisterMethod("UNLINK")` in an `init()` function + + +## v3.2.1 (2017-08-31) + +- Add new `Match(rctx *Context, method, path string) bool` method to `Routes` interface + and `Mux`. Match searches the mux's routing tree for a handler that matches the method/path +- Add new `RouteMethod` to `*Context` +- Add new `Routes` pointer to `*Context` +- Add new `middleware.GetHead` to route missing HEAD requests to GET handler +- Updated benchmarks (see README) + + +## v3.1.5 (2017-08-02) + +- Setup golint and go vet for the project +- As per golint, we've redefined `func ServerBaseContext(h http.Handler, baseCtx context.Context) http.Handler` + to `func ServerBaseContext(baseCtx context.Context, h http.Handler) http.Handler` + + +## v3.1.0 (2017-07-10) + +- Fix a few minor issues after v3 release +- Move `docgen` sub-pkg to https://github.com/go-chi/docgen +- Move `render` sub-pkg to https://github.com/go-chi/render +- Add new `URLFormat` handler to chi/middleware sub-pkg to make working with url mime + suffixes easier, ie. parsing `/articles/1.json` and `/articles/1.xml`. See comments in + https://github.com/go-chi/chi/blob/master/middleware/url_format.go for example usage. + + +## v3.0.0 (2017-06-21) + +- Major update to chi library with many exciting updates, but also some *breaking changes* +- URL parameter syntax changed from `/:id` to `/{id}` for even more flexible routing, such as + `/articles/{month}-{day}-{year}-{slug}`, `/articles/{id}`, and `/articles/{id}.{ext}` on the + same router +- Support for regexp for routing patterns, in the form of `/{paramKey:regExp}` for example: + `r.Get("/articles/{name:[a-z]+}", h)` and `chi.URLParam(r, "name")` +- Add `Method` and `MethodFunc` to `chi.Router` to allow routing definitions such as + `r.Method("GET", "/", h)` which provides a cleaner interface for custom handlers like + in `_examples/custom-handler` +- Deprecating `mux#FileServer` helper function. Instead, we encourage users to create their + own using file handler with the stdlib, see `_examples/fileserver` for an example +- Add support for LINK/UNLINK http methods via `r.Method()` and `r.MethodFunc()` +- Moved the chi project to its own organization, to allow chi-related community packages to + be easily discovered and supported, at: https://github.com/go-chi +- *NOTE:* please update your import paths to `"github.com/go-chi/chi"` +- *NOTE:* chi v2 is still available at https://github.com/go-chi/chi/tree/v2 + + +## v2.1.0 (2017-03-30) + +- Minor improvements and update to the chi core library +- Introduced a brand new `chi/render` sub-package to complete the story of building + APIs to offer a pattern for managing well-defined request / response payloads. Please + check out the updated `_examples/rest` example for how it works. +- Added `MethodNotAllowed(h http.HandlerFunc)` to chi.Router interface + + +## v2.0.0 (2017-01-06) + +- After many months of v2 being in an RC state with many companies and users running it in + production, the inclusion of some improvements to the middlewares, we are very pleased to + announce v2.0.0 of chi. + + +## v2.0.0-rc1 (2016-07-26) + +- Huge update! chi v2 is a large refactor targetting Go 1.7+. As of Go 1.7, the popular + community `"net/context"` package has been included in the standard library as `"context"` and + utilized by `"net/http"` and `http.Request` to managing deadlines, cancelation signals and other + request-scoped values. We're very excited about the new context addition and are proud to + introduce chi v2, a minimal and powerful routing package for building large HTTP services, + with zero external dependencies. Chi focuses on idiomatic design and encourages the use of + stdlib HTTP handlers and middlwares. +- chi v2 deprecates its `chi.Handler` interface and requires `http.Handler` or `http.HandlerFunc` +- chi v2 stores URL routing parameters and patterns in the standard request context: `r.Context()` +- chi v2 lower-level routing context is accessible by `chi.RouteContext(r.Context()) *chi.Context`, + which provides direct access to URL routing parameters, the routing path and the matching + routing patterns. +- Users upgrading from chi v1 to v2, need to: + 1. Update the old chi.Handler signature, `func(ctx context.Context, w http.ResponseWriter, r *http.Request)` to + the standard http.Handler: `func(w http.ResponseWriter, r *http.Request)` + 2. Use `chi.URLParam(r *http.Request, paramKey string) string` + or `URLParamFromCtx(ctx context.Context, paramKey string) string` to access a url parameter value + + +## v1.0.0 (2016-07-01) + +- Released chi v1 stable https://github.com/go-chi/chi/tree/v1.0.0 for Go 1.6 and older. + + +## v0.9.0 (2016-03-31) + +- Reuse context objects via sync.Pool for zero-allocation routing [#33](https://github.com/go-chi/chi/pull/33) +- BREAKING NOTE: due to subtle API changes, previously `chi.URLParams(ctx)["id"]` used to access url parameters + has changed to: `chi.URLParam(ctx, "id")` diff --git a/extra/server-discovery/vendor/github.com/go-chi/chi/v5/CONTRIBUTING.md b/extra/server-discovery/vendor/github.com/go-chi/chi/v5/CONTRIBUTING.md new file mode 100644 index 000000000..c0ac2dfe8 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/go-chi/chi/v5/CONTRIBUTING.md @@ -0,0 +1,31 @@ +# Contributing + +## Prerequisites + +1. [Install Go][go-install]. +2. Download the sources and switch the working directory: + + ```bash + go get -u -d github.com/go-chi/chi + cd $GOPATH/src/github.com/go-chi/chi + ``` + +## Submitting a Pull Request + +A typical workflow is: + +1. [Fork the repository.][fork] [This tip maybe also helpful.][go-fork-tip] +2. [Create a topic branch.][branch] +3. Add tests for your change. +4. Run `go test`. If your tests pass, return to the step 3. +5. Implement the change and ensure the steps from the previous step pass. +6. Run `goimports -w .`, to ensure the new code conforms to Go formatting guideline. +7. [Add, commit and push your changes.][git-help] +8. [Submit a pull request.][pull-req] + +[go-install]: https://golang.org/doc/install +[go-fork-tip]: http://blog.campoy.cat/2014/03/github-and-go-forking-pull-requests-and.html +[fork]: https://help.github.com/articles/fork-a-repo +[branch]: http://learn.github.com/p/branching.html +[git-help]: https://guides.github.com +[pull-req]: https://help.github.com/articles/using-pull-requests diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/LICENSE b/extra/server-discovery/vendor/github.com/go-chi/chi/v5/LICENSE similarity index 100% rename from aux/server-discovery/vendor/github.com/go-chi/chi/LICENSE rename to extra/server-discovery/vendor/github.com/go-chi/chi/v5/LICENSE diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/v5/Makefile b/extra/server-discovery/vendor/github.com/go-chi/chi/v5/Makefile similarity index 100% rename from aux/server-discovery/vendor/github.com/go-chi/chi/v5/Makefile rename to extra/server-discovery/vendor/github.com/go-chi/chi/v5/Makefile diff --git a/extra/server-discovery/vendor/github.com/go-chi/chi/v5/README.md b/extra/server-discovery/vendor/github.com/go-chi/chi/v5/README.md new file mode 100644 index 000000000..5d504d18c --- /dev/null +++ b/extra/server-discovery/vendor/github.com/go-chi/chi/v5/README.md @@ -0,0 +1,500 @@ +# chi + + +[![GoDoc Widget]][GoDoc] [![Travis Widget]][Travis] + +`chi` is a lightweight, idiomatic and composable router for building Go HTTP services. It's +especially good at helping you write large REST API services that are kept maintainable as your +project grows and changes. `chi` is built on the new `context` package introduced in Go 1.7 to +handle signaling, cancelation and request-scoped values across a handler chain. + +The focus of the project has been to seek out an elegant and comfortable design for writing +REST API servers, written during the development of the Pressly API service that powers our +public API service, which in turn powers all of our client-side applications. + +The key considerations of chi's design are: project structure, maintainability, standard http +handlers (stdlib-only), developer productivity, and deconstructing a large system into many small +parts. The core router `github.com/go-chi/chi` is quite small (less than 1000 LOC), but we've also +included some useful/optional subpackages: [middleware](/middleware), [render](https://github.com/go-chi/render) +and [docgen](https://github.com/go-chi/docgen). We hope you enjoy it too! + +## Install + +`go get -u github.com/go-chi/chi/v5` + + +## Features + +* **Lightweight** - cloc'd in ~1000 LOC for the chi router +* **Fast** - yes, see [benchmarks](#benchmarks) +* **100% compatible with net/http** - use any http or middleware pkg in the ecosystem that is also compatible with `net/http` +* **Designed for modular/composable APIs** - middlewares, inline middlewares, route groups and sub-router mounting +* **Context control** - built on new `context` package, providing value chaining, cancellations and timeouts +* **Robust** - in production at Pressly, CloudFlare, Heroku, 99Designs, and many others (see [discussion](https://github.com/go-chi/chi/issues/91)) +* **Doc generation** - `docgen` auto-generates routing documentation from your source to JSON or Markdown +* **Go.mod support** - as of v5, go.mod support (see [CHANGELOG](https://github.com/go-chi/chi/blob/master/CHANGELOG.md)) +* **No external dependencies** - plain ol' Go stdlib + net/http + + +## Examples + +See [_examples/](https://github.com/go-chi/chi/blob/master/_examples/) for a variety of examples. + + +**As easy as:** + +```go +package main + +import ( + "net/http" + + "github.com/go-chi/chi/v5" + "github.com/go-chi/chi/v5/middleware" +) + +func main() { + r := chi.NewRouter() + r.Use(middleware.Logger) + r.Get("/", func(w http.ResponseWriter, r *http.Request) { + w.Write([]byte("welcome")) + }) + http.ListenAndServe(":3000", r) +} +``` + +**REST Preview:** + +Here is a little preview of how routing looks like with chi. Also take a look at the generated routing docs +in JSON ([routes.json](https://github.com/go-chi/chi/blob/master/_examples/rest/routes.json)) and in +Markdown ([routes.md](https://github.com/go-chi/chi/blob/master/_examples/rest/routes.md)). + +I highly recommend reading the source of the [examples](https://github.com/go-chi/chi/blob/master/_examples/) listed +above, they will show you all the features of chi and serve as a good form of documentation. + +```go +import ( + //... + "context" + "github.com/go-chi/chi/v5" + "github.com/go-chi/chi/v5/middleware" +) + +func main() { + r := chi.NewRouter() + + // A good base middleware stack + r.Use(middleware.RequestID) + r.Use(middleware.RealIP) + r.Use(middleware.Logger) + r.Use(middleware.Recoverer) + + // Set a timeout value on the request context (ctx), that will signal + // through ctx.Done() that the request has timed out and further + // processing should be stopped. + r.Use(middleware.Timeout(60 * time.Second)) + + r.Get("/", func(w http.ResponseWriter, r *http.Request) { + w.Write([]byte("hi")) + }) + + // RESTy routes for "articles" resource + r.Route("/articles", func(r chi.Router) { + r.With(paginate).Get("/", listArticles) // GET /articles + r.With(paginate).Get("/{month}-{day}-{year}", listArticlesByDate) // GET /articles/01-16-2017 + + r.Post("/", createArticle) // POST /articles + r.Get("/search", searchArticles) // GET /articles/search + + // Regexp url parameters: + r.Get("/{articleSlug:[a-z-]+}", getArticleBySlug) // GET /articles/home-is-toronto + + // Subrouters: + r.Route("/{articleID}", func(r chi.Router) { + r.Use(ArticleCtx) + r.Get("/", getArticle) // GET /articles/123 + r.Put("/", updateArticle) // PUT /articles/123 + r.Delete("/", deleteArticle) // DELETE /articles/123 + }) + }) + + // Mount the admin sub-router + r.Mount("/admin", adminRouter()) + + http.ListenAndServe(":3333", r) +} + +func ArticleCtx(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + articleID := chi.URLParam(r, "articleID") + article, err := dbGetArticle(articleID) + if err != nil { + http.Error(w, http.StatusText(404), 404) + return + } + ctx := context.WithValue(r.Context(), "article", article) + next.ServeHTTP(w, r.WithContext(ctx)) + }) +} + +func getArticle(w http.ResponseWriter, r *http.Request) { + ctx := r.Context() + article, ok := ctx.Value("article").(*Article) + if !ok { + http.Error(w, http.StatusText(422), 422) + return + } + w.Write([]byte(fmt.Sprintf("title:%s", article.Title))) +} + +// A completely separate router for administrator routes +func adminRouter() http.Handler { + r := chi.NewRouter() + r.Use(AdminOnly) + r.Get("/", adminIndex) + r.Get("/accounts", adminListAccounts) + return r +} + +func AdminOnly(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + ctx := r.Context() + perm, ok := ctx.Value("acl.permission").(YourPermissionType) + if !ok || !perm.IsAdmin() { + http.Error(w, http.StatusText(403), 403) + return + } + next.ServeHTTP(w, r) + }) +} +``` + + +## Router interface + +chi's router is based on a kind of [Patricia Radix trie](https://en.wikipedia.org/wiki/Radix_tree). +The router is fully compatible with `net/http`. + +Built on top of the tree is the `Router` interface: + +```go +// Router consisting of the core routing methods used by chi's Mux, +// using only the standard net/http. +type Router interface { + http.Handler + Routes + + // Use appends one or more middlewares onto the Router stack. + Use(middlewares ...func(http.Handler) http.Handler) + + // With adds inline middlewares for an endpoint handler. + With(middlewares ...func(http.Handler) http.Handler) Router + + // Group adds a new inline-Router along the current routing + // path, with a fresh middleware stack for the inline-Router. + Group(fn func(r Router)) Router + + // Route mounts a sub-Router along a `pattern`` string. + Route(pattern string, fn func(r Router)) Router + + // Mount attaches another http.Handler along ./pattern/* + Mount(pattern string, h http.Handler) + + // Handle and HandleFunc adds routes for `pattern` that matches + // all HTTP methods. + Handle(pattern string, h http.Handler) + HandleFunc(pattern string, h http.HandlerFunc) + + // Method and MethodFunc adds routes for `pattern` that matches + // the `method` HTTP method. + Method(method, pattern string, h http.Handler) + MethodFunc(method, pattern string, h http.HandlerFunc) + + // HTTP-method routing along `pattern` + Connect(pattern string, h http.HandlerFunc) + Delete(pattern string, h http.HandlerFunc) + Get(pattern string, h http.HandlerFunc) + Head(pattern string, h http.HandlerFunc) + Options(pattern string, h http.HandlerFunc) + Patch(pattern string, h http.HandlerFunc) + Post(pattern string, h http.HandlerFunc) + Put(pattern string, h http.HandlerFunc) + Trace(pattern string, h http.HandlerFunc) + + // NotFound defines a handler to respond whenever a route could + // not be found. + NotFound(h http.HandlerFunc) + + // MethodNotAllowed defines a handler to respond whenever a method is + // not allowed. + MethodNotAllowed(h http.HandlerFunc) +} + +// Routes interface adds two methods for router traversal, which is also +// used by the github.com/go-chi/docgen package to generate documentation for Routers. +type Routes interface { + // Routes returns the routing tree in an easily traversable structure. + Routes() []Route + + // Middlewares returns the list of middlewares in use by the router. + Middlewares() Middlewares + + // Match searches the routing tree for a handler that matches + // the method/path - similar to routing a http request, but without + // executing the handler thereafter. + Match(rctx *Context, method, path string) bool +} +``` + +Each routing method accepts a URL `pattern` and chain of `handlers`. The URL pattern +supports named params (ie. `/users/{userID}`) and wildcards (ie. `/admin/*`). URL parameters +can be fetched at runtime by calling `chi.URLParam(r, "userID")` for named parameters +and `chi.URLParam(r, "*")` for a wildcard parameter. + + +### Middleware handlers + +chi's middlewares are just stdlib net/http middleware handlers. There is nothing special +about them, which means the router and all the tooling is designed to be compatible and +friendly with any middleware in the community. This offers much better extensibility and reuse +of packages and is at the heart of chi's purpose. + +Here is an example of a standard net/http middleware where we assign a context key `"user"` +the value of `"123"`. This middleware sets a hypothetical user identifier on the request +context and calls the next handler in the chain. + +```go +// HTTP middleware setting a value on the request context +func MyMiddleware(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + // create new context from `r` request context, and assign key `"user"` + // to value of `"123"` + ctx := context.WithValue(r.Context(), "user", "123") + + // call the next handler in the chain, passing the response writer and + // the updated request object with the new context value. + // + // note: context.Context values are nested, so any previously set + // values will be accessible as well, and the new `"user"` key + // will be accessible from this point forward. + next.ServeHTTP(w, r.WithContext(ctx)) + }) +} +``` + + +### Request handlers + +chi uses standard net/http request handlers. This little snippet is an example of a http.Handler +func that reads a user identifier from the request context - hypothetically, identifying +the user sending an authenticated request, validated+set by a previous middleware handler. + +```go +// HTTP handler accessing data from the request context. +func MyRequestHandler(w http.ResponseWriter, r *http.Request) { + // here we read from the request context and fetch out `"user"` key set in + // the MyMiddleware example above. + user := r.Context().Value("user").(string) + + // respond to the client + w.Write([]byte(fmt.Sprintf("hi %s", user))) +} +``` + + +### URL parameters + +chi's router parses and stores URL parameters right onto the request context. Here is +an example of how to access URL params in your net/http handlers. And of course, middlewares +are able to access the same information. + +```go +// HTTP handler accessing the url routing parameters. +func MyRequestHandler(w http.ResponseWriter, r *http.Request) { + // fetch the url parameter `"userID"` from the request of a matching + // routing pattern. An example routing pattern could be: /users/{userID} + userID := chi.URLParam(r, "userID") + + // fetch `"key"` from the request context + ctx := r.Context() + key := ctx.Value("key").(string) + + // respond to the client + w.Write([]byte(fmt.Sprintf("hi %v, %v", userID, key))) +} +``` + + +## Middlewares + +chi comes equipped with an optional `middleware` package, providing a suite of standard +`net/http` middlewares. Please note, any middleware in the ecosystem that is also compatible +with `net/http` can be used with chi's mux. + +### Core middlewares + +---------------------------------------------------------------------------------------------------- +| chi/middleware Handler | description | +| :--------------------- | :---------------------------------------------------------------------- | +| [AllowContentEncoding] | Enforces a whitelist of request Content-Encoding headers | +| [AllowContentType] | Explicit whitelist of accepted request Content-Types | +| [BasicAuth] | Basic HTTP authentication | +| [Compress] | Gzip compression for clients that accept compressed responses | +| [ContentCharset] | Ensure charset for Content-Type request headers | +| [CleanPath] | Clean double slashes from request path | +| [GetHead] | Automatically route undefined HEAD requests to GET handlers | +| [Heartbeat] | Monitoring endpoint to check the servers pulse | +| [Logger] | Logs the start and end of each request with the elapsed processing time | +| [NoCache] | Sets response headers to prevent clients from caching | +| [Profiler] | Easily attach net/http/pprof to your routers | +| [RealIP] | Sets a http.Request's RemoteAddr to either X-Real-IP or X-Forwarded-For | +| [Recoverer] | Gracefully absorb panics and prints the stack trace | +| [RequestID] | Injects a request ID into the context of each request | +| [RedirectSlashes] | Redirect slashes on routing paths | +| [RouteHeaders] | Route handling for request headers | +| [SetHeader] | Short-hand middleware to set a response header key/value | +| [StripSlashes] | Strip slashes on routing paths | +| [Throttle] | Puts a ceiling on the number of concurrent requests | +| [Timeout] | Signals to the request context when the timeout deadline is reached | +| [URLFormat] | Parse extension from url and put it on request context | +| [WithValue] | Short-hand middleware to set a key/value on the request context | +---------------------------------------------------------------------------------------------------- + +[AllowContentEncoding]: https://pkg.go.dev/github.com/go-chi/chi/middleware#AllowContentEncoding +[AllowContentType]: https://pkg.go.dev/github.com/go-chi/chi/middleware#AllowContentType +[BasicAuth]: https://pkg.go.dev/github.com/go-chi/chi/middleware#BasicAuth +[Compress]: https://pkg.go.dev/github.com/go-chi/chi/middleware#Compress +[ContentCharset]: https://pkg.go.dev/github.com/go-chi/chi/middleware#ContentCharset +[CleanPath]: https://pkg.go.dev/github.com/go-chi/chi/middleware#CleanPath +[GetHead]: https://pkg.go.dev/github.com/go-chi/chi/middleware#GetHead +[GetReqID]: https://pkg.go.dev/github.com/go-chi/chi/middleware#GetReqID +[Heartbeat]: https://pkg.go.dev/github.com/go-chi/chi/middleware#Heartbeat +[Logger]: https://pkg.go.dev/github.com/go-chi/chi/middleware#Logger +[NoCache]: https://pkg.go.dev/github.com/go-chi/chi/middleware#NoCache +[Profiler]: https://pkg.go.dev/github.com/go-chi/chi/middleware#Profiler +[RealIP]: https://pkg.go.dev/github.com/go-chi/chi/middleware#RealIP +[Recoverer]: https://pkg.go.dev/github.com/go-chi/chi/middleware#Recoverer +[RedirectSlashes]: https://pkg.go.dev/github.com/go-chi/chi/middleware#RedirectSlashes +[RequestLogger]: https://pkg.go.dev/github.com/go-chi/chi/middleware#RequestLogger +[RequestID]: https://pkg.go.dev/github.com/go-chi/chi/middleware#RequestID +[RouteHeaders]: https://pkg.go.dev/github.com/go-chi/chi/middleware#RouteHeaders +[SetHeader]: https://pkg.go.dev/github.com/go-chi/chi/middleware#SetHeader +[StripSlashes]: https://pkg.go.dev/github.com/go-chi/chi/middleware#StripSlashes +[Throttle]: https://pkg.go.dev/github.com/go-chi/chi/middleware#Throttle +[ThrottleBacklog]: https://pkg.go.dev/github.com/go-chi/chi/middleware#ThrottleBacklog +[ThrottleWithOpts]: https://pkg.go.dev/github.com/go-chi/chi/middleware#ThrottleWithOpts +[Timeout]: https://pkg.go.dev/github.com/go-chi/chi/middleware#Timeout +[URLFormat]: https://pkg.go.dev/github.com/go-chi/chi/middleware#URLFormat +[WithLogEntry]: https://pkg.go.dev/github.com/go-chi/chi/middleware#WithLogEntry +[WithValue]: https://pkg.go.dev/github.com/go-chi/chi/middleware#WithValue +[Compressor]: https://pkg.go.dev/github.com/go-chi/chi/middleware#Compressor +[DefaultLogFormatter]: https://pkg.go.dev/github.com/go-chi/chi/middleware#DefaultLogFormatter +[EncoderFunc]: https://pkg.go.dev/github.com/go-chi/chi/middleware#EncoderFunc +[HeaderRoute]: https://pkg.go.dev/github.com/go-chi/chi/middleware#HeaderRoute +[HeaderRouter]: https://pkg.go.dev/github.com/go-chi/chi/middleware#HeaderRouter +[LogEntry]: https://pkg.go.dev/github.com/go-chi/chi/middleware#LogEntry +[LogFormatter]: https://pkg.go.dev/github.com/go-chi/chi/middleware#LogFormatter +[LoggerInterface]: https://pkg.go.dev/github.com/go-chi/chi/middleware#LoggerInterface +[ThrottleOpts]: https://pkg.go.dev/github.com/go-chi/chi/middleware#ThrottleOpts +[WrapResponseWriter]: https://pkg.go.dev/github.com/go-chi/chi/middleware#WrapResponseWriter + +### Extra middlewares & packages + +Please see https://github.com/go-chi for additional packages. + +-------------------------------------------------------------------------------------------------------------------- +| package | description | +|:---------------------------------------------------|:------------------------------------------------------------- +| [cors](https://github.com/go-chi/cors) | Cross-origin resource sharing (CORS) | +| [docgen](https://github.com/go-chi/docgen) | Print chi.Router routes at runtime | +| [jwtauth](https://github.com/go-chi/jwtauth) | JWT authentication | +| [hostrouter](https://github.com/go-chi/hostrouter) | Domain/host based request routing | +| [httplog](https://github.com/go-chi/httplog) | Small but powerful structured HTTP request logging | +| [httprate](https://github.com/go-chi/httprate) | HTTP request rate limiter | +| [httptracer](https://github.com/go-chi/httptracer) | HTTP request performance tracing library | +| [httpvcr](https://github.com/go-chi/httpvcr) | Write deterministic tests for external sources | +| [stampede](https://github.com/go-chi/stampede) | HTTP request coalescer | +-------------------------------------------------------------------------------------------------------------------- + + +## context? + +`context` is a tiny pkg that provides simple interface to signal context across call stacks +and goroutines. It was originally written by [Sameer Ajmani](https://github.com/Sajmani) +and is available in stdlib since go1.7. + +Learn more at https://blog.golang.org/context + +and.. +* Docs: https://golang.org/pkg/context +* Source: https://github.com/golang/go/tree/master/src/context + + +## Benchmarks + +The benchmark suite: https://github.com/pkieltyka/go-http-routing-benchmark + +Results as of Nov 29, 2020 with Go 1.15.5 on Linux AMD 3950x + +```shell +BenchmarkChi_Param 3075895 384 ns/op 400 B/op 2 allocs/op +BenchmarkChi_Param5 2116603 566 ns/op 400 B/op 2 allocs/op +BenchmarkChi_Param20 964117 1227 ns/op 400 B/op 2 allocs/op +BenchmarkChi_ParamWrite 2863413 420 ns/op 400 B/op 2 allocs/op +BenchmarkChi_GithubStatic 3045488 395 ns/op 400 B/op 2 allocs/op +BenchmarkChi_GithubParam 2204115 540 ns/op 400 B/op 2 allocs/op +BenchmarkChi_GithubAll 10000 113811 ns/op 81203 B/op 406 allocs/op +BenchmarkChi_GPlusStatic 3337485 359 ns/op 400 B/op 2 allocs/op +BenchmarkChi_GPlusParam 2825853 423 ns/op 400 B/op 2 allocs/op +BenchmarkChi_GPlus2Params 2471697 483 ns/op 400 B/op 2 allocs/op +BenchmarkChi_GPlusAll 194220 5950 ns/op 5200 B/op 26 allocs/op +BenchmarkChi_ParseStatic 3365324 356 ns/op 400 B/op 2 allocs/op +BenchmarkChi_ParseParam 2976614 404 ns/op 400 B/op 2 allocs/op +BenchmarkChi_Parse2Params 2638084 439 ns/op 400 B/op 2 allocs/op +BenchmarkChi_ParseAll 109567 11295 ns/op 10400 B/op 52 allocs/op +BenchmarkChi_StaticAll 16846 71308 ns/op 62802 B/op 314 allocs/op +``` + +Comparison with other routers: https://gist.github.com/pkieltyka/123032f12052520aaccab752bd3e78cc + +NOTE: the allocs in the benchmark above are from the calls to http.Request's +`WithContext(context.Context)` method that clones the http.Request, sets the `Context()` +on the duplicated (alloc'd) request and returns it the new request object. This is just +how setting context on a request in Go works. + + +## Credits + +* Carl Jackson for https://github.com/zenazn/goji + * Parts of chi's thinking comes from goji, and chi's middleware package + sources from goji. +* Armon Dadgar for https://github.com/armon/go-radix +* Contributions: [@VojtechVitek](https://github.com/VojtechVitek) + +We'll be more than happy to see [your contributions](./CONTRIBUTING.md)! + + +## Beyond REST + +chi is just a http router that lets you decompose request handling into many smaller layers. +Many companies use chi to write REST services for their public APIs. But, REST is just a convention +for managing state via HTTP, and there's a lot of other pieces required to write a complete client-server +system or network of microservices. + +Looking beyond REST, I also recommend some newer works in the field: +* [webrpc](https://github.com/webrpc/webrpc) - Web-focused RPC client+server framework with code-gen +* [gRPC](https://github.com/grpc/grpc-go) - Google's RPC framework via protobufs +* [graphql](https://github.com/99designs/gqlgen) - Declarative query language +* [NATS](https://nats.io) - lightweight pub-sub + + +## License + +Copyright (c) 2015-present [Peter Kieltyka](https://github.com/pkieltyka) + +Licensed under [MIT License](./LICENSE) + +[GoDoc]: https://pkg.go.dev/github.com/go-chi/chi?tab=versions +[GoDoc Widget]: https://godoc.org/github.com/go-chi/chi?status.svg +[Travis]: https://travis-ci.org/go-chi/chi +[Travis Widget]: https://travis-ci.org/go-chi/chi.svg?branch=master diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/v5/chain.go b/extra/server-discovery/vendor/github.com/go-chi/chi/v5/chain.go similarity index 100% rename from aux/server-discovery/vendor/github.com/go-chi/chi/v5/chain.go rename to extra/server-discovery/vendor/github.com/go-chi/chi/v5/chain.go diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/v5/chi.go b/extra/server-discovery/vendor/github.com/go-chi/chi/v5/chi.go similarity index 100% rename from aux/server-discovery/vendor/github.com/go-chi/chi/v5/chi.go rename to extra/server-discovery/vendor/github.com/go-chi/chi/v5/chi.go diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/v5/context.go b/extra/server-discovery/vendor/github.com/go-chi/chi/v5/context.go similarity index 100% rename from aux/server-discovery/vendor/github.com/go-chi/chi/v5/context.go rename to extra/server-discovery/vendor/github.com/go-chi/chi/v5/context.go diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/basic_auth.go b/extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/basic_auth.go similarity index 100% rename from aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/basic_auth.go rename to extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/basic_auth.go diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/clean_path.go b/extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/clean_path.go similarity index 100% rename from aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/clean_path.go rename to extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/clean_path.go diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/compress.go b/extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/compress.go similarity index 100% rename from aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/compress.go rename to extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/compress.go diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/content_charset.go b/extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/content_charset.go similarity index 100% rename from aux/server-discovery/vendor/github.com/go-chi/chi/middleware/content_charset.go rename to extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/content_charset.go diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/content_encoding.go b/extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/content_encoding.go similarity index 100% rename from aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/content_encoding.go rename to extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/content_encoding.go diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/content_type.go b/extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/content_type.go similarity index 100% rename from aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/content_type.go rename to extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/content_type.go diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/get_head.go b/extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/get_head.go similarity index 100% rename from aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/get_head.go rename to extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/get_head.go diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/heartbeat.go b/extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/heartbeat.go similarity index 100% rename from aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/heartbeat.go rename to extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/heartbeat.go diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/logger.go b/extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/logger.go similarity index 100% rename from aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/logger.go rename to extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/logger.go diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/maybe.go b/extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/maybe.go similarity index 100% rename from aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/maybe.go rename to extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/maybe.go diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/middleware.go b/extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/middleware.go similarity index 100% rename from aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/middleware.go rename to extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/middleware.go diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/nocache.go b/extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/nocache.go similarity index 100% rename from aux/server-discovery/vendor/github.com/go-chi/chi/middleware/nocache.go rename to extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/nocache.go diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/page_route.go b/extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/page_route.go similarity index 100% rename from aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/page_route.go rename to extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/page_route.go diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/path_rewrite.go b/extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/path_rewrite.go similarity index 100% rename from aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/path_rewrite.go rename to extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/path_rewrite.go diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/profiler.go b/extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/profiler.go similarity index 100% rename from aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/profiler.go rename to extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/profiler.go diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/realip.go b/extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/realip.go similarity index 100% rename from aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/realip.go rename to extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/realip.go diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/recoverer.go b/extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/recoverer.go similarity index 100% rename from aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/recoverer.go rename to extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/recoverer.go diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/request_id.go b/extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/request_id.go similarity index 100% rename from aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/request_id.go rename to extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/request_id.go diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/route_headers.go b/extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/route_headers.go similarity index 100% rename from aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/route_headers.go rename to extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/route_headers.go diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/strip.go b/extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/strip.go similarity index 100% rename from aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/strip.go rename to extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/strip.go diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/terminal.go b/extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/terminal.go similarity index 100% rename from aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/terminal.go rename to extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/terminal.go diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/throttle.go b/extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/throttle.go similarity index 100% rename from aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/throttle.go rename to extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/throttle.go diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/middleware/timeout.go b/extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/timeout.go similarity index 100% rename from aux/server-discovery/vendor/github.com/go-chi/chi/middleware/timeout.go rename to extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/timeout.go diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/url_format.go b/extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/url_format.go similarity index 100% rename from aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/url_format.go rename to extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/url_format.go diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/value.go b/extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/value.go similarity index 100% rename from aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/value.go rename to extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/value.go diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/wrap_writer.go b/extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/wrap_writer.go similarity index 100% rename from aux/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/wrap_writer.go rename to extra/server-discovery/vendor/github.com/go-chi/chi/v5/middleware/wrap_writer.go diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/v5/mux.go b/extra/server-discovery/vendor/github.com/go-chi/chi/v5/mux.go similarity index 100% rename from aux/server-discovery/vendor/github.com/go-chi/chi/v5/mux.go rename to extra/server-discovery/vendor/github.com/go-chi/chi/v5/mux.go diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/v5/tree.go b/extra/server-discovery/vendor/github.com/go-chi/chi/v5/tree.go similarity index 100% rename from aux/server-discovery/vendor/github.com/go-chi/chi/v5/tree.go rename to extra/server-discovery/vendor/github.com/go-chi/chi/v5/tree.go diff --git a/aux/server-discovery/vendor/github.com/go-chi/chi/v5/LICENSE b/extra/server-discovery/vendor/github.com/go-chi/cors/LICENSE similarity index 89% rename from aux/server-discovery/vendor/github.com/go-chi/chi/v5/LICENSE rename to extra/server-discovery/vendor/github.com/go-chi/cors/LICENSE index d99f02ffa..aee6182f9 100644 --- a/aux/server-discovery/vendor/github.com/go-chi/chi/v5/LICENSE +++ b/extra/server-discovery/vendor/github.com/go-chi/cors/LICENSE @@ -1,4 +1,5 @@ -Copyright (c) 2015-present Peter Kieltyka (https://github.com/pkieltyka), Google Inc. +Copyright (c) 2014 Olivier Poitrey +Copyright (c) 2016-Present https://github.com/go-chi authors MIT License diff --git a/extra/server-discovery/vendor/github.com/go-chi/cors/README.md b/extra/server-discovery/vendor/github.com/go-chi/cors/README.md new file mode 100644 index 000000000..b41686b6a --- /dev/null +++ b/extra/server-discovery/vendor/github.com/go-chi/cors/README.md @@ -0,0 +1,39 @@ +# CORS net/http middleware + +[go-chi/cors](https://github.com/go-chi/cors) is a fork of [github.com/rs/cors](https://github.com/rs/cors) that +provides a `net/http` compatible middleware for performing preflight CORS checks on the server side. These headers +are required for using the browser native [Fetch API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API). + +This middleware is designed to be used as a top-level middleware on the [chi](https://github.com/go-chi/chi) router. +Applying with within a `r.Group()` or using `With()` will not work without routes matching `OPTIONS` added. + +## Usage + +```go +func main() { + r := chi.NewRouter() + + // Basic CORS + // for more ideas, see: https://developer.github.com/v3/#cross-origin-resource-sharing + r.Use(cors.Handler(cors.Options{ + // AllowedOrigins: []string{"https://foo.com"}, // Use this to allow specific origin hosts + AllowedOrigins: []string{"https://*", "http://*"}, + // AllowOriginFunc: func(r *http.Request, origin string) bool { return true }, + AllowedMethods: []string{"GET", "POST", "PUT", "DELETE", "OPTIONS"}, + AllowedHeaders: []string{"Accept", "Authorization", "Content-Type", "X-CSRF-Token"}, + ExposedHeaders: []string{"Link"}, + AllowCredentials: false, + MaxAge: 300, // Maximum value not ignored by any of major browsers + })) + + r.Get("/", func(w http.ResponseWriter, r *http.Request) { + w.Write([]byte("welcome")) + }) + + http.ListenAndServe(":3000", r) +} +``` + +## Credits + +All credit for the original work of this middleware goes out to [github.com/rs](github.com/rs). diff --git a/aux/server-discovery/vendor/github.com/go-chi/cors/cors.go b/extra/server-discovery/vendor/github.com/go-chi/cors/cors.go similarity index 84% rename from aux/server-discovery/vendor/github.com/go-chi/cors/cors.go rename to extra/server-discovery/vendor/github.com/go-chi/cors/cors.go index d85d86cbc..8df81636e 100644 --- a/aux/server-discovery/vendor/github.com/go-chi/cors/cors.go +++ b/extra/server-discovery/vendor/github.com/go-chi/cors/cors.go @@ -31,18 +31,18 @@ type Options struct { // AllowedOrigins is 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. + // (i.e.: http://*.domain.com). Usage of wildcards implies a small performance penalty. // Only one wildcard can be used per origin. // Default value is ["*"] AllowedOrigins []string - // AllowOriginFunc is a custom function to validate the origin. It take the origin + // AllowOriginFunc is a custom function to validate the origin. It takes the origin // as argument and returns true if allowed or false otherwise. If this option is // set, the content of AllowedOrigins is ignored. AllowOriginFunc func(r *http.Request, origin string) bool // AllowedMethods is a list of methods the client is allowed to use with - // cross-domain requests. Default value is simple methods (GET and POST) + // cross-domain requests. Default value is simple methods (HEAD, GET and POST). AllowedMethods []string // AllowedHeaders is list of non simple headers the client is allowed to use with @@ -71,13 +71,15 @@ type Options struct { Debug bool } +// Logger generic interface for logger +type Logger interface { + Printf(string, ...interface{}) +} + // Cors http handler type Cors struct { // Debug logger - log *log.Logger - - // Set to true when allowed origins contains a "*" - allowedOriginsAll bool + Log Logger // Normalized list of plain allowed origins allowedOrigins []string @@ -88,9 +90,6 @@ type Cors struct { // Optional origin validator function allowOriginFunc func(r *http.Request, origin string) bool - // Set to true when allowed headers contains a "*" - allowedHeadersAll bool - // Normalized list of allowed headers allowedHeaders []string @@ -98,9 +97,16 @@ type Cors struct { allowedMethods []string // Normalized list of exposed headers - exposedHeaders []string + exposedHeaders []string + maxAge int + + // Set to true when allowed origins contains a "*" + allowedOriginsAll bool + + // Set to true when allowed headers contains a "*" + allowedHeadersAll bool + allowCredentials bool - maxAge int optionPassthrough bool } @@ -113,8 +119,8 @@ func New(options Options) *Cors { maxAge: options.MaxAge, optionPassthrough: options.OptionsPassthrough, } - if options.Debug { - c.log = log.New(os.Stdout, "[cors] ", log.LstdFlags) + if options.Debug && c.Log == nil { + c.Log = log.New(os.Stdout, "[cors] ", log.LstdFlags) } // Normalize options @@ -123,8 +129,10 @@ func New(options Options) *Cors { // Allowed Origins if len(options.AllowedOrigins) == 0 { - // Default is all origins - c.allowedOriginsAll = true + if options.AllowOriginFunc == nil { + // Default is all origins + c.allowedOriginsAll = true + } } else { c.allowedOrigins = []string{} c.allowedWOrigins = []wildcard{} @@ -139,7 +147,7 @@ func New(options Options) *Cors { break } else if i := strings.IndexByte(origin, '*'); i >= 0 { // Split the origin in two: start and end string without the * - w := wildcard{origin[0:i], origin[i+1 : len(origin)]} + w := wildcard{origin[0:i], origin[i+1:]} c.allowedWOrigins = append(c.allowedWOrigins, w) } else { c.allowedOrigins = append(c.allowedOrigins, origin) @@ -166,7 +174,7 @@ func New(options Options) *Cors { // Allowed Methods if len(options.AllowedMethods) == 0 { // Default is spec's "simple" methods - c.allowedMethods = []string{"GET", "POST"} + c.allowedMethods = []string{http.MethodGet, http.MethodPost, http.MethodHead} } else { c.allowedMethods = convert(options.AllowedMethods, strings.ToUpper) } @@ -174,16 +182,35 @@ func New(options Options) *Cors { return c } -// Default creates a new Cors handler with default options -func Default() *Cors { - return New(Options{}) +// Handler creates a new Cors handler with passed options. +func Handler(options Options) func(next http.Handler) http.Handler { + c := New(options) + return c.Handler +} + +// AllowAll create a new Cors handler with permissive configuration allowing all +// origins with all standard methods with any header and credentials. +func AllowAll() *Cors { + return New(Options{ + AllowedOrigins: []string{"*"}, + AllowedMethods: []string{ + http.MethodHead, + http.MethodGet, + http.MethodPost, + http.MethodPut, + http.MethodPatch, + http.MethodDelete, + }, + AllowedHeaders: []string{"*"}, + AllowCredentials: false, + }) } // Handler apply the CORS specification on the request, and add relevant CORS headers // as necessary. func (c *Cors) Handler(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if r.Method == "OPTIONS" { + if r.Method == http.MethodOptions && r.Header.Get("Access-Control-Request-Method") != "" { c.logf("Handler: Preflight request") c.handlePreflight(w, r) // Preflight requests are standalone and should stop the chain as some other @@ -192,6 +219,8 @@ func (c *Cors) Handler(next http.Handler) http.Handler { // headers (see #1) if c.optionPassthrough { next.ServeHTTP(w, r) + } else { + w.WriteHeader(http.StatusOK) } } else { c.logf("Handler: Actual request") @@ -206,7 +235,7 @@ func (c *Cors) handlePreflight(w http.ResponseWriter, r *http.Request) { headers := w.Header() origin := r.Header.Get("Origin") - if r.Method != "OPTIONS" { + if r.Method != http.MethodOptions { c.logf("Preflight aborted: %s!=OPTIONS", r.Method) return } @@ -236,7 +265,11 @@ func (c *Cors) handlePreflight(w http.ResponseWriter, r *http.Request) { c.logf("Preflight aborted: headers '%v' not allowed", reqHeaders) return } - headers.Set("Access-Control-Allow-Origin", origin) + if c.allowedOriginsAll { + headers.Set("Access-Control-Allow-Origin", "*") + } else { + headers.Set("Access-Control-Allow-Origin", origin) + } // Spec says: Since the list of methods can be unbounded, simply returning the method indicated // by Access-Control-Request-Method (if supported) can be enough headers.Set("Access-Control-Allow-Methods", strings.ToUpper(reqMethod)) @@ -260,10 +293,6 @@ func (c *Cors) handleActualRequest(w http.ResponseWriter, r *http.Request) { headers := w.Header() origin := r.Header.Get("Origin") - if r.Method == "OPTIONS" { - c.logf("Actual request no headers added: method == %s", r.Method) - return - } // Always set Vary, see https://github.com/rs/cors/issues/10 headers.Add("Vary", "Origin") if origin == "" { @@ -280,14 +309,15 @@ func (c *Cors) handleActualRequest(w http.ResponseWriter, r *http.Request) { // spec doesn't instruct to check the allowed methods for simple cross-origin requests. // We think it's a nice feature to be able to have control on those methods though. if !c.isMethodAllowed(r.Method) { - if c.log != nil { - c.logf("Actual request no headers added: method '%s' not allowed", - r.Method) - } + c.logf("Actual request no headers added: method '%s' not allowed", r.Method) return } - headers.Set("Access-Control-Allow-Origin", origin) + if c.allowedOriginsAll { + headers.Set("Access-Control-Allow-Origin", "*") + } else { + headers.Set("Access-Control-Allow-Origin", origin) + } if len(c.exposedHeaders) > 0 { headers.Set("Access-Control-Expose-Headers", strings.Join(c.exposedHeaders, ", ")) } @@ -297,10 +327,10 @@ func (c *Cors) handleActualRequest(w http.ResponseWriter, r *http.Request) { c.logf("Actual response added headers: %v", headers) } -// convenience method. checks if debugging is turned on before printing +// convenience method. checks if a logger is set. func (c *Cors) logf(format string, a ...interface{}) { - if c.log != nil { - c.log.Printf(format, a...) + if c.Log != nil { + c.Log.Printf(format, a...) } } @@ -328,14 +358,14 @@ func (c *Cors) isOriginAllowed(r *http.Request, origin string) bool { } // isMethodAllowed checks if a given method can be used as part of a cross-domain request -// on the endpoing +// on the endpoint func (c *Cors) isMethodAllowed(method string) bool { if len(c.allowedMethods) == 0 { // If no method allowed, always return false, even for preflight request return false } method = strings.ToUpper(method) - if method == "OPTIONS" { + if method == http.MethodOptions { // Always allow preflight requests return true } @@ -359,6 +389,7 @@ func (c *Cors) areHeadersAllowed(requestedHeaders []string) bool { for _, h := range c.allowedHeaders { if h == header { found = true + break } } if !found { diff --git a/aux/server-discovery/vendor/github.com/go-chi/cors/utils.go b/extra/server-discovery/vendor/github.com/go-chi/cors/utils.go similarity index 95% rename from aux/server-discovery/vendor/github.com/go-chi/cors/utils.go rename to extra/server-discovery/vendor/github.com/go-chi/cors/utils.go index cd24831fc..3fe5a5aee 100644 --- a/aux/server-discovery/vendor/github.com/go-chi/cors/utils.go +++ b/extra/server-discovery/vendor/github.com/go-chi/cors/utils.go @@ -51,7 +51,7 @@ func parseHeaderList(headerList string) []string { } else { h = append(h, b) } - } else if b == '-' || (b >= '0' && b <= '9') { + } else if b == '-' || b == '_' || b == '.' || (b >= '0' && b <= '9') { h = append(h, b) } diff --git a/aux/server-discovery/vendor/github.com/go-chi/jwtauth/.gitignore b/extra/server-discovery/vendor/github.com/go-chi/jwtauth/.gitignore similarity index 100% rename from aux/server-discovery/vendor/github.com/go-chi/jwtauth/.gitignore rename to extra/server-discovery/vendor/github.com/go-chi/jwtauth/.gitignore diff --git a/aux/server-discovery/vendor/github.com/go-chi/jwtauth/LICENSE b/extra/server-discovery/vendor/github.com/go-chi/jwtauth/LICENSE similarity index 100% rename from aux/server-discovery/vendor/github.com/go-chi/jwtauth/LICENSE rename to extra/server-discovery/vendor/github.com/go-chi/jwtauth/LICENSE diff --git a/extra/server-discovery/vendor/github.com/go-chi/jwtauth/README.md b/extra/server-discovery/vendor/github.com/go-chi/jwtauth/README.md new file mode 100644 index 000000000..f68e46cdb --- /dev/null +++ b/extra/server-discovery/vendor/github.com/go-chi/jwtauth/README.md @@ -0,0 +1,111 @@ +# jwtauth - JWT authentication middleware for HTTP services + +[![GoDoc Widget]][godoc] + +The `jwtauth` http middleware package provides a simple way to verify a JWT token +from a http request and send the result down the request context (`context.Context`). + +Please note, `jwtauth` works with any Go http router, but resides under the go-chi group +for maintenance and organization - its only 3rd party dependency is the underlying jwt library +"github.com/lestrrat-go/jwx". + +In a complete JWT-authentication flow, you'll first capture the token from a http +request, decode it, verify it and then validate that its correctly signed and hasn't +expired - the `jwtauth.Verifier` middleware handler takes care of all of that. The +`jwtauth.Verifier` will set the context values on keys `jwtauth.TokenCtxKey` and +`jwtauth.ErrorCtxKey`. + +Next, it's up to an authentication handler to respond or continue processing after the +`jwtauth.Verifier`. The `jwtauth.Authenticator` middleware responds with a 401 Unauthorized +plain-text payload for all unverified tokens and passes the good ones through. You can +also copy the Authenticator and customize it to handle invalid tokens to better fit +your flow (ie. with a JSON error response body). + +By default, the `Verifier` will search for a JWT token in a http request, in the order: + +1. 'Authorization: BEARER T' request header +2. 'jwt' Cookie value + +The first JWT string that is found as an authorization header +or cookie header is then decoded by the `lestrrat-go/jwx` library and a jwt.Token +object is set on the request context. In the case of a signature decoding error +the Verifier will also set the error on the request context. + +The Verifier always calls the next http handler in sequence, which can either +be the generic `jwtauth.Authenticator` middleware or your own custom handler +which checks the request context jwt token and error to prepare a custom +http response. + +Note: jwtauth supports custom verification sequences for finding a token +from a request by using the `Verify` middleware instantiator directly. The default +`Verifier` is instantiated by calling `Verify(ja, TokenFromHeader, TokenFromCookie)`. + +# Usage + +See the full [example](https://github.com/go-chi/jwtauth/blob/master/_example/main.go). + +```go +package main + +import ( + "fmt" + "net/http" + + "github.com/go-chi/chi" + "github.com/go-chi/jwtauth" +) + +var tokenAuth *jwtauth.JWTAuth + +func init() { + tokenAuth = jwtauth.New("HS256", []byte("secret"), nil) + + // For debugging/example purposes, we generate and print + // a sample jwt token with claims `user_id:123` here: + _, tokenString, _ := tokenAuth.Encode(map[string]interface{}{"user_id": 123}) + fmt.Printf("DEBUG: a sample jwt is %s\n\n", tokenString) +} + +func main() { + addr := ":3333" + fmt.Printf("Starting server on %v\n", addr) + http.ListenAndServe(addr, router()) +} + +func router() http.Handler { + r := chi.NewRouter() + + // Protected routes + r.Group(func(r chi.Router) { + // Seek, verify and validate JWT tokens + r.Use(jwtauth.Verifier(tokenAuth)) + + // Handle valid / invalid tokens. In this example, we use + // the provided authenticator middleware, but you can write your + // own very easily, look at the Authenticator method in jwtauth.go + // and tweak it, its not scary. + r.Use(jwtauth.Authenticator) + + r.Get("/admin", func(w http.ResponseWriter, r *http.Request) { + _, claims, _ := jwtauth.FromContext(r.Context()) + w.Write([]byte(fmt.Sprintf("protected area. hi %v", claims["user_id"]))) + }) + }) + + // Public routes + r.Group(func(r chi.Router) { + r.Get("/", func(w http.ResponseWriter, r *http.Request) { + w.Write([]byte("welcome anonymous")) + }) + }) + + return r +} +``` + +# LICENSE + +[MIT](/LICENSE) + +[godoc]: https://godoc.org/github.com/go-chi/jwtauth +[godoc widget]: https://godoc.org/github.com/go-chi/jwtauth?status.svg diff --git a/aux/server-discovery/vendor/github.com/go-chi/jwtauth/jwtauth.go b/extra/server-discovery/vendor/github.com/go-chi/jwtauth/jwtauth.go similarity index 100% rename from aux/server-discovery/vendor/github.com/go-chi/jwtauth/jwtauth.go rename to extra/server-discovery/vendor/github.com/go-chi/jwtauth/jwtauth.go diff --git a/extra/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/.editorconfig b/extra/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/.editorconfig new file mode 100644 index 000000000..74aa1f67d --- /dev/null +++ b/extra/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/.editorconfig @@ -0,0 +1,2 @@ +[*.go] +end_of_line = crlf \ No newline at end of file diff --git a/aux/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/.gitignore b/extra/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/.gitignore similarity index 96% rename from aux/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/.gitignore rename to extra/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/.gitignore index 562f0b9ee..2a8538bb9 100644 --- a/aux/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/.gitignore +++ b/extra/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/.gitignore @@ -23,6 +23,8 @@ _testmain.go *.test *.prof +coverage.txt + # OSX *.DS_Store *.db diff --git a/aux/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/.travis.yml b/extra/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/.travis.yml similarity index 100% rename from aux/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/.travis.yml rename to extra/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/.travis.yml diff --git a/aux/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/LICENSE b/extra/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/LICENSE similarity index 100% rename from aux/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/LICENSE rename to extra/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/LICENSE diff --git a/extra/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/README.md b/extra/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/README.md new file mode 100644 index 000000000..affa54b54 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/README.md @@ -0,0 +1,196 @@ +# Golang OAuth 2.0 Server + +> An open protocol to allow secure authorization in a simple and standard method from web, mobile and desktop applications. + +[![Build][build-status-image]][build-status-url] [![Codecov][codecov-image]][codecov-url] [![ReportCard][reportcard-image]][reportcard-url] [![GoDoc][godoc-image]][godoc-url] [![License][license-image]][license-url] + +## Protocol Flow + +```text + +--------+ +---------------+ + | |--(A)- Authorization Request ->| Resource | + | | | Owner | + | |<-(B)-- Authorization Grant ---| | + | | +---------------+ + | | + | | +---------------+ + | |--(C)-- Authorization Grant -->| Authorization | + | Client | | Server | + | |<-(D)----- Access Token -------| | + | | +---------------+ + | | + | | +---------------+ + | |--(E)----- Access Token ------>| Resource | + | | | Server | + | |<-(F)--- Protected Resource ---| | + +--------+ +---------------+ +``` + +## Quick Start + +### Download and install + +```bash +go get -u -v github.com/go-oauth2/oauth2/v4/... +``` + +### Create file `server.go` + +```go +package main + +import ( + "log" + "net/http" + + "github.com/go-oauth2/oauth2/v4/errors" + "github.com/go-oauth2/oauth2/v4/manage" + "github.com/go-oauth2/oauth2/v4/models" + "github.com/go-oauth2/oauth2/v4/server" + "github.com/go-oauth2/oauth2/v4/store" +) + +func main() { + manager := manage.NewDefaultManager() + // token memory store + manager.MustTokenStorage(store.NewMemoryTokenStore()) + + // client memory store + clientStore := store.NewClientStore() + clientStore.Set("000000", &models.Client{ + ID: "000000", + Secret: "999999", + Domain: "http://localhost", + }) + manager.MapClientStorage(clientStore) + + srv := server.NewDefaultServer(manager) + srv.SetAllowGetAccessRequest(true) + srv.SetClientInfoHandler(server.ClientFormHandler) + + srv.SetInternalErrorHandler(func(err error) (re *errors.Response) { + log.Println("Internal Error:", err.Error()) + return + }) + + srv.SetResponseErrorHandler(func(re *errors.Response) { + log.Println("Response Error:", re.Error.Error()) + }) + + http.HandleFunc("/authorize", func(w http.ResponseWriter, r *http.Request) { + err := srv.HandleAuthorizeRequest(w, r) + if err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + } + }) + + http.HandleFunc("/token", func(w http.ResponseWriter, r *http.Request) { + srv.HandleTokenRequest(w, r) + }) + + log.Fatal(http.ListenAndServe(":9096", nil)) +} + +``` + +### Build and run + +```bash +go build server.go + +./server +``` + +### Open in your web browser +**Authorization Request**: +[http://localhost:9096/authorize?client_id=000000&response_type=code](http://localhost:9096/authorize?client_id=000000&response_type=code) + +**Grant Token Request**: +[http://localhost:9096/token?grant_type=client_credentials&client_id=000000&client_secret=999999&scope=read](http://localhost:9096/token?grant_type=client_credentials&client_id=000000&client_secret=999999&scope=read) + +```json +{ + "access_token": "J86XVRYSNFCFI233KXDL0Q", + "expires_in": 7200, + "scope": "read", + "token_type": "Bearer" +} +``` + +## Features + +- Easy to use +- Based on the [RFC 6749](https://tools.ietf.org/html/rfc6749) implementation +- Token storage support TTL +- Support custom expiration time of the access token +- Support custom extension field +- Support custom scope +- Support jwt to generate access tokens + +## Example + +> A complete example of simulation authorization code model + +Simulation examples of authorization code model, please check [example](/example) + +### Use jwt to generate access tokens + +```go + +import ( + "github.com/go-oauth2/oauth2/v4/generates" + "github.com/dgrijalva/jwt-go" +) + +// ... +manager.MapAccessGenerate(generates.NewJWTAccessGenerate("", []byte("00000000"), jwt.SigningMethodHS512)) + +// Parse and verify jwt access token +token, err := jwt.ParseWithClaims(access, &generates.JWTAccessClaims{}, func(t *jwt.Token) (interface{}, error) { + if _, ok := t.Method.(*jwt.SigningMethodHMAC); !ok { + return nil, fmt.Errorf("parse error") + } + return []byte("00000000"), nil +}) +if err != nil { + // panic(err) +} + +claims, ok := token.Claims.(*generates.JWTAccessClaims) +if !ok || !token.Valid { + // panic("invalid token") +} +``` + +## Store Implements + +- [BuntDB](https://github.com/tidwall/buntdb)(default store) +- [Redis](https://github.com/go-oauth2/redis) +- [MongoDB](https://github.com/go-oauth2/mongo) +- [MySQL](https://github.com/go-oauth2/mysql) +- [MySQL (Provides both client and token store)](https://github.com/imrenagi/go-oauth2-mysql) +- [PostgreSQL](https://github.com/vgarvardt/go-oauth2-pg) +- [DynamoDB](https://github.com/contamobi/go-oauth2-dynamodb) +- [XORM](https://github.com/techknowlogick/go-oauth2-xorm) +- [XORM (MySQL, client and token store)](https://github.com/rainlay/go-oauth2-xorm) +- [GORM](https://github.com/techknowlogick/go-oauth2-gorm) +- [Firestore](https://github.com/tslamic/go-oauth2-firestore) + +## Handy Utilities + +- [OAuth2 Proxy Logger (Debug utility that proxies interfaces and logs)](https://github.com/aubelsb2/oauth2-logger-proxy) + +## MIT License + +Copyright (c) 2016 Lyric + +[build-status-url]: https://travis-ci.org/go-oauth2/oauth2 +[build-status-image]: https://travis-ci.org/go-oauth2/oauth2.svg?branch=master +[codecov-url]: https://codecov.io/gh/go-oauth2/oauth2 +[codecov-image]: https://codecov.io/gh/go-oauth2/oauth2/branch/master/graph/badge.svg +[reportcard-url]: https://goreportcard.com/report/github.com/go-oauth2/oauth2/v4 +[reportcard-image]: https://goreportcard.com/badge/github.com/go-oauth2/oauth2/v4 +[godoc-url]: https://godoc.org/github.com/go-oauth2/oauth2/v4 +[godoc-image]: https://godoc.org/github.com/go-oauth2/oauth2/v4?status.svg +[license-url]: http://opensource.org/licenses/MIT +[license-image]: https://img.shields.io/npm/l/express.svg diff --git a/aux/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/const.go b/extra/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/const.go similarity index 100% rename from aux/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/const.go rename to extra/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/const.go diff --git a/aux/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/doc.go b/extra/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/doc.go similarity index 100% rename from aux/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/doc.go rename to extra/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/doc.go diff --git a/aux/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/errors/error.go b/extra/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/errors/error.go similarity index 100% rename from aux/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/errors/error.go rename to extra/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/errors/error.go diff --git a/aux/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/errors/response.go b/extra/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/errors/response.go similarity index 100% rename from aux/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/errors/response.go rename to extra/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/errors/response.go diff --git a/aux/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/generate.go b/extra/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/generate.go similarity index 100% rename from aux/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/generate.go rename to extra/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/generate.go diff --git a/aux/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/generates/access.go b/extra/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/generates/access.go similarity index 100% rename from aux/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/generates/access.go rename to extra/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/generates/access.go diff --git a/aux/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/generates/authorize.go b/extra/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/generates/authorize.go similarity index 100% rename from aux/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/generates/authorize.go rename to extra/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/generates/authorize.go diff --git a/aux/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/generates/jwt_access.go b/extra/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/generates/jwt_access.go similarity index 98% rename from aux/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/generates/jwt_access.go rename to extra/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/generates/jwt_access.go index 0f62caf1c..0b7902047 100644 --- a/aux/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/generates/jwt_access.go +++ b/extra/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/generates/jwt_access.go @@ -6,9 +6,9 @@ import ( "strings" "time" - "github.com/dgrijalva/jwt-go" "github.com/go-oauth2/oauth2/v4" "github.com/go-oauth2/oauth2/v4/errors" + "github.com/golang-jwt/jwt" "github.com/google/uuid" ) diff --git a/aux/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/go.test.sh b/extra/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/go.test.sh similarity index 100% rename from aux/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/go.test.sh rename to extra/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/go.test.sh diff --git a/aux/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/manage.go b/extra/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/manage.go similarity index 100% rename from aux/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/manage.go rename to extra/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/manage.go diff --git a/aux/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/model.go b/extra/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/model.go similarity index 100% rename from aux/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/model.go rename to extra/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/model.go diff --git a/aux/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/models/client.go b/extra/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/models/client.go similarity index 100% rename from aux/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/models/client.go rename to extra/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/models/client.go diff --git a/aux/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/models/token.go b/extra/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/models/token.go similarity index 100% rename from aux/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/models/token.go rename to extra/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/models/token.go diff --git a/aux/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/store.go b/extra/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/store.go similarity index 100% rename from aux/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/store.go rename to extra/server-discovery/vendor/github.com/go-oauth2/oauth2/v4/store.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/.codecov.yml b/extra/server-discovery/vendor/github.com/goccy/go-json/.codecov.yml similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/.codecov.yml rename to extra/server-discovery/vendor/github.com/goccy/go-json/.codecov.yml diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/.gitignore b/extra/server-discovery/vendor/github.com/goccy/go-json/.gitignore similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/.gitignore rename to extra/server-discovery/vendor/github.com/goccy/go-json/.gitignore diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/.golangci.yml b/extra/server-discovery/vendor/github.com/goccy/go-json/.golangci.yml similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/.golangci.yml rename to extra/server-discovery/vendor/github.com/goccy/go-json/.golangci.yml diff --git a/extra/server-discovery/vendor/github.com/goccy/go-json/CHANGELOG.md b/extra/server-discovery/vendor/github.com/goccy/go-json/CHANGELOG.md new file mode 100644 index 000000000..9139b9b25 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/goccy/go-json/CHANGELOG.md @@ -0,0 +1,339 @@ +# v0.9.6 - 2022/03/22 + +### Fix bugs + +* Correct the handling of the minimum value of int type for decoder ( #344 ) +* Fix bugs of stream decoder's bufferSize ( #349 ) +* Add a guard to use typeptr more safely ( #351 ) + +### Improve decoder performance + +* Improve escapeString's performance ( #345 ) + +### Others + +* Update go version for CI ( #347 ) + +# v0.9.5 - 2022/03/04 + +### Fix bugs + +* Fix panic when decoding time.Time with context ( #328 ) +* Fix reading the next character in buffer to nul consideration ( #338 ) +* Fix incorrect handling on skipValue ( #341 ) + +### Improve decoder performance + +* Improve performance when a payload contains escape sequence ( #334 ) + +# v0.9.4 - 2022/01/21 + +* Fix IsNilForMarshaler for string type with omitempty ( #323 ) +* Fix the case where the embedded field is at the end ( #326 ) + +# v0.9.3 - 2022/01/14 + +* Fix logic of removing struct field for decoder ( #322 ) + +# v0.9.2 - 2022/01/14 + +* Add invalid decoder to delay type error judgment at decode ( #321 ) + +# v0.9.1 - 2022/01/11 + +* Fix encoding of MarshalText/MarshalJSON operation with head offset ( #319 ) + +# v0.9.0 - 2022/01/05 + +### New feature + +* Supports dynamic filtering of struct fields ( #314 ) + +### Improve encoding performance + +* Improve map encoding performance ( #310 ) +* Optimize encoding path for escaped string ( #311 ) +* Add encoding option for performance ( #312 ) + +### Fix bugs + +* Fix panic at encoding map value on 1.18 ( #310 ) +* Fix MarshalIndent for interface type ( #317 ) + +# v0.8.1 - 2021/12/05 + +* Fix operation conversion from PtrHead to Head in Recursive type ( #305 ) + +# v0.8.0 - 2021/12/02 + +* Fix embedded field conflict behavior ( #300 ) +* Refactor compiler for encoder ( #301 #302 ) + +# v0.7.10 - 2021/10/16 + +* Fix conversion from pointer to uint64 ( #294 ) + +# v0.7.9 - 2021/09/28 + +* Fix encoding of nil value about interface type that has method ( #291 ) + +# v0.7.8 - 2021/09/01 + +* Fix mapassign_faststr for indirect struct type ( #283 ) +* Fix encoding of not empty interface type ( #284 ) +* Fix encoding of empty struct interface type ( #286 ) + +# v0.7.7 - 2021/08/25 + +* Fix invalid utf8 on stream decoder ( #279 ) +* Fix buffer length bug on string stream decoder ( #280 ) + +Thank you @orisano !! + +# v0.7.6 - 2021/08/13 + +* Fix nil slice assignment ( #276 ) +* Improve error message ( #277 ) + +# v0.7.5 - 2021/08/12 + +* Fix encoding of embedded struct with tags ( #265 ) +* Fix encoding of embedded struct that isn't first field ( #272 ) +* Fix decoding of binary type with escaped char ( #273 ) + +# v0.7.4 - 2021/07/06 + +* Fix encoding of indirect layout structure ( #264 ) + +# v0.7.3 - 2021/06/29 + +* Fix encoding of pointer type in empty interface ( #262 ) + +# v0.7.2 - 2021/06/26 + +### Fix decoder + +* Add decoder for func type to fix decoding of nil function value ( #257 ) +* Fix stream decoding of []byte type ( #258 ) + +### Performance + +* Improve decoding performance of map[string]interface{} type ( use `mapassign_faststr` ) ( #256 ) +* Improve encoding performance of empty interface type ( remove recursive calling of `vm.Run` ) ( #259 ) + +### Benchmark + +* Add bytedance/sonic as benchmark target ( #254 ) + +# v0.7.1 - 2021/06/18 + +### Fix decoder + +* Fix error when unmarshal empty array ( #253 ) + +# v0.7.0 - 2021/06/12 + +### Support context for MarshalJSON and UnmarshalJSON ( #248 ) + +* json.MarshalContext(context.Context, interface{}, ...json.EncodeOption) ([]byte, error) +* json.NewEncoder(io.Writer).EncodeContext(context.Context, interface{}, ...json.EncodeOption) error +* json.UnmarshalContext(context.Context, []byte, interface{}, ...json.DecodeOption) error +* json.NewDecoder(io.Reader).DecodeContext(context.Context, interface{}) error + +```go +type MarshalerContext interface { + MarshalJSON(context.Context) ([]byte, error) +} + +type UnmarshalerContext interface { + UnmarshalJSON(context.Context, []byte) error +} +``` + +### Add DecodeFieldPriorityFirstWin option ( #242 ) + +In the default behavior, go-json, like encoding/json, will reflect the result of the last evaluation when a field with the same name exists. I've added new options to allow you to change this behavior. `json.DecodeFieldPriorityFirstWin` option reflects the result of the first evaluation if a field with the same name exists. This behavior has a performance advantage as it allows the subsequent strings to be skipped if all fields have been evaluated. + +### Fix encoder + +* Fix indent number contains recursive type ( #249 ) +* Fix encoding of using empty interface as map key ( #244 ) + +### Fix decoder + +* Fix decoding fields containing escaped characters ( #237 ) + +### Refactor + +* Move some tests to subdirectory ( #243 ) +* Refactor package layout for decoder ( #238 ) + +# v0.6.1 - 2021/06/02 + +### Fix encoder + +* Fix value of totalLength for encoding ( #236 ) + +# v0.6.0 - 2021/06/01 + +### Support Colorize option for encoding (#233) + +```go +b, err := json.MarshalWithOption(v, json.Colorize(json.DefaultColorScheme)) +if err != nil { + ... +} +fmt.Println(string(b)) // print colored json +``` + +### Refactor + +* Fix opcode layout - Adjust memory layout of the opcode to 128 bytes in a 64-bit environment ( #230 ) +* Refactor encode option ( #231 ) +* Refactor escape string ( #232 ) + +# v0.5.1 - 2021/5/20 + +### Optimization + +* Add type addrShift to enable bigger encoder/decoder cache ( #213 ) + +### Fix decoder + +* Keep original reference of slice element ( #229 ) + +### Refactor + +* Refactor Debug mode for encoding ( #226 ) +* Generate VM sources for encoding ( #227 ) +* Refactor validator for null/true/false for decoding ( #221 ) + +# v0.5.0 - 2021/5/9 + +### Supports using omitempty and string tags at the same time ( #216 ) + +### Fix decoder + +* Fix stream decoder for unicode char ( #215 ) +* Fix decoding of slice element ( #219 ) +* Fix calculating of buffer length for stream decoder ( #220 ) + +### Refactor + +* replace skipWhiteSpace goto by loop ( #212 ) + +# v0.4.14 - 2021/5/4 + +### Benchmark + +* Add valyala/fastjson to benchmark ( #193 ) +* Add benchmark task for CI ( #211 ) + +### Fix decoder + +* Fix decoding of slice with unmarshal json type ( #198 ) +* Fix decoding of null value for interface type that does not implement Unmarshaler ( #205 ) +* Fix decoding of null value to []byte by json.Unmarshal ( #206 ) +* Fix decoding of backslash char at the end of string ( #207 ) +* Fix stream decoder for null/true/false value ( #208 ) +* Fix stream decoder for slow reader ( #211 ) + +### Performance + +* If cap of slice is enough, reuse slice data for compatibility with encoding/json ( #200 ) + +# v0.4.13 - 2021/4/20 + +### Fix json.Compact and json.Indent + +* Support validation the input buffer for json.Compact and json.Indent ( #189 ) +* Optimize json.Compact and json.Indent ( improve memory footprint ) ( #190 ) + +# v0.4.12 - 2021/4/15 + +### Fix encoder + +* Fix unnecessary indent for empty slice type ( #181 ) +* Fix encoding of omitempty feature for the slice or interface type ( #183 ) +* Fix encoding custom types zero values with omitempty when marshaller exists ( #187 ) + +### Fix decoder + +* Fix decoder for invalid top level value ( #184 ) +* Fix decoder for invalid number value ( #185 ) + +# v0.4.11 - 2021/4/3 + +* Improve decoder performance for interface type + +# v0.4.10 - 2021/4/2 + +### Fix encoder + +* Fixed a bug when encoding slice and map containing recursive structures +* Fixed a logic to determine if indirect reference + +# v0.4.9 - 2021/3/29 + +### Add debug mode + +If you use `json.MarshalWithOption(v, json.Debug())` and `panic` occurred in `go-json`, produces debug information to console. + +### Support a new feature to compatible with encoding/json + +- invalid UTF-8 is coerced to valid UTF-8 ( without performance down ) + +### Fix encoder + +- Fixed handling of MarshalJSON of function type + +### Fix decoding of slice of pointer type + +If there is a pointer value, go-json will use it. (This behavior is necessary to achieve the ability to prioritize pre-filled values). However, since slices are reused internally, there was a bug that referred to the previous pointer value. Therefore, it is not necessary to refer to the pointer value in advance for the slice element, so we explicitly initialize slice element by `nil`. + +# v0.4.8 - 2021/3/21 + +### Reduce memory usage at compile time + +* go-json have used about 2GB of memory at compile time, but now it can compile with about less than 550MB. + +### Fix any encoder's bug + +* Add many test cases for encoder +* Fix composite type ( slice/array/map ) +* Fix pointer types +* Fix encoding of MarshalJSON or MarshalText or json.Number type + +### Refactor encoder + +* Change package layout for reducing memory usage at compile +* Remove anonymous and only operation +* Remove root property from encodeCompileContext and opcode + +### Fix CI + +* Add Go 1.16 +* Remove Go 1.13 +* Fix `make cover` task + +### Number/Delim/Token/RawMessage use the types defined in encoding/json by type alias + +# v0.4.7 - 2021/02/22 + +### Fix decoder + +* Fix decoding of deep recursive structure +* Fix decoding of embedded unexported pointer field +* Fix invalid test case +* Fix decoding of invalid value +* Fix decoding of prefilled value +* Fix not being able to return UnmarshalTypeError when it should be returned +* Fix decoding of null value +* Fix decoding of type of null string +* Use pre allocated pointer if exists it at decoding + +### Reduce memory usage at compile + +* Integrate int/int8/int16/int32/int64 and uint/uint8/uint16/uint32/uint64 operation to reduce memory usage at compile + +### Remove unnecessary optype diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/LICENSE b/extra/server-discovery/vendor/github.com/goccy/go-json/LICENSE similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/LICENSE rename to extra/server-discovery/vendor/github.com/goccy/go-json/LICENSE diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/Makefile b/extra/server-discovery/vendor/github.com/goccy/go-json/Makefile similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/Makefile rename to extra/server-discovery/vendor/github.com/goccy/go-json/Makefile diff --git a/extra/server-discovery/vendor/github.com/goccy/go-json/README.md b/extra/server-discovery/vendor/github.com/goccy/go-json/README.md new file mode 100644 index 000000000..568623773 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/goccy/go-json/README.md @@ -0,0 +1,529 @@ +# go-json + +![Go](https://github.com/goccy/go-json/workflows/Go/badge.svg) +[![GoDoc](https://godoc.org/github.com/goccy/go-json?status.svg)](https://pkg.go.dev/github.com/goccy/go-json?tab=doc) +[![codecov](https://codecov.io/gh/goccy/go-json/branch/master/graph/badge.svg)](https://codecov.io/gh/goccy/go-json) + +Fast JSON encoder/decoder compatible with encoding/json for Go + + + +# Roadmap + +``` +* version ( expected release date ) + +* v0.9.0 + | + | while maintaining compatibility with encoding/json, we will add convenient APIs + | + v +* v1.0.0 +``` + +We are accepting requests for features that will be implemented between v0.9.0 and v.1.0.0. +If you have the API you need, please submit your issue [here](https://github.com/goccy/go-json/issues). + +# Features + +- Drop-in replacement of `encoding/json` +- Fast ( See [Benchmark section](https://github.com/goccy/go-json#benchmarks) ) +- Flexible customization with options +- Coloring the encoded string +- Can propagate context.Context to `MarshalJSON` or `UnmarshalJSON` +- Can dynamically filter the fields of the structure type-safely + +# Installation + +``` +go get github.com/goccy/go-json +``` + +# How to use + +Replace import statement from `encoding/json` to `github.com/goccy/go-json` + +``` +-import "encoding/json" ++import "github.com/goccy/go-json" +``` + +# JSON library comparison + +| name | encoder | decoder | compatible with `encoding/json` | +| :----: | :------: | :-----: | :-----------------------------: | +| encoding/json | yes | yes | N/A | +| [json-iterator/go](https://github.com/json-iterator/go) | yes | yes | partial | +| [easyjson](https://github.com/mailru/easyjson) | yes | yes | no | +| [gojay](https://github.com/francoispqt/gojay) | yes | yes | no | +| [segmentio/encoding/json](https://github.com/segmentio/encoding/tree/master/json) | yes | yes | partial | +| [jettison](https://github.com/wI2L/jettison) | yes | no | no | +| [simdjson-go](https://github.com/minio/simdjson-go) | no | yes | no | +| goccy/go-json | yes | yes | yes | + +- `json-iterator/go` isn't compatible with `encoding/json` in many ways (e.g. https://github.com/json-iterator/go/issues/229 ), but it hasn't been supported for a long time. +- `segmentio/encoding/json` is well supported for encoders, but some are not supported for decoder APIs such as `Token` ( streaming decode ) + +## Other libraries + +- [jingo](https://github.com/bet365/jingo) + +I tried the benchmark but it didn't work. +Also, it seems to panic when it receives an unexpected value because there is no error handling... + +- [ffjson](https://github.com/pquerna/ffjson) + +Benchmarking gave very slow results. +It seems that it is assumed that the user will use the buffer pool properly. +Also, development seems to have already stopped + +# Benchmarks + +``` +$ cd benchmarks +$ go test -bench . +``` + +## Encode + + + + +## Decode + + + + + + +# Fuzzing + +[go-json-fuzz](https://github.com/goccy/go-json-fuzz) is the repository for fuzzing tests. +If you run the test in this repository and find a bug, please commit to corpus to go-json-fuzz and report the issue to [go-json](https://github.com/goccy/go-json/issues). + +# How it works + +`go-json` is very fast in both encoding and decoding compared to other libraries. +It's easier to implement by using automatic code generation for performance or by using a dedicated interface, but `go-json` dares to stick to compatibility with `encoding/json` and is the simple interface. Despite this, we are developing with the aim of being the fastest library. + +Here, we explain the various speed-up techniques implemented by `go-json`. + +## Basic technique + +The techniques listed here are the ones used by most of the libraries listed above. + +### Buffer reuse + +Since the only value required for the result of `json.Marshal(interface{}) ([]byte, error)` is `[]byte`, the only value that must be allocated during encoding is the return value `[]byte` . + +Also, as the number of allocations increases, the performance will be affected, so the number of allocations should be kept as low as possible when creating `[]byte`. + +Therefore, there is a technique to reduce the number of times a new buffer must be allocated by reusing the buffer used for the previous encoding by using `sync.Pool`. + +Finally, you allocate a buffer that is as long as the resulting buffer and copy the contents into it, you only need to allocate the buffer once in theory. + +```go +type buffer struct { + data []byte +} + +var bufPool = sync.Pool{ + New: func() interface{} { + return &buffer{data: make([]byte, 0, 1024)} + }, +} + +buf := bufPool.Get().(*buffer) +data := encode(buf.data) // reuse buf.data + +newBuf := make([]byte, len(data)) +copy(newBuf, buf) + +buf.data = data +bufPool.Put(buf) +``` + +### Elimination of reflection + +As you know, the reflection operation is very slow. + +Therefore, using the fact that the address position where the type information is stored is fixed for each binary ( we call this `typeptr` ), +we can use the address in the type information to call a pre-built optimized process. + +For example, you can get the address to the type information from `interface{}` as follows and you can use that information to call a process that does not have reflection. + +To process without reflection, pass a pointer (`unsafe.Pointer`) to the value is stored. + +```go + +type emptyInterface struct { + typ unsafe.Pointer + ptr unsafe.Pointer +} + +var typeToEncoder = map[uintptr]func(unsafe.Pointer)([]byte, error){} + +func Marshal(v interface{}) ([]byte, error) { + iface := (*emptyInterface)(unsafe.Pointer(&v) + typeptr := uintptr(iface.typ) + if enc, exists := typeToEncoder[typeptr]; exists { + return enc(iface.ptr) + } + ... +} +``` + +※ In reality, `typeToEncoder` can be referenced by multiple goroutines, so exclusive control is required. + +## Unique speed-up technique + +## Encoder + +### Do not escape arguments of `Marshal` + +`json.Marshal` and `json.Unmarshal` receive `interface{}` value and they perform type determination dynamically to process. +In normal case, you need to use the `reflect` library to determine the type dynamically, but since `reflect.Type` is defined as `interface`, when you call the method of `reflect.Type`, The reflect's argument is escaped. + +Therefore, the arguments for `Marshal` and `Unmarshal` are always escape to the heap. +However, `go-json` can use the feature of `reflect.Type` while avoiding escaping. + +`reflect.Type` is defined as `interface`, but in reality `reflect.Type` is implemented only by the structure `rtype` defined in the `reflect` package. +For this reason, to date `reflect.Type` is the same as `*reflect.rtype`. + +Therefore, by directly handling `*reflect.rtype`, which is an implementation of `reflect.Type`, it is possible to avoid escaping because it changes from `interface` to using `struct`. + +The technique for working with `*reflect.rtype` directly from `go-json` is implemented at [rtype.go](https://github.com/goccy/go-json/blob/master/internal/runtime/rtype.go) + +Also, the same technique is cut out as a library ( https://github.com/goccy/go-reflect ) + +Initially this feature was the default behavior of `go-json`. +But after careful testing, I found that I passed a large value to `json.Marshal()` and if the argument could not be assigned to the stack, it could not be properly escaped to the heap (a bug in the Go compiler). + +Therefore, this feature will be provided as an **optional** until this issue is resolved. + +To use it, add `NoEscape` like `MarshalNoEscape()` + +### Encoding using opcode sequence + +I explained that you can use `typeptr` to call a pre-built process from type information. + +In other libraries, this dedicated process is processed by making it an function calling like anonymous function, but function calls are inherently slow processes and should be avoided as much as possible. + +Therefore, `go-json` adopted the Instruction-based execution processing system, which is also used to implement virtual machines for programming language. + +If it is the first type to encode, create the opcode ( instruction ) sequence required for encoding. +From the second time onward, use `typeptr` to get the cached pre-built opcode sequence and encode it based on it. An example of the opcode sequence is shown below. + +```go +json.Marshal(struct{ + X int `json:"x"` + Y string `json:"y"` +}{X: 1, Y: "hello"}) +``` + +When encoding a structure like the one above, create a sequence of opcodes like this: + +``` +- opStructFieldHead ( `{` ) +- opStructFieldInt ( `"x": 1,` ) +- opStructFieldString ( `"y": "hello"` ) +- opStructEnd ( `}` ) +- opEnd +``` + +※ When processing each operation, write the letters on the right. + +In addition, each opcode is managed by the following structure ( +Pseudo code ). + +```go +type opType int +const ( + opStructFieldHead opType = iota + opStructFieldInt + opStructFieldStirng + opStructEnd + opEnd +) +type opcode struct { + op opType + key []byte + next *opcode +} +``` + +The process of encoding using the opcode sequence is roughly implemented as follows. + +```go +func encode(code *opcode, b []byte, p unsafe.Pointer) ([]byte, error) { + for { + switch code.op { + case opStructFieldHead: + b = append(b, '{') + code = code.next + case opStructFieldInt: + b = append(b, code.key...) + b = appendInt((*int)(unsafe.Pointer(uintptr(p)+code.offset))) + code = code.next + case opStructFieldString: + b = append(b, code.key...) + b = appendString((*string)(unsafe.Pointer(uintptr(p)+code.offset))) + code = code.next + case opStructEnd: + b = append(b, '}') + code = code.next + case opEnd: + goto END + } + } +END: + return b, nil +} +``` + +In this way, the huge `switch-case` is used to encode by manipulating the linked list opcodes to avoid unnecessary function calls. + +### Opcode sequence optimization + +One of the advantages of encoding using the opcode sequence is the ease of optimization. +The opcode sequence mentioned above is actually converted into the following optimized operations and used. + +``` +- opStructFieldHeadInt ( `{"x": 1,` ) +- opStructEndString ( `"y": "hello"}` ) +- opEnd +``` + +It has been reduced from 5 opcodes to 3 opcodes ! +Reducing the number of opcodees means reducing the number of branches with `switch-case`. +In other words, the closer the number of operations is to 1, the faster the processing can be performed. + +In `go-json`, optimization to reduce the number of opcodes itself like the above and it speeds up by preparing opcodes with optimized paths. + +### Change recursive call from CALL to JMP + +Recursive processing is required during encoding if the type is defined recursively as follows: + +```go +type T struct { + X int + U *U +} + +type U struct { + T *T +} + +b, err := json.Marshal(&T{ + X: 1, + U: &U{ + T: &T{ + X: 2, + }, + }, +}) +fmt.Println(string(b)) // {"X":1,"U":{"T":{"X":2,"U":null}}} +``` + +In `go-json`, recursive processing is processed by the operation type of ` opStructFieldRecursive`. + +In this operation, after acquiring the opcode sequence used for recursive processing, the function is **not** called recursively as it is, but the necessary values ​​are saved by itself and implemented by moving to the next operation. + +The technique of implementing recursive processing with the `JMP` operation while avoiding the `CALL` operation is a famous technique for implementing a high-speed virtual machine. + +For more details, please refer to [the article](https://engineering.mercari.com/blog/entry/1599563768-081104c850) ( but Japanese only ). + +### Dispatch by typeptr from map to slice + +When retrieving the data cached from the type information by `typeptr`, we usually use map. +Map requires exclusive control, so use `sync.Map` for a naive implementation. + +However, this is slow, so it's a good idea to use the `atomic` package for exclusive control as implemented by `segmentio/encoding/json` ( https://github.com/segmentio/encoding/blob/master/json/codec.go#L41-L55 ). + +This implementation slows down the set instead of speeding up the get, but it works well because of the nature of the library, it encodes much more for the same type. + +However, as a result of profiling, I noticed that `runtime.mapaccess2` accounts for a significant percentage of the execution time. So I thought if I could change the lookup from map to slice. + +There is an API named `typelinks` defined in the `runtime` package that the `reflect` package uses internally. +This allows you to get all the type information defined in the binary at runtime. + +The fact that all type information can be acquired means that by constructing slices in advance with the acquired total number of type information, it is possible to look up with the value of `typeptr` without worrying about out-of-range access. + +However, if there is too much type information, it will use a lot of memory, so by default we will only use this optimization if the slice size fits within **2Mib** . + +If this approach is not available, it will fall back to the `atomic` based process described above. + +If you want to know more, please refer to the implementation [here](https://github.com/goccy/go-json/blob/master/internal/runtime/type.go#L36-L100) + +## Decoder + +### Dispatch by typeptr from map to slice + +Like the encoder, the decoder also uses typeptr to call the dedicated process. + +### Faster termination character inspection using NUL character + +In order to decode, you have to traverse the input buffer character by position. +At that time, if you check whether the buffer has reached the end, it will be very slow. + +`buf` : `[]byte` type variable. holds the string passed to the decoder +`cursor` : `int64` type variable. holds the current read position + +```go +buflen := len(buf) +for ; cursor < buflen; cursor++ { // compare cursor and buflen at all times, it is so slow. + switch buf[cursor] { + case ' ', '\n', '\r', '\t': + } +} +``` + +Therefore, by adding the `NUL` (`\000`) character to the end of the read buffer as shown below, it is possible to check the termination character at the same time as other characters. + +```go +for { + switch buf[cursor] { + case ' ', '\n', '\r', '\t': + case '\000': + return nil + } + cursor++ +} +``` + +### Use Boundary Check Elimination + +Due to the `NUL` character optimization, the Go compiler does a boundary check every time, even though `buf[cursor]` does not cause out-of-range access. + +Therefore, `go-json` eliminates boundary check by fetching characters for hotspot by pointer operation. For example, the following code. + +```go +func char(ptr unsafe.Pointer, offset int64) byte { + return *(*byte)(unsafe.Pointer(uintptr(ptr) + uintptr(offset))) +} + +p := (*sliceHeader)(&unsafe.Pointer(buf)).data +for { + switch char(p, cursor) { + case ' ', '\n', '\r', '\t': + case '\000': + return nil + } + cursor++ +} +``` + +### Checking the existence of fields of struct using Bitmaps + +I found by the profiling result, in the struct decode, lookup process for field was taking a long time. + +For example, consider decoding a string like `{"a":1,"b":2,"c":3}` into the following structure: + +```go +type T struct { + A int `json:"a"` + B int `json:"b"` + C int `json:"c"` +} +``` + +At this time, it was found that it takes a lot of time to acquire the decoding process corresponding to the field from the field name as shown below during the decoding process. + +```go +fieldName := decodeKey(buf, cursor) // "a" or "b" or "c" +decoder, exists := fieldToDecoderMap[fieldName] // so slow +if exists { + decoder(buf, cursor) +} else { + skipValue(buf, cursor) +} +``` + +To improve this process, `json-iterator/go` is optimized so that it can be branched by switch-case when the number of fields in the structure is 10 or less (switch-case is faster than map). However, there is a risk of hash collision because the value hashed by the FNV algorithm is used for conditional branching. Also, `gojay` processes this part at high speed by letting the library user yourself write `switch-case`. + + +`go-json` considers and implements a new approach that is different from these. I call this **bitmap field optimization**. + +The range of values ​​per character can be represented by `[256]byte`. Also, if the number of fields in the structure is 8 or less, `int8` type can represent the state of each field. +In other words, it has the following structure. + +- Base ( 8bit ): `00000000` +- Key "a": `00000001` ( assign key "a" to the first bit ) +- Key "b": `00000010` ( assign key "b" to the second bit ) +- Key "c": `00000100` ( assign key "c" to the third bit ) + +Bitmap structure is the following + +``` + | key index(0) | +------------------------ + 0 | 00000000 | + 1 | 00000000 | +~~ | | +97 (a) | 00000001 | +98 (b) | 00000010 | +99 (c) | 00000100 | +~~ | | +255 | 00000000 | +``` + +You can think of this as a Bitmap with a height of `256` and a width of the maximum string length in the field name. +In other words, it can be represented by the following type . + +```go +[maxFieldKeyLength][256]int8 +``` + +When decoding a field character, check whether the corresponding character exists by referring to the pre-built bitmap like the following. + +```go +var curBit int8 = math.MaxInt8 // 11111111 + +c := char(buf, cursor) +bit := bitmap[keyIdx][c] +curBit &= bit +if curBit == 0 { + // not found field +} +``` + +If `curBit` is not `0` until the end of the field string, then the string is +You may have hit one of the fields. +But the possibility is that if the decoded string is shorter than the field string, you will get a false hit. + +- input: `{"a":1}` +```go +type T struct { + X int `json:"abc"` +} +``` +※ Since `a` is shorter than `abc`, it can decode to the end of the field character without `curBit` being 0. + +Rest assured. In this case, it doesn't matter because you can tell if you hit by comparing the string length of `a` with the string length of `abc`. + +Finally, calculate the position of the bit where `1` is set and get the corresponding value, and you're done. + +Using this technique, field lookups are possible with only bitwise operations and access to slices. + +`go-json` uses a similar technique for fields with 9 or more and 16 or less fields. At this time, Bitmap is constructed as `[maxKeyLen][256]int16` type. + +Currently, this optimization is not performed when the maximum length of the field name is long (specifically, 64 bytes or more) in addition to the limitation of the number of fields from the viewpoint of saving memory usage. + +### Others + +I have done a lot of other optimizations. I will find time to write about them. If you have any questions about what's written here or other optimizations, please visit the `#go-json` channel on `gophers.slack.com` . + +## Reference + +Regarding the story of go-json, there are the following articles in Japanese only. + +- https://speakerdeck.com/goccy/zui-su-falsejsonraiburariwoqiu-mete +- https://engineering.mercari.com/blog/entry/1599563768-081104c850/ + +# Looking for Sponsors + +I'm looking for sponsors this library. This library is being developed as a personal project in my spare time. If you want a quick response or problem resolution when using this library in your project, please register as a [sponsor](https://github.com/sponsors/goccy). I will cooperate as much as possible. Of course, this library is developed as an MIT license, so you can use it freely for free. + +# License + +MIT diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/color.go b/extra/server-discovery/vendor/github.com/goccy/go-json/color.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/color.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/color.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/decode.go b/extra/server-discovery/vendor/github.com/goccy/go-json/decode.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/decode.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/decode.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/docker-compose.yml b/extra/server-discovery/vendor/github.com/goccy/go-json/docker-compose.yml similarity index 91% rename from aux/server-discovery/vendor/github.com/goccy/go-json/docker-compose.yml rename to extra/server-discovery/vendor/github.com/goccy/go-json/docker-compose.yml index 48415e3d9..db40c79ad 100644 --- a/aux/server-discovery/vendor/github.com/goccy/go-json/docker-compose.yml +++ b/extra/server-discovery/vendor/github.com/goccy/go-json/docker-compose.yml @@ -1,7 +1,7 @@ version: '2' services: go-json: - image: golang:1.17 + image: golang:1.18 volumes: - '.:/go/src/go-json' deploy: diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/encode.go b/extra/server-discovery/vendor/github.com/goccy/go-json/encode.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/encode.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/encode.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/error.go b/extra/server-discovery/vendor/github.com/goccy/go-json/error.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/error.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/error.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/anonymous_field.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/anonymous_field.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/anonymous_field.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/anonymous_field.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/array.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/array.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/array.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/array.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/bool.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/bool.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/bool.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/bool.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/bytes.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/bytes.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/bytes.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/bytes.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/compile.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/compile.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/compile.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/compile.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/compile_norace.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/compile_norace.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/compile_norace.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/compile_norace.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/compile_race.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/compile_race.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/compile_race.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/compile_race.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/context.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/context.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/context.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/context.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/float.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/float.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/float.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/float.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/func.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/func.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/func.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/func.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/int.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/int.go similarity index 94% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/int.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/int.go index 7edfb0411..509b753d6 100644 --- a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/int.go +++ b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/int.go @@ -192,15 +192,15 @@ func (d *intDecoder) DecodeStream(s *Stream, depth int64, p unsafe.Pointer) erro } switch d.kind { case reflect.Int8: - if i64 <= -1*(1<<7) || (1<<7) <= i64 { + if i64 < -1*(1<<7) || (1<<7) <= i64 { return d.typeError(bytes, s.totalOffset()) } case reflect.Int16: - if i64 <= -1*(1<<15) || (1<<15) <= i64 { + if i64 < -1*(1<<15) || (1<<15) <= i64 { return d.typeError(bytes, s.totalOffset()) } case reflect.Int32: - if i64 <= -1*(1<<31) || (1<<31) <= i64 { + if i64 < -1*(1<<31) || (1<<31) <= i64 { return d.typeError(bytes, s.totalOffset()) } } @@ -225,15 +225,15 @@ func (d *intDecoder) Decode(ctx *RuntimeContext, cursor, depth int64, p unsafe.P } switch d.kind { case reflect.Int8: - if i64 <= -1*(1<<7) || (1<<7) <= i64 { + if i64 < -1*(1<<7) || (1<<7) <= i64 { return 0, d.typeError(bytes, cursor) } case reflect.Int16: - if i64 <= -1*(1<<15) || (1<<15) <= i64 { + if i64 < -1*(1<<15) || (1<<15) <= i64 { return 0, d.typeError(bytes, cursor) } case reflect.Int32: - if i64 <= -1*(1<<31) || (1<<31) <= i64 { + if i64 < -1*(1<<31) || (1<<31) <= i64 { return 0, d.typeError(bytes, cursor) } } diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/interface.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/interface.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/interface.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/interface.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/invalid.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/invalid.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/invalid.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/invalid.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/map.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/map.go similarity index 99% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/map.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/map.go index bb18ef995..cb55ef006 100644 --- a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/map.go +++ b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/map.go @@ -87,13 +87,13 @@ func (d *mapDecoder) DecodeStream(s *Stream, depth int64, p unsafe.Pointer) erro if mapValue == nil { mapValue = makemap(d.mapType, 0) } - if s.buf[s.cursor+1] == '}' { + s.cursor++ + if s.equalChar('}') { *(*unsafe.Pointer)(p) = mapValue - s.cursor += 2 + s.cursor++ return nil } for { - s.cursor++ k := unsafe_New(d.keyType) if err := d.keyDecoder.DecodeStream(s, depth, k); err != nil { return err @@ -117,6 +117,7 @@ func (d *mapDecoder) DecodeStream(s *Stream, depth int64, p unsafe.Pointer) erro if !s.equalChar(',') { return errors.ErrExpected("comma after object value", s.totalOffset()) } + s.cursor++ } } diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/number.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/number.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/number.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/number.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/option.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/option.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/option.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/option.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/ptr.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/ptr.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/ptr.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/ptr.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/slice.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/slice.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/slice.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/slice.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/stream.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/stream.go similarity index 99% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/stream.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/stream.go index c27468348..332d47d89 100644 --- a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/stream.go +++ b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/stream.go @@ -103,7 +103,7 @@ func (s *Stream) statForRetry() ([]byte, int64, unsafe.Pointer) { func (s *Stream) Reset() { s.reset() - s.bufSize = initBufSize + s.bufSize = int64(len(s.buf)) } func (s *Stream) More() bool { @@ -423,7 +423,6 @@ func (s *Stream) skipValue(depth int64) error { continue } else if c == nul { if s.read() { - s.cursor-- // for retry current character _, cursor, p = s.stat() continue } diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/string.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/string.go similarity index 85% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/string.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/string.go index 65b100488..a55ac5565 100644 --- a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/string.go +++ b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/string.go @@ -1,6 +1,7 @@ package decoder import ( + "bytes" "reflect" "unicode" "unicode/utf16" @@ -308,49 +309,30 @@ func (d *stringDecoder) decodeByte(buf []byte, cursor int64) ([]byte, int64, err cursor++ start := cursor b := (*sliceHeader)(unsafe.Pointer(&buf)).data + escaped := 0 for { switch char(b, cursor) { case '\\': + escaped++ cursor++ switch char(b, cursor) { - case '"': - buf[cursor] = '"' - buf = append(buf[:cursor-1], buf[cursor:]...) - case '\\': - buf[cursor] = '\\' - buf = append(buf[:cursor-1], buf[cursor:]...) - case '/': - buf[cursor] = '/' - buf = append(buf[:cursor-1], buf[cursor:]...) - case 'b': - buf[cursor] = '\b' - buf = append(buf[:cursor-1], buf[cursor:]...) - case 'f': - buf[cursor] = '\f' - buf = append(buf[:cursor-1], buf[cursor:]...) - case 'n': - buf[cursor] = '\n' - buf = append(buf[:cursor-1], buf[cursor:]...) - case 'r': - buf[cursor] = '\r' - buf = append(buf[:cursor-1], buf[cursor:]...) - case 't': - buf[cursor] = '\t' - buf = append(buf[:cursor-1], buf[cursor:]...) + case '"', '\\', '/', 'b', 'f', 'n', 'r', 't': + cursor++ case 'u': buflen := int64(len(buf)) if cursor+5 >= buflen { return nil, 0, errors.ErrUnexpectedEndOfJSON("escaped string", cursor) } - code := unicodeToRune(buf[cursor+1 : cursor+5]) - unicode := []byte(string(code)) - buf = append(append(buf[:cursor-1], unicode...), buf[cursor+5:]...) + cursor += 5 default: return nil, 0, errors.ErrUnexpectedEndOfJSON("escaped string", cursor) } continue case '"': literal := buf[start:cursor] + if escaped > 0 { + literal = literal[:unescapeString(literal)] + } cursor++ return literal, cursor, nil case nul: @@ -369,3 +351,64 @@ func (d *stringDecoder) decodeByte(buf []byte, cursor int64) ([]byte, int64, err } } } + +var unescapeMap = [256]byte{ + '"': '"', + '\\': '\\', + '/': '/', + 'b': '\b', + 'f': '\f', + 'n': '\n', + 'r': '\r', + 't': '\t', +} + +func unsafeAdd(ptr unsafe.Pointer, offset int) unsafe.Pointer { + return unsafe.Pointer(uintptr(ptr) + uintptr(offset)) +} + +func unescapeString(buf []byte) int { + p := (*sliceHeader)(unsafe.Pointer(&buf)).data + end := unsafeAdd(p, len(buf)) + src := unsafeAdd(p, bytes.IndexByte(buf, '\\')) + dst := src + for src != end { + c := char(src, 0) + if c == '\\' { + escapeChar := char(src, 1) + if escapeChar != 'u' { + *(*byte)(dst) = unescapeMap[escapeChar] + src = unsafeAdd(src, 2) + dst = unsafeAdd(dst, 1) + } else { + v1 := hexToInt[char(src, 2)] + v2 := hexToInt[char(src, 3)] + v3 := hexToInt[char(src, 4)] + v4 := hexToInt[char(src, 5)] + code := rune((v1 << 12) | (v2 << 8) | (v3 << 4) | v4) + var b [utf8.UTFMax]byte + n := utf8.EncodeRune(b[:], code) + switch n { + case 4: + *(*byte)(unsafeAdd(dst, 3)) = b[3] + fallthrough + case 3: + *(*byte)(unsafeAdd(dst, 2)) = b[2] + fallthrough + case 2: + *(*byte)(unsafeAdd(dst, 1)) = b[1] + fallthrough + case 1: + *(*byte)(unsafeAdd(dst, 0)) = b[0] + } + src = unsafeAdd(src, 6) + dst = unsafeAdd(dst, n) + } + } else { + *(*byte)(dst) = c + src = unsafeAdd(src, 1) + dst = unsafeAdd(dst, 1) + } + } + return int(uintptr(dst) - uintptr(p)) +} diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/struct.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/struct.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/struct.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/struct.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/type.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/type.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/type.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/type.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/uint.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/uint.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/uint.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/uint.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/unmarshal_json.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/unmarshal_json.go similarity index 85% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/unmarshal_json.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/unmarshal_json.go index d90f39cc5..e9b25c68f 100644 --- a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/unmarshal_json.go +++ b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/unmarshal_json.go @@ -1,6 +1,7 @@ package decoder import ( + "context" "encoding/json" "unsafe" @@ -46,13 +47,20 @@ func (d *unmarshalJSONDecoder) DecodeStream(s *Stream, depth int64, p unsafe.Poi typ: d.typ, ptr: p, })) - if (s.Option.Flags & ContextOption) != 0 { - if err := v.(unmarshalerContext).UnmarshalJSON(s.Option.Context, dst); err != nil { + switch v := v.(type) { + case unmarshalerContext: + var ctx context.Context + if (s.Option.Flags & ContextOption) != 0 { + ctx = s.Option.Context + } else { + ctx = context.Background() + } + if err := v.UnmarshalJSON(ctx, dst); err != nil { d.annotateError(s.cursor, err) return err } - } else { - if err := v.(json.Unmarshaler).UnmarshalJSON(dst); err != nil { + case json.Unmarshaler: + if err := v.UnmarshalJSON(dst); err != nil { d.annotateError(s.cursor, err) return err } diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/unmarshal_text.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/unmarshal_text.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/unmarshal_text.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/unmarshal_text.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/wrapped_string.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/wrapped_string.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/wrapped_string.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/decoder/wrapped_string.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/code.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/code.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/code.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/code.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/compact.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/compact.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/compact.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/compact.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/compiler.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/compiler.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/compiler.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/compiler.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/compiler_norace.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/compiler_norace.go similarity index 90% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/compiler_norace.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/compiler_norace.go index 2576419ae..706c3dbc7 100644 --- a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/compiler_norace.go +++ b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/compiler_norace.go @@ -4,7 +4,7 @@ package encoder func CompileToGetCodeSet(ctx *RuntimeContext, typeptr uintptr) (*OpcodeSet, error) { - if typeptr > typeAddr.MaxTypeAddr { + if typeptr > typeAddr.MaxTypeAddr || typeptr < typeAddr.BaseTypeAddr { return compileToGetCodeSetSlowPath(typeptr) } index := (typeptr - typeAddr.BaseTypeAddr) >> typeAddr.AddrShift diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/compiler_race.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/compiler_race.go similarity index 91% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/compiler_race.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/compiler_race.go index c74451116..2589ef1a5 100644 --- a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/compiler_race.go +++ b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/compiler_race.go @@ -10,7 +10,7 @@ import ( var setsMu sync.RWMutex func CompileToGetCodeSet(ctx *RuntimeContext, typeptr uintptr) (*OpcodeSet, error) { - if typeptr > typeAddr.MaxTypeAddr { + if typeptr > typeAddr.MaxTypeAddr || typeptr < typeAddr.BaseTypeAddr { return compileToGetCodeSetSlowPath(typeptr) } index := (typeptr - typeAddr.BaseTypeAddr) >> typeAddr.AddrShift diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/context.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/context.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/context.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/context.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/decode_rune.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/decode_rune.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/decode_rune.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/decode_rune.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/encoder.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/encoder.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/encoder.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/encoder.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/indent.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/indent.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/indent.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/indent.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/int.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/int.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/int.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/int.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/map112.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/map112.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/map112.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/map112.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/map113.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/map113.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/map113.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/map113.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/opcode.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/opcode.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/opcode.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/opcode.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/option.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/option.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/option.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/option.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/optype.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/optype.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/optype.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/optype.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/query.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/query.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/query.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/query.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/string.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/string.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/string.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/string.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/string_table.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/string_table.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/string_table.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/string_table.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm/debug_vm.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm/debug_vm.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm/debug_vm.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm/debug_vm.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm/hack.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm/hack.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm/hack.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm/hack.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm/util.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm/util.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm/util.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm/util.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm/vm.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm/vm.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm/vm.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm/vm.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_color/debug_vm.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_color/debug_vm.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_color/debug_vm.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_color/debug_vm.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_color/hack.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_color/hack.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_color/hack.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_color/hack.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_color/util.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_color/util.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_color/util.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_color/util.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_color/vm.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_color/vm.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_color/vm.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_color/vm.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_color_indent/debug_vm.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_color_indent/debug_vm.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_color_indent/debug_vm.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_color_indent/debug_vm.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_color_indent/util.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_color_indent/util.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_color_indent/util.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_color_indent/util.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_color_indent/vm.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_color_indent/vm.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_color_indent/vm.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_color_indent/vm.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_indent/debug_vm.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_indent/debug_vm.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_indent/debug_vm.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_indent/debug_vm.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_indent/hack.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_indent/hack.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_indent/hack.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_indent/hack.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_indent/util.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_indent/util.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_indent/util.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_indent/util.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_indent/vm.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_indent/vm.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_indent/vm.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/encoder/vm_indent/vm.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/errors/error.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/errors/error.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/errors/error.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/errors/error.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/runtime/rtype.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/runtime/rtype.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/runtime/rtype.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/runtime/rtype.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/runtime/struct_field.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/runtime/struct_field.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/runtime/struct_field.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/runtime/struct_field.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/internal/runtime/type.go b/extra/server-discovery/vendor/github.com/goccy/go-json/internal/runtime/type.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/internal/runtime/type.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/internal/runtime/type.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/json.go b/extra/server-discovery/vendor/github.com/goccy/go-json/json.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/json.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/json.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/option.go b/extra/server-discovery/vendor/github.com/goccy/go-json/option.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/option.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/option.go diff --git a/aux/server-discovery/vendor/github.com/goccy/go-json/query.go b/extra/server-discovery/vendor/github.com/goccy/go-json/query.go similarity index 100% rename from aux/server-discovery/vendor/github.com/goccy/go-json/query.go rename to extra/server-discovery/vendor/github.com/goccy/go-json/query.go diff --git a/aux/server-discovery/vendor/github.com/dgrijalva/jwt-go/.gitignore b/extra/server-discovery/vendor/github.com/golang-jwt/jwt/.gitignore similarity index 68% rename from aux/server-discovery/vendor/github.com/dgrijalva/jwt-go/.gitignore rename to extra/server-discovery/vendor/github.com/golang-jwt/jwt/.gitignore index 80bed650e..09573e016 100644 --- a/aux/server-discovery/vendor/github.com/dgrijalva/jwt-go/.gitignore +++ b/extra/server-discovery/vendor/github.com/golang-jwt/jwt/.gitignore @@ -1,4 +1,4 @@ .DS_Store bin - +.idea/ diff --git a/aux/server-discovery/vendor/github.com/dgrijalva/jwt-go/LICENSE b/extra/server-discovery/vendor/github.com/golang-jwt/jwt/LICENSE similarity index 96% rename from aux/server-discovery/vendor/github.com/dgrijalva/jwt-go/LICENSE rename to extra/server-discovery/vendor/github.com/golang-jwt/jwt/LICENSE index df83a9c2f..35dbc2520 100644 --- a/aux/server-discovery/vendor/github.com/dgrijalva/jwt-go/LICENSE +++ b/extra/server-discovery/vendor/github.com/golang-jwt/jwt/LICENSE @@ -1,4 +1,5 @@ Copyright (c) 2012 Dave Grijalva +Copyright (c) 2021 golang-jwt maintainers Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: diff --git a/extra/server-discovery/vendor/github.com/golang-jwt/jwt/MIGRATION_GUIDE.md b/extra/server-discovery/vendor/github.com/golang-jwt/jwt/MIGRATION_GUIDE.md new file mode 100644 index 000000000..c4efbd2a8 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/golang-jwt/jwt/MIGRATION_GUIDE.md @@ -0,0 +1,22 @@ +## Migration Guide (v3.2.1) + +Starting from [v3.2.1](https://github.com/golang-jwt/jwt/releases/tag/v3.2.1]), the import path has changed from `github.com/dgrijalva/jwt-go` to `github.com/golang-jwt/jwt`. Future releases will be using the `github.com/golang-jwt/jwt` import path and continue the existing versioning scheme of `v3.x.x+incompatible`. Backwards-compatible patches and fixes will be done on the `v3` release branch, where as new build-breaking features will be developed in a `v4` release, possibly including a SIV-style import path. + +### go.mod replacement + +In a first step, the easiest way is to use `go mod edit` to issue a replacement. + +``` +go mod edit -replace github.com/dgrijalva/jwt-go=github.com/golang-jwt/jwt@v3.2.1+incompatible +go mod tidy +``` + +This will still keep the old import path in your code but replace it with the new package and also introduce a new indirect dependency to `github.com/golang-jwt/jwt`. Try to compile your project; it should still work. + +### Cleanup + +If your code still consistently builds, you can replace all occurences of `github.com/dgrijalva/jwt-go` with `github.com/golang-jwt/jwt`, either manually or by using tools such as `sed`. Finally, the `replace` directive in the `go.mod` file can be removed. + +## Older releases (before v3.2.0) + +The original migration guide for older releases can be found at https://github.com/dgrijalva/jwt-go/blob/master/MIGRATION_GUIDE.md. \ No newline at end of file diff --git a/extra/server-discovery/vendor/github.com/golang-jwt/jwt/README.md b/extra/server-discovery/vendor/github.com/golang-jwt/jwt/README.md new file mode 100644 index 000000000..9b653e46b --- /dev/null +++ b/extra/server-discovery/vendor/github.com/golang-jwt/jwt/README.md @@ -0,0 +1,113 @@ +# jwt-go + +[![build](https://github.com/golang-jwt/jwt/actions/workflows/build.yml/badge.svg)](https://github.com/golang-jwt/jwt/actions/workflows/build.yml) +[![Go Reference](https://pkg.go.dev/badge/github.com/golang-jwt/jwt.svg)](https://pkg.go.dev/github.com/golang-jwt/jwt) + +A [go](http://www.golang.org) (or 'golang' for search engine friendliness) implementation of [JSON Web Tokens](https://datatracker.ietf.org/doc/html/rfc7519). + +**IMPORT PATH CHANGE:** Starting from [v3.2.1](https://github.com/golang-jwt/jwt/releases/tag/v3.2.1), the import path has changed from `github.com/dgrijalva/jwt-go` to `github.com/golang-jwt/jwt`. After the original author of the library suggested migrating the maintenance of `jwt-go`, a dedicated team of open source maintainers decided to clone the existing library into this repository. See [dgrijalva/jwt-go#462](https://github.com/dgrijalva/jwt-go/issues/462) for a detailed discussion on this topic. + +Future releases will be using the `github.com/golang-jwt/jwt` import path and continue the existing versioning scheme of `v3.x.x+incompatible`. Backwards-compatible patches and fixes will be done on the `v3` release branch, where as new build-breaking features will be developed in a `v4` release, possibly including a SIV-style import path. + +**SECURITY NOTICE:** Some older versions of Go have a security issue in the crypto/elliptic. Recommendation is to upgrade to at least 1.15 See issue [dgrijalva/jwt-go#216](https://github.com/dgrijalva/jwt-go/issues/216) for more detail. + +**SECURITY NOTICE:** It's important that you [validate the `alg` presented is what you expect](https://auth0.com/blog/critical-vulnerabilities-in-json-web-token-libraries/). This library attempts to make it easy to do the right thing by requiring key types match the expected alg, but you should take the extra step to verify it in your usage. See the examples provided. + +### Supported Go versions + +Our support of Go versions is aligned with Go's [version release policy](https://golang.org/doc/devel/release#policy). +So we will support a major version of Go until there are two newer major releases. +We no longer support building jwt-go with unsupported Go versions, as these contain security vulnerabilities +which will not be fixed. + +## What the heck is a JWT? + +JWT.io has [a great introduction](https://jwt.io/introduction) to JSON Web Tokens. + +In short, it's a signed JSON object that does something useful (for example, authentication). It's commonly used for `Bearer` tokens in Oauth 2. A token is made of three parts, separated by `.`'s. The first two parts are JSON objects, that have been [base64url](https://datatracker.ietf.org/doc/html/rfc4648) encoded. The last part is the signature, encoded the same way. + +The first part is called the header. It contains the necessary information for verifying the last part, the signature. For example, which encryption method was used for signing and what key was used. + +The part in the middle is the interesting bit. It's called the Claims and contains the actual stuff you care about. Refer to [RFC 7519](https://datatracker.ietf.org/doc/html/rfc7519) for information about reserved keys and the proper way to add your own. + +## What's in the box? + +This library supports the parsing and verification as well as the generation and signing of JWTs. Current supported signing algorithms are HMAC SHA, RSA, RSA-PSS, and ECDSA, though hooks are present for adding your own. + +## Examples + +See [the project documentation](https://pkg.go.dev/github.com/golang-jwt/jwt) for examples of usage: + +* [Simple example of parsing and validating a token](https://pkg.go.dev/github.com/golang-jwt/jwt#example-Parse-Hmac) +* [Simple example of building and signing a token](https://pkg.go.dev/github.com/golang-jwt/jwt#example-New-Hmac) +* [Directory of Examples](https://pkg.go.dev/github.com/golang-jwt/jwt#pkg-examples) + +## Extensions + +This library publishes all the necessary components for adding your own signing methods. Simply implement the `SigningMethod` interface and register a factory method using `RegisterSigningMethod`. + +Here's an example of an extension that integrates with multiple Google Cloud Platform signing tools (AppEngine, IAM API, Cloud KMS): https://github.com/someone1/gcp-jwt-go + +## Compliance + +This library was last reviewed to comply with [RTF 7519](https://datatracker.ietf.org/doc/html/rfc7519) dated May 2015 with a few notable differences: + +* In order to protect against accidental use of [Unsecured JWTs](https://datatracker.ietf.org/doc/html/rfc7519#section-6), tokens using `alg=none` will only be accepted if the constant `jwt.UnsafeAllowNoneSignatureType` is provided as the key. + +## Project Status & Versioning + +This library is considered production ready. Feedback and feature requests are appreciated. The API should be considered stable. There should be very few backwards-incompatible changes outside of major version updates (and only with good reason). + +This project uses [Semantic Versioning 2.0.0](http://semver.org). Accepted pull requests will land on `main`. Periodically, versions will be tagged from `main`. You can find all the releases on [the project releases page](https://github.com/golang-jwt/jwt/releases). + +While we try to make it obvious when we make breaking changes, there isn't a great mechanism for pushing announcements out to users. You may want to use this alternative package include: `gopkg.in/golang-jwt/jwt.v3`. It will do the right thing WRT semantic versioning. + +**BREAKING CHANGES:*** +* Version 3.0.0 includes _a lot_ of changes from the 2.x line, including a few that break the API. We've tried to break as few things as possible, so there should just be a few type signature changes. A full list of breaking changes is available in `VERSION_HISTORY.md`. See `MIGRATION_GUIDE.md` for more information on updating your code. + +## Usage Tips + +### Signing vs Encryption + +A token is simply a JSON object that is signed by its author. this tells you exactly two things about the data: + +* The author of the token was in the possession of the signing secret +* The data has not been modified since it was signed + +It's important to know that JWT does not provide encryption, which means anyone who has access to the token can read its contents. If you need to protect (encrypt) the data, there is a companion spec, `JWE`, that provides this functionality. JWE is currently outside the scope of this library. + +### Choosing a Signing Method + +There are several signing methods available, and you should probably take the time to learn about the various options before choosing one. The principal design decision is most likely going to be symmetric vs asymmetric. + +Symmetric signing methods, such as HSA, use only a single secret. This is probably the simplest signing method to use since any `[]byte` can be used as a valid secret. They are also slightly computationally faster to use, though this rarely is enough to matter. Symmetric signing methods work the best when both producers and consumers of tokens are trusted, or even the same system. Since the same secret is used to both sign and validate tokens, you can't easily distribute the key for validation. + +Asymmetric signing methods, such as RSA, use different keys for signing and verifying tokens. This makes it possible to produce tokens with a private key, and allow any consumer to access the public key for verification. + +### Signing Methods and Key Types + +Each signing method expects a different object type for its signing keys. See the package documentation for details. Here are the most common ones: + +* The [HMAC signing method](https://pkg.go.dev/github.com/golang-jwt/jwt#SigningMethodHMAC) (`HS256`,`HS384`,`HS512`) expect `[]byte` values for signing and validation +* The [RSA signing method](https://pkg.go.dev/github.com/golang-jwt/jwt#SigningMethodRSA) (`RS256`,`RS384`,`RS512`) expect `*rsa.PrivateKey` for signing and `*rsa.PublicKey` for validation +* The [ECDSA signing method](https://pkg.go.dev/github.com/golang-jwt/jwt#SigningMethodECDSA) (`ES256`,`ES384`,`ES512`) expect `*ecdsa.PrivateKey` for signing and `*ecdsa.PublicKey` for validation + +### JWT and OAuth + +It's worth mentioning that OAuth and JWT are not the same thing. A JWT token is simply a signed JSON object. It can be used anywhere such a thing is useful. There is some confusion, though, as JWT is the most common type of bearer token used in OAuth2 authentication. + +Without going too far down the rabbit hole, here's a description of the interaction of these technologies: + +* OAuth is a protocol for allowing an identity provider to be separate from the service a user is logging in to. For example, whenever you use Facebook to log into a different service (Yelp, Spotify, etc), you are using OAuth. +* OAuth defines several options for passing around authentication data. One popular method is called a "bearer token". A bearer token is simply a string that _should_ only be held by an authenticated user. Thus, simply presenting this token proves your identity. You can probably derive from here why a JWT might make a good bearer token. +* Because bearer tokens are used for authentication, it's important they're kept secret. This is why transactions that use bearer tokens typically happen over SSL. + +### Troubleshooting + +This library uses descriptive error messages whenever possible. If you are not getting the expected result, have a look at the errors. The most common place people get stuck is providing the correct type of key to the parser. See the above section on signing methods and key types. + +## More + +Documentation can be found [on pkg.go.dev](https://pkg.go.dev/github.com/golang-jwt/jwt). + +The command line utility included in this project (cmd/jwt) provides a straightforward example of token creation and parsing as well as a useful tool for debugging your own integration. You'll also find several implementation examples in the documentation. diff --git a/extra/server-discovery/vendor/github.com/golang-jwt/jwt/VERSION_HISTORY.md b/extra/server-discovery/vendor/github.com/golang-jwt/jwt/VERSION_HISTORY.md new file mode 100644 index 000000000..637f2ba61 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/golang-jwt/jwt/VERSION_HISTORY.md @@ -0,0 +1,131 @@ +## `jwt-go` Version History + +#### 3.2.2 + +* Starting from this release, we are adopting the policy to support the most 2 recent versions of Go currently available. By the time of this release, this is Go 1.15 and 1.16 ([#28](https://github.com/golang-jwt/jwt/pull/28)). +* Fixed a potential issue that could occur when the verification of `exp`, `iat` or `nbf` was not required and contained invalid contents, i.e. non-numeric/date. Thanks for @thaJeztah for making us aware of that and @giorgos-f3 for originally reporting it to the formtech fork ([#40](https://github.com/golang-jwt/jwt/pull/40)). +* Added support for EdDSA / ED25519 ([#36](https://github.com/golang-jwt/jwt/pull/36)). +* Optimized allocations ([#33](https://github.com/golang-jwt/jwt/pull/33)). + +#### 3.2.1 + +* **Import Path Change**: See MIGRATION_GUIDE.md for tips on updating your code + * Changed the import path from `github.com/dgrijalva/jwt-go` to `github.com/golang-jwt/jwt` +* Fixed type confusing issue between `string` and `[]string` in `VerifyAudience` ([#12](https://github.com/golang-jwt/jwt/pull/12)). This fixes CVE-2020-26160 + +#### 3.2.0 + +* Added method `ParseUnverified` to allow users to split up the tasks of parsing and validation +* HMAC signing method returns `ErrInvalidKeyType` instead of `ErrInvalidKey` where appropriate +* Added options to `request.ParseFromRequest`, which allows for an arbitrary list of modifiers to parsing behavior. Initial set include `WithClaims` and `WithParser`. Existing usage of this function will continue to work as before. +* Deprecated `ParseFromRequestWithClaims` to simplify API in the future. + +#### 3.1.0 + +* Improvements to `jwt` command line tool +* Added `SkipClaimsValidation` option to `Parser` +* Documentation updates + +#### 3.0.0 + +* **Compatibility Breaking Changes**: See MIGRATION_GUIDE.md for tips on updating your code + * Dropped support for `[]byte` keys when using RSA signing methods. This convenience feature could contribute to security vulnerabilities involving mismatched key types with signing methods. + * `ParseFromRequest` has been moved to `request` subpackage and usage has changed + * The `Claims` property on `Token` is now type `Claims` instead of `map[string]interface{}`. The default value is type `MapClaims`, which is an alias to `map[string]interface{}`. This makes it possible to use a custom type when decoding claims. +* Other Additions and Changes + * Added `Claims` interface type to allow users to decode the claims into a custom type + * Added `ParseWithClaims`, which takes a third argument of type `Claims`. Use this function instead of `Parse` if you have a custom type you'd like to decode into. + * Dramatically improved the functionality and flexibility of `ParseFromRequest`, which is now in the `request` subpackage + * Added `ParseFromRequestWithClaims` which is the `FromRequest` equivalent of `ParseWithClaims` + * Added new interface type `Extractor`, which is used for extracting JWT strings from http requests. Used with `ParseFromRequest` and `ParseFromRequestWithClaims`. + * Added several new, more specific, validation errors to error type bitmask + * Moved examples from README to executable example files + * Signing method registry is now thread safe + * Added new property to `ValidationError`, which contains the raw error returned by calls made by parse/verify (such as those returned by keyfunc or json parser) + +#### 2.7.0 + +This will likely be the last backwards compatible release before 3.0.0, excluding essential bug fixes. + +* Added new option `-show` to the `jwt` command that will just output the decoded token without verifying +* Error text for expired tokens includes how long it's been expired +* Fixed incorrect error returned from `ParseRSAPublicKeyFromPEM` +* Documentation updates + +#### 2.6.0 + +* Exposed inner error within ValidationError +* Fixed validation errors when using UseJSONNumber flag +* Added several unit tests + +#### 2.5.0 + +* Added support for signing method none. You shouldn't use this. The API tries to make this clear. +* Updated/fixed some documentation +* Added more helpful error message when trying to parse tokens that begin with `BEARER ` + +#### 2.4.0 + +* Added new type, Parser, to allow for configuration of various parsing parameters + * You can now specify a list of valid signing methods. Anything outside this set will be rejected. + * You can now opt to use the `json.Number` type instead of `float64` when parsing token JSON +* Added support for [Travis CI](https://travis-ci.org/dgrijalva/jwt-go) +* Fixed some bugs with ECDSA parsing + +#### 2.3.0 + +* Added support for ECDSA signing methods +* Added support for RSA PSS signing methods (requires go v1.4) + +#### 2.2.0 + +* Gracefully handle a `nil` `Keyfunc` being passed to `Parse`. Result will now be the parsed token and an error, instead of a panic. + +#### 2.1.0 + +Backwards compatible API change that was missed in 2.0.0. + +* The `SignedString` method on `Token` now takes `interface{}` instead of `[]byte` + +#### 2.0.0 + +There were two major reasons for breaking backwards compatibility with this update. The first was a refactor required to expand the width of the RSA and HMAC-SHA signing implementations. There will likely be no required code changes to support this change. + +The second update, while unfortunately requiring a small change in integration, is required to open up this library to other signing methods. Not all keys used for all signing methods have a single standard on-disk representation. Requiring `[]byte` as the type for all keys proved too limiting. Additionally, this implementation allows for pre-parsed tokens to be reused, which might matter in an application that parses a high volume of tokens with a small set of keys. Backwards compatibilty has been maintained for passing `[]byte` to the RSA signing methods, but they will also accept `*rsa.PublicKey` and `*rsa.PrivateKey`. + +It is likely the only integration change required here will be to change `func(t *jwt.Token) ([]byte, error)` to `func(t *jwt.Token) (interface{}, error)` when calling `Parse`. + +* **Compatibility Breaking Changes** + * `SigningMethodHS256` is now `*SigningMethodHMAC` instead of `type struct` + * `SigningMethodRS256` is now `*SigningMethodRSA` instead of `type struct` + * `KeyFunc` now returns `interface{}` instead of `[]byte` + * `SigningMethod.Sign` now takes `interface{}` instead of `[]byte` for the key + * `SigningMethod.Verify` now takes `interface{}` instead of `[]byte` for the key +* Renamed type `SigningMethodHS256` to `SigningMethodHMAC`. Specific sizes are now just instances of this type. + * Added public package global `SigningMethodHS256` + * Added public package global `SigningMethodHS384` + * Added public package global `SigningMethodHS512` +* Renamed type `SigningMethodRS256` to `SigningMethodRSA`. Specific sizes are now just instances of this type. + * Added public package global `SigningMethodRS256` + * Added public package global `SigningMethodRS384` + * Added public package global `SigningMethodRS512` +* Moved sample private key for HMAC tests from an inline value to a file on disk. Value is unchanged. +* Refactored the RSA implementation to be easier to read +* Exposed helper methods `ParseRSAPrivateKeyFromPEM` and `ParseRSAPublicKeyFromPEM` + +#### 1.0.2 + +* Fixed bug in parsing public keys from certificates +* Added more tests around the parsing of keys for RS256 +* Code refactoring in RS256 implementation. No functional changes + +#### 1.0.1 + +* Fixed panic if RS256 signing method was passed an invalid key + +#### 1.0.0 + +* First versioned release +* API stabilized +* Supports creating, signing, parsing, and validating JWT tokens +* Supports RS256 and HS256 signing methods diff --git a/aux/server-discovery/vendor/github.com/dgrijalva/jwt-go/claims.go b/extra/server-discovery/vendor/github.com/golang-jwt/jwt/claims.go similarity index 83% rename from aux/server-discovery/vendor/github.com/dgrijalva/jwt-go/claims.go rename to extra/server-discovery/vendor/github.com/golang-jwt/jwt/claims.go index f0228f02e..f1dba3cb9 100644 --- a/aux/server-discovery/vendor/github.com/dgrijalva/jwt-go/claims.go +++ b/extra/server-discovery/vendor/github.com/golang-jwt/jwt/claims.go @@ -35,18 +35,18 @@ func (c StandardClaims) Valid() error { // The claims below are optional, by default, so if they are set to the // default value in Go, let's not fail the verification for them. - if c.VerifyExpiresAt(now, false) == false { + if !c.VerifyExpiresAt(now, false) { delta := time.Unix(now, 0).Sub(time.Unix(c.ExpiresAt, 0)) vErr.Inner = fmt.Errorf("token is expired by %v", delta) vErr.Errors |= ValidationErrorExpired } - if c.VerifyIssuedAt(now, false) == false { + if !c.VerifyIssuedAt(now, false) { vErr.Inner = fmt.Errorf("Token used before issued") vErr.Errors |= ValidationErrorIssuedAt } - if c.VerifyNotBefore(now, false) == false { + if !c.VerifyNotBefore(now, false) { vErr.Inner = fmt.Errorf("token is not valid yet") vErr.Errors |= ValidationErrorNotValidYet } @@ -61,7 +61,7 @@ func (c StandardClaims) Valid() error { // Compares the aud claim against cmp. // If required is false, this method will return true if the value matches or is unset func (c *StandardClaims) VerifyAudience(cmp string, req bool) bool { - return verifyAud(c.Audience, cmp, req) + return verifyAud([]string{c.Audience}, cmp, req) } // Compares the exp claim against cmp. @@ -90,15 +90,27 @@ func (c *StandardClaims) VerifyNotBefore(cmp int64, req bool) bool { // ----- helpers -func verifyAud(aud string, cmp string, required bool) bool { - if aud == "" { +func verifyAud(aud []string, cmp string, required bool) bool { + if len(aud) == 0 { return !required } - if subtle.ConstantTimeCompare([]byte(aud), []byte(cmp)) != 0 { - return true - } else { - return false + // use a var here to keep constant time compare when looping over a number of claims + result := false + + var stringClaims string + for _, a := range aud { + if subtle.ConstantTimeCompare([]byte(a), []byte(cmp)) != 0 { + result = true + } + stringClaims = stringClaims + a } + + // case where "" is sent in one or many aud claims + if len(stringClaims) == 0 { + return !required + } + + return result } func verifyExp(exp int64, now int64, required bool) bool { diff --git a/aux/server-discovery/vendor/github.com/dgrijalva/jwt-go/doc.go b/extra/server-discovery/vendor/github.com/golang-jwt/jwt/doc.go similarity index 100% rename from aux/server-discovery/vendor/github.com/dgrijalva/jwt-go/doc.go rename to extra/server-discovery/vendor/github.com/golang-jwt/jwt/doc.go diff --git a/aux/server-discovery/vendor/github.com/dgrijalva/jwt-go/ecdsa.go b/extra/server-discovery/vendor/github.com/golang-jwt/jwt/ecdsa.go similarity index 84% rename from aux/server-discovery/vendor/github.com/dgrijalva/jwt-go/ecdsa.go rename to extra/server-discovery/vendor/github.com/golang-jwt/jwt/ecdsa.go index f97738124..15e23435d 100644 --- a/aux/server-discovery/vendor/github.com/dgrijalva/jwt-go/ecdsa.go +++ b/extra/server-discovery/vendor/github.com/golang-jwt/jwt/ecdsa.go @@ -88,11 +88,11 @@ func (m *SigningMethodECDSA) Verify(signingString, signature string, key interfa hasher.Write([]byte(signingString)) // Verify the signature - if verifystatus := ecdsa.Verify(ecdsaKey, hasher.Sum(nil), r, s); verifystatus == true { + if verifystatus := ecdsa.Verify(ecdsaKey, hasher.Sum(nil), r, s); verifystatus { return nil - } else { - return ErrECDSAVerification } + + return ErrECDSAVerification } // Implements the Sign method from SigningMethod @@ -128,18 +128,12 @@ func (m *SigningMethodECDSA) Sign(signingString string, key interface{}) (string keyBytes += 1 } - // We serialize the outpus (r and s) into big-endian byte arrays and pad - // them with zeros on the left to make sure the sizes work out. Both arrays - // must be keyBytes long, and the output must be 2*keyBytes long. - rBytes := r.Bytes() - rBytesPadded := make([]byte, keyBytes) - copy(rBytesPadded[keyBytes-len(rBytes):], rBytes) - - sBytes := s.Bytes() - sBytesPadded := make([]byte, keyBytes) - copy(sBytesPadded[keyBytes-len(sBytes):], sBytes) - - out := append(rBytesPadded, sBytesPadded...) + // We serialize the outputs (r and s) into big-endian byte arrays + // padded with zeros on the left to make sure the sizes work out. + // Output must be 2*keyBytes long. + out := make([]byte, 2*keyBytes) + r.FillBytes(out[0:keyBytes]) // r is assigned to the first half of output. + s.FillBytes(out[keyBytes:]) // s is assigned to the second half of output. return EncodeSegment(out), nil } else { diff --git a/aux/server-discovery/vendor/github.com/dgrijalva/jwt-go/ecdsa_utils.go b/extra/server-discovery/vendor/github.com/golang-jwt/jwt/ecdsa_utils.go similarity index 93% rename from aux/server-discovery/vendor/github.com/dgrijalva/jwt-go/ecdsa_utils.go rename to extra/server-discovery/vendor/github.com/golang-jwt/jwt/ecdsa_utils.go index d19624b72..db9f4be7d 100644 --- a/aux/server-discovery/vendor/github.com/dgrijalva/jwt-go/ecdsa_utils.go +++ b/extra/server-discovery/vendor/github.com/golang-jwt/jwt/ecdsa_utils.go @@ -25,7 +25,9 @@ func ParseECPrivateKeyFromPEM(key []byte) (*ecdsa.PrivateKey, error) { // Parse the key var parsedKey interface{} if parsedKey, err = x509.ParseECPrivateKey(block.Bytes); err != nil { - return nil, err + if parsedKey, err = x509.ParsePKCS8PrivateKey(block.Bytes); err != nil { + return nil, err + } } var pkey *ecdsa.PrivateKey diff --git a/extra/server-discovery/vendor/github.com/golang-jwt/jwt/ed25519.go b/extra/server-discovery/vendor/github.com/golang-jwt/jwt/ed25519.go new file mode 100644 index 000000000..a2f8ddbe9 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/golang-jwt/jwt/ed25519.go @@ -0,0 +1,81 @@ +package jwt + +import ( + "errors" + + "crypto/ed25519" +) + +var ( + ErrEd25519Verification = errors.New("ed25519: verification error") +) + +// Implements the EdDSA family +// Expects ed25519.PrivateKey for signing and ed25519.PublicKey for verification +type SigningMethodEd25519 struct{} + +// Specific instance for EdDSA +var ( + SigningMethodEdDSA *SigningMethodEd25519 +) + +func init() { + SigningMethodEdDSA = &SigningMethodEd25519{} + RegisterSigningMethod(SigningMethodEdDSA.Alg(), func() SigningMethod { + return SigningMethodEdDSA + }) +} + +func (m *SigningMethodEd25519) Alg() string { + return "EdDSA" +} + +// Implements the Verify method from SigningMethod +// For this verify method, key must be an ed25519.PublicKey +func (m *SigningMethodEd25519) Verify(signingString, signature string, key interface{}) error { + var err error + var ed25519Key ed25519.PublicKey + var ok bool + + if ed25519Key, ok = key.(ed25519.PublicKey); !ok { + return ErrInvalidKeyType + } + + if len(ed25519Key) != ed25519.PublicKeySize { + return ErrInvalidKey + } + + // Decode the signature + var sig []byte + if sig, err = DecodeSegment(signature); err != nil { + return err + } + + // Verify the signature + if !ed25519.Verify(ed25519Key, []byte(signingString), sig) { + return ErrEd25519Verification + } + + return nil +} + +// Implements the Sign method from SigningMethod +// For this signing method, key must be an ed25519.PrivateKey +func (m *SigningMethodEd25519) Sign(signingString string, key interface{}) (string, error) { + var ed25519Key ed25519.PrivateKey + var ok bool + + if ed25519Key, ok = key.(ed25519.PrivateKey); !ok { + return "", ErrInvalidKeyType + } + + // ed25519.Sign panics if private key not equal to ed25519.PrivateKeySize + // this allows to avoid recover usage + if len(ed25519Key) != ed25519.PrivateKeySize { + return "", ErrInvalidKey + } + + // Sign the string and return the encoded result + sig := ed25519.Sign(ed25519Key, []byte(signingString)) + return EncodeSegment(sig), nil +} diff --git a/extra/server-discovery/vendor/github.com/golang-jwt/jwt/ed25519_utils.go b/extra/server-discovery/vendor/github.com/golang-jwt/jwt/ed25519_utils.go new file mode 100644 index 000000000..c6357275e --- /dev/null +++ b/extra/server-discovery/vendor/github.com/golang-jwt/jwt/ed25519_utils.go @@ -0,0 +1,64 @@ +package jwt + +import ( + "crypto" + "crypto/ed25519" + "crypto/x509" + "encoding/pem" + "errors" +) + +var ( + ErrNotEdPrivateKey = errors.New("Key is not a valid Ed25519 private key") + ErrNotEdPublicKey = errors.New("Key is not a valid Ed25519 public key") +) + +// Parse PEM-encoded Edwards curve private key +func ParseEdPrivateKeyFromPEM(key []byte) (crypto.PrivateKey, error) { + var err error + + // Parse PEM block + var block *pem.Block + if block, _ = pem.Decode(key); block == nil { + return nil, ErrKeyMustBePEMEncoded + } + + // Parse the key + var parsedKey interface{} + if parsedKey, err = x509.ParsePKCS8PrivateKey(block.Bytes); err != nil { + return nil, err + } + + var pkey ed25519.PrivateKey + var ok bool + if pkey, ok = parsedKey.(ed25519.PrivateKey); !ok { + return nil, ErrNotEdPrivateKey + } + + return pkey, nil +} + +// Parse PEM-encoded Edwards curve public key +func ParseEdPublicKeyFromPEM(key []byte) (crypto.PublicKey, error) { + var err error + + // Parse PEM block + var block *pem.Block + if block, _ = pem.Decode(key); block == nil { + return nil, ErrKeyMustBePEMEncoded + } + + // Parse the key + var parsedKey interface{} + if parsedKey, err = x509.ParsePKIXPublicKey(block.Bytes); err != nil { + return nil, err + } + + var pkey ed25519.PublicKey + var ok bool + if pkey, ok = parsedKey.(ed25519.PublicKey); !ok { + return nil, ErrNotEdPublicKey + } + + return pkey, nil +} diff --git a/aux/server-discovery/vendor/github.com/dgrijalva/jwt-go/errors.go b/extra/server-discovery/vendor/github.com/golang-jwt/jwt/errors.go similarity index 100% rename from aux/server-discovery/vendor/github.com/dgrijalva/jwt-go/errors.go rename to extra/server-discovery/vendor/github.com/golang-jwt/jwt/errors.go diff --git a/aux/server-discovery/vendor/github.com/dgrijalva/jwt-go/hmac.go b/extra/server-discovery/vendor/github.com/golang-jwt/jwt/hmac.go similarity index 100% rename from aux/server-discovery/vendor/github.com/dgrijalva/jwt-go/hmac.go rename to extra/server-discovery/vendor/github.com/golang-jwt/jwt/hmac.go diff --git a/aux/server-discovery/vendor/github.com/dgrijalva/jwt-go/map_claims.go b/extra/server-discovery/vendor/github.com/golang-jwt/jwt/map_claims.go similarity index 69% rename from aux/server-discovery/vendor/github.com/dgrijalva/jwt-go/map_claims.go rename to extra/server-discovery/vendor/github.com/golang-jwt/jwt/map_claims.go index 291213c46..72c79f92e 100644 --- a/aux/server-discovery/vendor/github.com/dgrijalva/jwt-go/map_claims.go +++ b/extra/server-discovery/vendor/github.com/golang-jwt/jwt/map_claims.go @@ -10,37 +10,59 @@ import ( // This is the default claims type if you don't supply one type MapClaims map[string]interface{} -// Compares the aud claim against cmp. +// VerifyAudience Compares the aud claim against cmp. // If required is false, this method will return true if the value matches or is unset func (m MapClaims) VerifyAudience(cmp string, req bool) bool { - aud, _ := m["aud"].(string) + var aud []string + switch v := m["aud"].(type) { + case string: + aud = append(aud, v) + case []string: + aud = v + case []interface{}: + for _, a := range v { + vs, ok := a.(string) + if !ok { + return false + } + aud = append(aud, vs) + } + } return verifyAud(aud, cmp, req) } // Compares the exp claim against cmp. // If required is false, this method will return true if the value matches or is unset func (m MapClaims) VerifyExpiresAt(cmp int64, req bool) bool { - switch exp := m["exp"].(type) { + exp, ok := m["exp"] + if !ok { + return !req + } + switch expType := exp.(type) { case float64: - return verifyExp(int64(exp), cmp, req) + return verifyExp(int64(expType), cmp, req) case json.Number: - v, _ := exp.Int64() + v, _ := expType.Int64() return verifyExp(v, cmp, req) } - return req == false + return false } // Compares the iat claim against cmp. // If required is false, this method will return true if the value matches or is unset func (m MapClaims) VerifyIssuedAt(cmp int64, req bool) bool { - switch iat := m["iat"].(type) { + iat, ok := m["iat"] + if !ok { + return !req + } + switch iatType := iat.(type) { case float64: - return verifyIat(int64(iat), cmp, req) + return verifyIat(int64(iatType), cmp, req) case json.Number: - v, _ := iat.Int64() + v, _ := iatType.Int64() return verifyIat(v, cmp, req) } - return req == false + return false } // Compares the iss claim against cmp. @@ -53,14 +75,18 @@ func (m MapClaims) VerifyIssuer(cmp string, req bool) bool { // Compares the nbf claim against cmp. // If required is false, this method will return true if the value matches or is unset func (m MapClaims) VerifyNotBefore(cmp int64, req bool) bool { - switch nbf := m["nbf"].(type) { + nbf, ok := m["nbf"] + if !ok { + return !req + } + switch nbfType := nbf.(type) { case float64: - return verifyNbf(int64(nbf), cmp, req) + return verifyNbf(int64(nbfType), cmp, req) case json.Number: - v, _ := nbf.Int64() + v, _ := nbfType.Int64() return verifyNbf(v, cmp, req) } - return req == false + return false } // Validates time based claims "exp, iat, nbf". @@ -71,17 +97,17 @@ func (m MapClaims) Valid() error { vErr := new(ValidationError) now := TimeFunc().Unix() - if m.VerifyExpiresAt(now, false) == false { + if !m.VerifyExpiresAt(now, false) { vErr.Inner = errors.New("Token is expired") vErr.Errors |= ValidationErrorExpired } - if m.VerifyIssuedAt(now, false) == false { + if !m.VerifyIssuedAt(now, false) { vErr.Inner = errors.New("Token used before issued") vErr.Errors |= ValidationErrorIssuedAt } - if m.VerifyNotBefore(now, false) == false { + if !m.VerifyNotBefore(now, false) { vErr.Inner = errors.New("Token is not valid yet") vErr.Errors |= ValidationErrorNotValidYet } diff --git a/aux/server-discovery/vendor/github.com/dgrijalva/jwt-go/none.go b/extra/server-discovery/vendor/github.com/golang-jwt/jwt/none.go similarity index 100% rename from aux/server-discovery/vendor/github.com/dgrijalva/jwt-go/none.go rename to extra/server-discovery/vendor/github.com/golang-jwt/jwt/none.go diff --git a/aux/server-discovery/vendor/github.com/dgrijalva/jwt-go/parser.go b/extra/server-discovery/vendor/github.com/golang-jwt/jwt/parser.go similarity index 100% rename from aux/server-discovery/vendor/github.com/dgrijalva/jwt-go/parser.go rename to extra/server-discovery/vendor/github.com/golang-jwt/jwt/parser.go diff --git a/aux/server-discovery/vendor/github.com/dgrijalva/jwt-go/rsa.go b/extra/server-discovery/vendor/github.com/golang-jwt/jwt/rsa.go similarity index 100% rename from aux/server-discovery/vendor/github.com/dgrijalva/jwt-go/rsa.go rename to extra/server-discovery/vendor/github.com/golang-jwt/jwt/rsa.go diff --git a/aux/server-discovery/vendor/github.com/dgrijalva/jwt-go/rsa_pss.go b/extra/server-discovery/vendor/github.com/golang-jwt/jwt/rsa_pss.go similarity index 71% rename from aux/server-discovery/vendor/github.com/dgrijalva/jwt-go/rsa_pss.go rename to extra/server-discovery/vendor/github.com/golang-jwt/jwt/rsa_pss.go index 10ee9db8a..c01470864 100644 --- a/aux/server-discovery/vendor/github.com/dgrijalva/jwt-go/rsa_pss.go +++ b/extra/server-discovery/vendor/github.com/golang-jwt/jwt/rsa_pss.go @@ -12,9 +12,14 @@ import ( type SigningMethodRSAPSS struct { *SigningMethodRSA Options *rsa.PSSOptions + // VerifyOptions is optional. If set overrides Options for rsa.VerifyPPS. + // Used to accept tokens signed with rsa.PSSSaltLengthAuto, what doesn't follow + // https://tools.ietf.org/html/rfc7518#section-3.5 but was used previously. + // See https://github.com/dgrijalva/jwt-go/issues/285#issuecomment-437451244 for details. + VerifyOptions *rsa.PSSOptions } -// Specific instances for RS/PS and company +// Specific instances for RS/PS and company. var ( SigningMethodPS256 *SigningMethodRSAPSS SigningMethodPS384 *SigningMethodRSAPSS @@ -24,13 +29,15 @@ var ( func init() { // PS256 SigningMethodPS256 = &SigningMethodRSAPSS{ - &SigningMethodRSA{ + SigningMethodRSA: &SigningMethodRSA{ Name: "PS256", Hash: crypto.SHA256, }, - &rsa.PSSOptions{ + Options: &rsa.PSSOptions{ + SaltLength: rsa.PSSSaltLengthEqualsHash, + }, + VerifyOptions: &rsa.PSSOptions{ SaltLength: rsa.PSSSaltLengthAuto, - Hash: crypto.SHA256, }, } RegisterSigningMethod(SigningMethodPS256.Alg(), func() SigningMethod { @@ -39,13 +46,15 @@ func init() { // PS384 SigningMethodPS384 = &SigningMethodRSAPSS{ - &SigningMethodRSA{ + SigningMethodRSA: &SigningMethodRSA{ Name: "PS384", Hash: crypto.SHA384, }, - &rsa.PSSOptions{ + Options: &rsa.PSSOptions{ + SaltLength: rsa.PSSSaltLengthEqualsHash, + }, + VerifyOptions: &rsa.PSSOptions{ SaltLength: rsa.PSSSaltLengthAuto, - Hash: crypto.SHA384, }, } RegisterSigningMethod(SigningMethodPS384.Alg(), func() SigningMethod { @@ -54,13 +63,15 @@ func init() { // PS512 SigningMethodPS512 = &SigningMethodRSAPSS{ - &SigningMethodRSA{ + SigningMethodRSA: &SigningMethodRSA{ Name: "PS512", Hash: crypto.SHA512, }, - &rsa.PSSOptions{ + Options: &rsa.PSSOptions{ + SaltLength: rsa.PSSSaltLengthEqualsHash, + }, + VerifyOptions: &rsa.PSSOptions{ SaltLength: rsa.PSSSaltLengthAuto, - Hash: crypto.SHA512, }, } RegisterSigningMethod(SigningMethodPS512.Alg(), func() SigningMethod { @@ -94,7 +105,12 @@ func (m *SigningMethodRSAPSS) Verify(signingString, signature string, key interf hasher := m.Hash.New() hasher.Write([]byte(signingString)) - return rsa.VerifyPSS(rsaKey, m.Hash, hasher.Sum(nil), sig, m.Options) + opts := m.Options + if m.VerifyOptions != nil { + opts = m.VerifyOptions + } + + return rsa.VerifyPSS(rsaKey, m.Hash, hasher.Sum(nil), sig, opts) } // Implements the Sign method from SigningMethod diff --git a/aux/server-discovery/vendor/github.com/dgrijalva/jwt-go/rsa_utils.go b/extra/server-discovery/vendor/github.com/golang-jwt/jwt/rsa_utils.go similarity index 95% rename from aux/server-discovery/vendor/github.com/dgrijalva/jwt-go/rsa_utils.go rename to extra/server-discovery/vendor/github.com/golang-jwt/jwt/rsa_utils.go index a5ababf95..14c78c292 100644 --- a/aux/server-discovery/vendor/github.com/dgrijalva/jwt-go/rsa_utils.go +++ b/extra/server-discovery/vendor/github.com/golang-jwt/jwt/rsa_utils.go @@ -8,7 +8,7 @@ import ( ) var ( - ErrKeyMustBePEMEncoded = errors.New("Invalid Key: Key must be PEM encoded PKCS1 or PKCS8 private key") + ErrKeyMustBePEMEncoded = errors.New("Invalid Key: Key must be a PEM encoded PKCS1 or PKCS8 key") ErrNotRSAPrivateKey = errors.New("Key is not a valid RSA private key") ErrNotRSAPublicKey = errors.New("Key is not a valid RSA public key") ) diff --git a/aux/server-discovery/vendor/github.com/dgrijalva/jwt-go/signing_method.go b/extra/server-discovery/vendor/github.com/golang-jwt/jwt/signing_method.go similarity index 100% rename from aux/server-discovery/vendor/github.com/dgrijalva/jwt-go/signing_method.go rename to extra/server-discovery/vendor/github.com/golang-jwt/jwt/signing_method.go diff --git a/aux/server-discovery/vendor/github.com/dgrijalva/jwt-go/token.go b/extra/server-discovery/vendor/github.com/golang-jwt/jwt/token.go similarity index 93% rename from aux/server-discovery/vendor/github.com/dgrijalva/jwt-go/token.go rename to extra/server-discovery/vendor/github.com/golang-jwt/jwt/token.go index d637e0867..6b30ced12 100644 --- a/aux/server-discovery/vendor/github.com/dgrijalva/jwt-go/token.go +++ b/extra/server-discovery/vendor/github.com/golang-jwt/jwt/token.go @@ -65,7 +65,7 @@ func (t *Token) SignedString(key interface{}) (string, error) { func (t *Token) SigningString() (string, error) { var err error parts := make([]string, 2) - for i, _ := range parts { + for i := range parts { var jsonValue []byte if i == 0 { if jsonValue, err = json.Marshal(t.Header); err != nil { @@ -95,14 +95,10 @@ func ParseWithClaims(tokenString string, claims Claims, keyFunc Keyfunc) (*Token // Encode JWT specific base64url encoding with padding stripped func EncodeSegment(seg []byte) string { - return strings.TrimRight(base64.URLEncoding.EncodeToString(seg), "=") + return base64.RawURLEncoding.EncodeToString(seg) } // Decode JWT specific base64url encoding with padding stripped func DecodeSegment(seg string) ([]byte, error) { - if l := len(seg) % 4; l > 0 { - seg += strings.Repeat("=", 4-l) - } - - return base64.URLEncoding.DecodeString(seg) + return base64.RawURLEncoding.DecodeString(seg) } diff --git a/aux/server-discovery/vendor/github.com/google/uuid/.travis.yml b/extra/server-discovery/vendor/github.com/google/uuid/.travis.yml similarity index 100% rename from aux/server-discovery/vendor/github.com/google/uuid/.travis.yml rename to extra/server-discovery/vendor/github.com/google/uuid/.travis.yml diff --git a/extra/server-discovery/vendor/github.com/google/uuid/CONTRIBUTING.md b/extra/server-discovery/vendor/github.com/google/uuid/CONTRIBUTING.md new file mode 100644 index 000000000..04fdf09f1 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/google/uuid/CONTRIBUTING.md @@ -0,0 +1,10 @@ +# How to contribute + +We definitely welcome patches and contribution to this project! + +### Legal requirements + +In order to protect both you and ourselves, you will need to sign the +[Contributor License Agreement](https://cla.developers.google.com/clas). + +You may have already signed it for other Google projects. diff --git a/aux/server-discovery/vendor/github.com/google/uuid/CONTRIBUTORS b/extra/server-discovery/vendor/github.com/google/uuid/CONTRIBUTORS similarity index 100% rename from aux/server-discovery/vendor/github.com/google/uuid/CONTRIBUTORS rename to extra/server-discovery/vendor/github.com/google/uuid/CONTRIBUTORS diff --git a/aux/server-discovery/vendor/github.com/google/uuid/LICENSE b/extra/server-discovery/vendor/github.com/google/uuid/LICENSE similarity index 100% rename from aux/server-discovery/vendor/github.com/google/uuid/LICENSE rename to extra/server-discovery/vendor/github.com/google/uuid/LICENSE diff --git a/extra/server-discovery/vendor/github.com/google/uuid/README.md b/extra/server-discovery/vendor/github.com/google/uuid/README.md new file mode 100644 index 000000000..f765a46f9 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/google/uuid/README.md @@ -0,0 +1,19 @@ +# uuid ![build status](https://travis-ci.org/google/uuid.svg?branch=master) +The uuid package generates and inspects UUIDs based on +[RFC 4122](http://tools.ietf.org/html/rfc4122) +and DCE 1.1: Authentication and Security Services. + +This package is based on the github.com/pborman/uuid package (previously named +code.google.com/p/go-uuid). It differs from these earlier packages in that +a UUID is a 16 byte array rather than a byte slice. One loss due to this +change is the ability to represent an invalid UUID (vs a NIL UUID). + +###### Install +`go get github.com/google/uuid` + +###### Documentation +[![GoDoc](https://godoc.org/github.com/google/uuid?status.svg)](http://godoc.org/github.com/google/uuid) + +Full `go doc` style documentation for the package can be viewed online without +installing this package by using the GoDoc site here: +http://pkg.go.dev/github.com/google/uuid diff --git a/aux/server-discovery/vendor/github.com/google/uuid/dce.go b/extra/server-discovery/vendor/github.com/google/uuid/dce.go similarity index 100% rename from aux/server-discovery/vendor/github.com/google/uuid/dce.go rename to extra/server-discovery/vendor/github.com/google/uuid/dce.go diff --git a/aux/server-discovery/vendor/github.com/google/uuid/doc.go b/extra/server-discovery/vendor/github.com/google/uuid/doc.go similarity index 100% rename from aux/server-discovery/vendor/github.com/google/uuid/doc.go rename to extra/server-discovery/vendor/github.com/google/uuid/doc.go diff --git a/aux/server-discovery/vendor/github.com/google/uuid/hash.go b/extra/server-discovery/vendor/github.com/google/uuid/hash.go similarity index 100% rename from aux/server-discovery/vendor/github.com/google/uuid/hash.go rename to extra/server-discovery/vendor/github.com/google/uuid/hash.go diff --git a/aux/server-discovery/vendor/github.com/google/uuid/marshal.go b/extra/server-discovery/vendor/github.com/google/uuid/marshal.go similarity index 94% rename from aux/server-discovery/vendor/github.com/google/uuid/marshal.go rename to extra/server-discovery/vendor/github.com/google/uuid/marshal.go index 7f9e0c6c0..14bd34072 100644 --- a/aux/server-discovery/vendor/github.com/google/uuid/marshal.go +++ b/extra/server-discovery/vendor/github.com/google/uuid/marshal.go @@ -16,10 +16,11 @@ func (uuid UUID) MarshalText() ([]byte, error) { // UnmarshalText implements encoding.TextUnmarshaler. func (uuid *UUID) UnmarshalText(data []byte) error { id, err := ParseBytes(data) - if err == nil { - *uuid = id + if err != nil { + return err } - return err + *uuid = id + return nil } // MarshalBinary implements encoding.BinaryMarshaler. diff --git a/aux/server-discovery/vendor/github.com/google/uuid/node.go b/extra/server-discovery/vendor/github.com/google/uuid/node.go similarity index 100% rename from aux/server-discovery/vendor/github.com/google/uuid/node.go rename to extra/server-discovery/vendor/github.com/google/uuid/node.go diff --git a/aux/server-discovery/vendor/github.com/google/uuid/node_js.go b/extra/server-discovery/vendor/github.com/google/uuid/node_js.go similarity index 100% rename from aux/server-discovery/vendor/github.com/google/uuid/node_js.go rename to extra/server-discovery/vendor/github.com/google/uuid/node_js.go diff --git a/aux/server-discovery/vendor/github.com/google/uuid/node_net.go b/extra/server-discovery/vendor/github.com/google/uuid/node_net.go similarity index 100% rename from aux/server-discovery/vendor/github.com/google/uuid/node_net.go rename to extra/server-discovery/vendor/github.com/google/uuid/node_net.go diff --git a/aux/server-discovery/vendor/github.com/google/uuid/sql.go b/extra/server-discovery/vendor/github.com/google/uuid/sql.go similarity index 100% rename from aux/server-discovery/vendor/github.com/google/uuid/sql.go rename to extra/server-discovery/vendor/github.com/google/uuid/sql.go diff --git a/aux/server-discovery/vendor/github.com/google/uuid/time.go b/extra/server-discovery/vendor/github.com/google/uuid/time.go similarity index 100% rename from aux/server-discovery/vendor/github.com/google/uuid/time.go rename to extra/server-discovery/vendor/github.com/google/uuid/time.go diff --git a/aux/server-discovery/vendor/github.com/google/uuid/util.go b/extra/server-discovery/vendor/github.com/google/uuid/util.go similarity index 100% rename from aux/server-discovery/vendor/github.com/google/uuid/util.go rename to extra/server-discovery/vendor/github.com/google/uuid/util.go diff --git a/aux/server-discovery/vendor/github.com/google/uuid/uuid.go b/extra/server-discovery/vendor/github.com/google/uuid/uuid.go similarity index 100% rename from aux/server-discovery/vendor/github.com/google/uuid/uuid.go rename to extra/server-discovery/vendor/github.com/google/uuid/uuid.go diff --git a/aux/server-discovery/vendor/github.com/google/uuid/version1.go b/extra/server-discovery/vendor/github.com/google/uuid/version1.go similarity index 100% rename from aux/server-discovery/vendor/github.com/google/uuid/version1.go rename to extra/server-discovery/vendor/github.com/google/uuid/version1.go index 199a1ac65..463109629 100644 --- a/aux/server-discovery/vendor/github.com/google/uuid/version1.go +++ b/extra/server-discovery/vendor/github.com/google/uuid/version1.go @@ -17,12 +17,6 @@ import ( // // In most cases, New should be used. func NewUUID() (UUID, error) { - nodeMu.Lock() - if nodeID == zeroID { - setNodeInterface("") - } - nodeMu.Unlock() - var uuid UUID now, seq, err := GetTime() if err != nil { @@ -38,7 +32,13 @@ func NewUUID() (UUID, error) { binary.BigEndian.PutUint16(uuid[4:], timeMid) binary.BigEndian.PutUint16(uuid[6:], timeHi) binary.BigEndian.PutUint16(uuid[8:], seq) + + nodeMu.Lock() + if nodeID == zeroID { + setNodeInterface("") + } copy(uuid[10:], nodeID[:]) + nodeMu.Unlock() return uuid, nil } diff --git a/aux/server-discovery/vendor/github.com/google/uuid/version4.go b/extra/server-discovery/vendor/github.com/google/uuid/version4.go similarity index 83% rename from aux/server-discovery/vendor/github.com/google/uuid/version4.go rename to extra/server-discovery/vendor/github.com/google/uuid/version4.go index 84af91c9f..c110465db 100644 --- a/aux/server-discovery/vendor/github.com/google/uuid/version4.go +++ b/extra/server-discovery/vendor/github.com/google/uuid/version4.go @@ -27,8 +27,13 @@ func New() UUID { // equivalent to the odds of creating a few tens of trillions of UUIDs in a // year and having one duplicate. func NewRandom() (UUID, error) { + return NewRandomFromReader(rander) +} + +// NewRandomFromReader returns a UUID based on bytes read from a given io.Reader. +func NewRandomFromReader(r io.Reader) (UUID, error) { var uuid UUID - _, err := io.ReadFull(rander, uuid[:]) + _, err := io.ReadFull(r, uuid[:]) if err != nil { return Nil, err } diff --git a/aux/server-discovery/vendor/github.com/gorilla/css/LICENSE b/extra/server-discovery/vendor/github.com/gorilla/css/LICENSE similarity index 100% rename from aux/server-discovery/vendor/github.com/gorilla/css/LICENSE rename to extra/server-discovery/vendor/github.com/gorilla/css/LICENSE diff --git a/aux/server-discovery/vendor/github.com/gorilla/css/scanner/doc.go b/extra/server-discovery/vendor/github.com/gorilla/css/scanner/doc.go similarity index 100% rename from aux/server-discovery/vendor/github.com/gorilla/css/scanner/doc.go rename to extra/server-discovery/vendor/github.com/gorilla/css/scanner/doc.go diff --git a/aux/server-discovery/vendor/github.com/gorilla/css/scanner/scanner.go b/extra/server-discovery/vendor/github.com/gorilla/css/scanner/scanner.go similarity index 100% rename from aux/server-discovery/vendor/github.com/gorilla/css/scanner/scanner.go rename to extra/server-discovery/vendor/github.com/gorilla/css/scanner/scanner.go diff --git a/aux/server-discovery/vendor/github.com/inconshreveable/mousetrap/LICENSE b/extra/server-discovery/vendor/github.com/inconshreveable/mousetrap/LICENSE similarity index 100% rename from aux/server-discovery/vendor/github.com/inconshreveable/mousetrap/LICENSE rename to extra/server-discovery/vendor/github.com/inconshreveable/mousetrap/LICENSE diff --git a/extra/server-discovery/vendor/github.com/inconshreveable/mousetrap/README.md b/extra/server-discovery/vendor/github.com/inconshreveable/mousetrap/README.md new file mode 100644 index 000000000..7a950d177 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/inconshreveable/mousetrap/README.md @@ -0,0 +1,23 @@ +# mousetrap + +mousetrap is a tiny library that answers a single question. + +On a Windows machine, was the process invoked by someone double clicking on +the executable file while browsing in explorer? + +### Motivation + +Windows developers unfamiliar with command line tools will often "double-click" +the executable for a tool. Because most CLI tools print the help and then exit +when invoked without arguments, this is often very frustrating for those users. + +mousetrap provides a way to detect these invocations so that you can provide +more helpful behavior and instructions on how to run the CLI tool. To see what +this looks like, both from an organizational and a technical perspective, see +https://inconshreveable.com/09-09-2014/sweat-the-small-stuff/ + +### The interface + +The library exposes a single interface: + + func StartedByExplorer() (bool) diff --git a/aux/server-discovery/vendor/github.com/inconshreveable/mousetrap/trap_others.go b/extra/server-discovery/vendor/github.com/inconshreveable/mousetrap/trap_others.go similarity index 100% rename from aux/server-discovery/vendor/github.com/inconshreveable/mousetrap/trap_others.go rename to extra/server-discovery/vendor/github.com/inconshreveable/mousetrap/trap_others.go diff --git a/aux/server-discovery/vendor/github.com/inconshreveable/mousetrap/trap_windows.go b/extra/server-discovery/vendor/github.com/inconshreveable/mousetrap/trap_windows.go similarity index 100% rename from aux/server-discovery/vendor/github.com/inconshreveable/mousetrap/trap_windows.go rename to extra/server-discovery/vendor/github.com/inconshreveable/mousetrap/trap_windows.go diff --git a/aux/server-discovery/vendor/github.com/inconshreveable/mousetrap/trap_windows_1.4.go b/extra/server-discovery/vendor/github.com/inconshreveable/mousetrap/trap_windows_1.4.go similarity index 100% rename from aux/server-discovery/vendor/github.com/inconshreveable/mousetrap/trap_windows_1.4.go rename to extra/server-discovery/vendor/github.com/inconshreveable/mousetrap/trap_windows_1.4.go diff --git a/aux/server-discovery/vendor/github.com/jmoiron/sqlx/LICENSE b/extra/server-discovery/vendor/github.com/jmoiron/sqlx/LICENSE similarity index 100% rename from aux/server-discovery/vendor/github.com/jmoiron/sqlx/LICENSE rename to extra/server-discovery/vendor/github.com/jmoiron/sqlx/LICENSE diff --git a/extra/server-discovery/vendor/github.com/jmoiron/sqlx/types/README.md b/extra/server-discovery/vendor/github.com/jmoiron/sqlx/types/README.md new file mode 100644 index 000000000..713abe50d --- /dev/null +++ b/extra/server-discovery/vendor/github.com/jmoiron/sqlx/types/README.md @@ -0,0 +1,5 @@ +# types + +The types package provides some useful types which implement the `sql.Scanner` +and `driver.Valuer` interfaces, suitable for use as scan and value targets with +database/sql. diff --git a/aux/server-discovery/vendor/github.com/jmoiron/sqlx/types/types.go b/extra/server-discovery/vendor/github.com/jmoiron/sqlx/types/types.go similarity index 97% rename from aux/server-discovery/vendor/github.com/jmoiron/sqlx/types/types.go rename to extra/server-discovery/vendor/github.com/jmoiron/sqlx/types/types.go index 7b014c1e1..808f58346 100644 --- a/aux/server-discovery/vendor/github.com/jmoiron/sqlx/types/types.go +++ b/extra/server-discovery/vendor/github.com/jmoiron/sqlx/types/types.go @@ -30,11 +30,11 @@ func (g GzippedText) Value() (driver.Value, error) { // the wire and storing the raw result in the GzippedText. func (g *GzippedText) Scan(src interface{}) error { var source []byte - switch src.(type) { + switch src := src.(type) { case string: - source = []byte(src.(string)) + source = []byte(src) case []byte: - source = src.([]byte) + source = src default: return errors.New("Incompatible type for GzippedText") } @@ -104,7 +104,7 @@ func (j *JSONText) Scan(src interface{}) error { default: return errors.New("Incompatible type for JSONText") } - *j = JSONText(append((*j)[0:0], source...)) + *j = append((*j)[0:0], source...) return nil } diff --git a/aux/server-discovery/vendor/github.com/joho/godotenv/.gitignore b/extra/server-discovery/vendor/github.com/joho/godotenv/.gitignore similarity index 100% rename from aux/server-discovery/vendor/github.com/joho/godotenv/.gitignore rename to extra/server-discovery/vendor/github.com/joho/godotenv/.gitignore diff --git a/aux/server-discovery/vendor/github.com/joho/godotenv/LICENCE b/extra/server-discovery/vendor/github.com/joho/godotenv/LICENCE similarity index 100% rename from aux/server-discovery/vendor/github.com/joho/godotenv/LICENCE rename to extra/server-discovery/vendor/github.com/joho/godotenv/LICENCE diff --git a/extra/server-discovery/vendor/github.com/joho/godotenv/README.md b/extra/server-discovery/vendor/github.com/joho/godotenv/README.md new file mode 100644 index 000000000..1ec45b28d --- /dev/null +++ b/extra/server-discovery/vendor/github.com/joho/godotenv/README.md @@ -0,0 +1,188 @@ +# GoDotEnv ![CI](https://github.com/joho/godotenv/workflows/CI/badge.svg) [![Go Report Card](https://goreportcard.com/badge/github.com/joho/godotenv)](https://goreportcard.com/report/github.com/joho/godotenv) + +A Go (golang) port of the Ruby dotenv project (which loads env vars from a .env file) + +From the original Library: + +> Storing configuration in the environment is one of the tenets of a twelve-factor app. Anything that is likely to change between deployment environments–such as resource handles for databases or credentials for external services–should be extracted from the code into environment variables. +> +> But it is not always practical to set environment variables on development machines or continuous integration servers where multiple projects are run. Dotenv load variables from a .env file into ENV when the environment is bootstrapped. + +It can be used as a library (for loading in env for your own daemons etc) or as a bin command. + +There is test coverage and CI for both linuxish and windows environments, but I make no guarantees about the bin version working on windows. + +## Installation + +As a library + +```shell +go get github.com/joho/godotenv +``` + +or if you want to use it as a bin command +```shell +go get github.com/joho/godotenv/cmd/godotenv +``` + +## Usage + +Add your application configuration to your `.env` file in the root of your project: + +```shell +S3_BUCKET=YOURS3BUCKET +SECRET_KEY=YOURSECRETKEYGOESHERE +``` + +Then in your Go app you can do something like + +```go +package main + +import ( + "github.com/joho/godotenv" + "log" + "os" +) + +func main() { + err := godotenv.Load() + if err != nil { + log.Fatal("Error loading .env file") + } + + s3Bucket := os.Getenv("S3_BUCKET") + secretKey := os.Getenv("SECRET_KEY") + + // now do something with s3 or whatever +} +``` + +If you're even lazier than that, you can just take advantage of the autoload package which will read in `.env` on import + +```go +import _ "github.com/joho/godotenv/autoload" +``` + +While `.env` in the project root is the default, you don't have to be constrained, both examples below are 100% legit + +```go +_ = godotenv.Load("somerandomfile") +_ = godotenv.Load("filenumberone.env", "filenumbertwo.env") +``` + +If you want to be really fancy with your env file you can do comments and exports (below is a valid env file) + +```shell +# I am a comment and that is OK +SOME_VAR=someval +FOO=BAR # comments at line end are OK too +export BAR=BAZ +``` + +Or finally you can do YAML(ish) style + +```yaml +FOO: bar +BAR: baz +``` + +as a final aside, if you don't want godotenv munging your env you can just get a map back instead + +```go +var myEnv map[string]string +myEnv, err := godotenv.Read() + +s3Bucket := myEnv["S3_BUCKET"] +``` + +... or from an `io.Reader` instead of a local file + +```go +reader := getRemoteFile() +myEnv, err := godotenv.Parse(reader) +``` + +... or from a `string` if you so desire + +```go +content := getRemoteFileContent() +myEnv, err := godotenv.Unmarshal(content) +``` + +### Precedence & Conventions + +Existing envs take precedence of envs that are loaded later. + +The [convention](https://github.com/bkeepers/dotenv#what-other-env-files-can-i-use) +for managing multiple environments (i.e. development, test, production) +is to create an env named `{YOURAPP}_ENV` and load envs in this order: + +```go +env := os.Getenv("FOO_ENV") +if "" == env { + env = "development" +} + +godotenv.Load(".env." + env + ".local") +if "test" != env { + godotenv.Load(".env.local") +} +godotenv.Load(".env." + env) +godotenv.Load() // The Original .env +``` + +If you need to, you can also use `godotenv.Overload()` to defy this convention +and overwrite existing envs instead of only supplanting them. Use with caution. + +### Command Mode + +Assuming you've installed the command as above and you've got `$GOPATH/bin` in your `$PATH` + +``` +godotenv -f /some/path/to/.env some_command with some args +``` + +If you don't specify `-f` it will fall back on the default of loading `.env` in `PWD` + +### Writing Env Files + +Godotenv can also write a map representing the environment to a correctly-formatted and escaped file + +```go +env, err := godotenv.Unmarshal("KEY=value") +err := godotenv.Write(env, "./.env") +``` + +... or to a string + +```go +env, err := godotenv.Unmarshal("KEY=value") +content, err := godotenv.Marshal(env) +``` + +## Contributing + +Contributions are most welcome! The parser itself is pretty stupidly naive and I wouldn't be surprised if it breaks with edge cases. + +*code changes without tests will not be accepted* + +1. Fork it +2. Create your feature branch (`git checkout -b my-new-feature`) +3. Commit your changes (`git commit -am 'Added some feature'`) +4. Push to the branch (`git push origin my-new-feature`) +5. Create new Pull Request + +## Releases + +Releases should follow [Semver](http://semver.org/) though the first couple of releases are `v1` and `v1.1`. + +Use [annotated tags for all releases](https://github.com/joho/godotenv/issues/30). Example `git tag -a v1.2.1` + +## CI + +Linux: [![Build Status](https://travis-ci.org/joho/godotenv.svg?branch=master)](https://travis-ci.org/joho/godotenv) Windows: [![Build status](https://ci.appveyor.com/api/projects/status/9v40vnfvvgde64u4)](https://ci.appveyor.com/project/joho/godotenv) + +## Who? + +The original library [dotenv](https://github.com/bkeepers/dotenv) was written by [Brandon Keepers](http://opensoul.org/), and this port was done by [John Barton](https://johnbarton.co/) based off the tests/fixtures in the original library. diff --git a/aux/server-discovery/vendor/github.com/joho/godotenv/godotenv.go b/extra/server-discovery/vendor/github.com/joho/godotenv/godotenv.go similarity index 100% rename from aux/server-discovery/vendor/github.com/joho/godotenv/godotenv.go rename to extra/server-discovery/vendor/github.com/joho/godotenv/godotenv.go diff --git a/aux/server-discovery/vendor/github.com/joho/godotenv/renovate.json b/extra/server-discovery/vendor/github.com/joho/godotenv/renovate.json similarity index 100% rename from aux/server-discovery/vendor/github.com/joho/godotenv/renovate.json rename to extra/server-discovery/vendor/github.com/joho/godotenv/renovate.json diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/.gitignore b/extra/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/.gitignore similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/.gitignore rename to extra/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/.gitignore diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/.golangci.yml b/extra/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/.golangci.yml similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/.golangci.yml rename to extra/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/.golangci.yml diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/Changes b/extra/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/Changes similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/Changes rename to extra/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/Changes diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/LICENSE b/extra/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/LICENSE similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/LICENSE rename to extra/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/LICENSE diff --git a/extra/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/README.md b/extra/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/README.md new file mode 100644 index 000000000..bb3205d6d --- /dev/null +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/README.md @@ -0,0 +1,183 @@ +# backoff ![](https://github.com/lestrrat-go/backoff/workflows/CI/badge.svg) [![Go Reference](https://pkg.go.dev/badge/github.com/lestrrat-go/backoff/v2.svg)](https://pkg.go.dev/github.com/lestrrat-go/backoff/v2) + +Idiomatic backoff for Go + +This library is an implementation of backoff algorithm for retrying operations +in an idiomatic Go way. It respects `context.Context` natively, and the critical +notifications are done through *channel operations*, allowing you to write code +that is both more explicit and flexibile. + +For a longer discussion, [please read this article](https://medium.com/@lestrrat/yak-shaving-with-backoff-libraries-in-go-80240f0aa30c) + +# IMPORT + +```go +import "github.com/lestrrat-go/backoff/v2" +``` + +# SYNOPSIS + +```go +func ExampleExponential() { + p := backoff.Exponential( + backoff.WithMinInterval(time.Second), + backoff.WithMaxInterval(time.Minute), + backoff.WithJitterFactor(0.05), + ) + + flakyFunc := func(a int) (int, error) { + // silly function that only succeeds if the current call count is + // divisible by either 3 or 5 but not both + switch { + case a%15 == 0: + return 0, errors.New(`invalid`) + case a%3 == 0 || a%5 == 0: + return a, nil + } + return 0, errors.New(`invalid`) + } + + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) + defer cancel() + + retryFunc := func(v int) (int, error) { + b := p.Start(ctx) + for backoff.Continue(b) { + x, err := flakyFunc(v) + if err == nil { + return x, nil + } + } + return 0, errors.New(`failed to get value`) + } + + retryFunc(15) +} +``` + +# POLICIES + +Policy objects describe a backoff policy, and are factories to create backoff Controller objects. +Controller objects does the actual coordination. +Create a new controller for each invocation of a backoff enabled operation. +This way the controller object is protected from concurrent access (if you have one) and can easily be discarded + +## Null + +A null policy means there's no backoff. + +For example, if you were to support both using and not using a backoff in your code you can say + +```go + var p backoff.Policy + if useBackoff { + p = backoff.Exponential(...) + } else { + p = backoff.Null() + } + c := p.Start(ctx) + for backoff.Continue(c) { + if err := doSomething(); err != nil { + continue + } + return + } +``` + +Instead of + +```go + if useBackoff { + p := backoff.Exponential(...) + c := p.Start(ctx) + for backoff.Continue(c) { + if err := doSomething(); err != nil { + continue + } + return + } + } else { + if err := doSomething(); err != nil { + continue + } + } +``` + +## Constant + +A constant policy implements are backoff where the intervals are always the same + +## Exponential + +This is the most "common" of the backoffs. Intervals between calls are spaced out such that as you keep retrying, the intervals keep increasing. + +# FAQ + +## I'm getting "package github.com/lestrrat-go/backoff/v2: no Go files in /go/src/github.com/lestrrat-go/backoff/v2" + +You are using Go in GOPATH mode, which was the way before [Go Modules](https://blog.golang.org/using-go-modules) were introduced in Go 1.11 (Aug 2018). +GOPATH has slowly been phased out, and in Go 1.14 onwards, Go Modules pretty much Just Work. +Go 1.16 introduced more visible changes that forces users to be aware of the existance of go.mod files. + +The short answer when you you get the above error is: **Migrate to using Go Modules**. +This is simple: All you need to do is to include a go.mod (and go.sum) file to your library or app. + +For example, if you have previously been doing this: + +``` +git clone git@github.com:myusername/myawesomeproject.git +cd myawesomeproject +go get ./... +``` + +First include go.mod and go.sum in your repository: + +``` +git clone git@github.com:myusername/myawesomeproject.git +cd myawesomeproject +go mod init +go mod tidy +git add go.mod go.sum +git commit -m "Add go.mod and go.sum" -a +git push +``` + +Then from subsequent calls: + +``` +git clone git@github.com:myusername/myawesomeproject.git +cd myawesomeproject +go build # or go test, or go run, or whatever. +``` + +This will tell go to respect tags, and will automatically pick up the latest version of github.com/lestrrat-go/backoff + +If you really can't do this, then the quick and dirty workaround is to just copy the files over to /v2 directory of this library + +``` +BACKOFF=github.com/lestrrat-go/backoff +go get github.com/lestrrat-go/backoff +if [[ if ! -d "$GOPATH/src/$BACKOFF/v2" ]]; then + mkdir "$GOPATH/src/$BACKOFF/v2" # just to make sure it exists +fi +cp "$GOPATH/src/$BACKOFF/*.go" "$GOPATH/src/$BACKOFF/v2" + +git clone git@github.com:myusername/myawesomeproject.git +cd myawesomeproject +go get ./... +``` + +## Why won't you just add the files in /v2? + +Because it's hard to maintain multiple sources of truth. Sorry, I don't get paid to do this. +I will not hold anything against you if you decided to fork this to your repository, and move files to your own /v2 directory. +Then, if you have a go.mod in your app, you can just do + +``` +go mod edit -replace github.com/lestrrat-go/backoff/v2=github.com/myusername/myawesomemfork/v2 +``` + +Oh, wait, then you already have go.mod, so this is a non-issue. + +...Yeah, just migrate to using go modules, please? + diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/backoff.go b/extra/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/backoff.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/backoff.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/backoff.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/constant.go b/extra/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/constant.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/constant.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/constant.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/controller.go b/extra/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/controller.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/controller.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/controller.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/doc.go b/extra/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/doc.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/doc.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/doc.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/exponential.go b/extra/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/exponential.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/exponential.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/exponential.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/interface.go b/extra/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/interface.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/interface.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/interface.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/jitter.go b/extra/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/jitter.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/jitter.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/jitter.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/null.go b/extra/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/null.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/null.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/null.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/options.go b/extra/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/options.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/options.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/backoff/v2/options.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/blackmagic/.gitignore b/extra/server-discovery/vendor/github.com/lestrrat-go/blackmagic/.gitignore similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/blackmagic/.gitignore rename to extra/server-discovery/vendor/github.com/lestrrat-go/blackmagic/.gitignore diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/blackmagic/LICENSE b/extra/server-discovery/vendor/github.com/lestrrat-go/blackmagic/LICENSE similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/blackmagic/LICENSE rename to extra/server-discovery/vendor/github.com/lestrrat-go/blackmagic/LICENSE diff --git a/extra/server-discovery/vendor/github.com/lestrrat-go/blackmagic/README.md b/extra/server-discovery/vendor/github.com/lestrrat-go/blackmagic/README.md new file mode 100644 index 000000000..0356f8a72 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/blackmagic/README.md @@ -0,0 +1,3 @@ +# blackmagic + +Reflect-based black magic. YMMV, and use with caution diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/blackmagic/blackmagic.go b/extra/server-discovery/vendor/github.com/lestrrat-go/blackmagic/blackmagic.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/blackmagic/blackmagic.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/blackmagic/blackmagic.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/httpcc/.gitignore b/extra/server-discovery/vendor/github.com/lestrrat-go/httpcc/.gitignore similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/httpcc/.gitignore rename to extra/server-discovery/vendor/github.com/lestrrat-go/httpcc/.gitignore diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/httpcc/LICENSE b/extra/server-discovery/vendor/github.com/lestrrat-go/httpcc/LICENSE similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/httpcc/LICENSE rename to extra/server-discovery/vendor/github.com/lestrrat-go/httpcc/LICENSE diff --git a/extra/server-discovery/vendor/github.com/lestrrat-go/httpcc/README.md b/extra/server-discovery/vendor/github.com/lestrrat-go/httpcc/README.md new file mode 100644 index 000000000..cf2dcb327 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/httpcc/README.md @@ -0,0 +1,35 @@ +httpcc +====== + +Parses HTTP/1.1 Cache-Control header, and returns a struct that is convenient +for the end-user to do what they will with. + +# Parsing the HTTP Request + +```go +dir, err := httpcc.ParseRequest(req.Header.Get(`Cache-Control`)) +// dir.MaxAge() uint64, bool +// dir.MaxStale() uint64, bool +// dir.MinFresh() uint64, bool +// dir.NoCache() bool +// dir.NoStore() bool +// dir.NoTransform() bool +// dir.OnlyIfCached() bool +// dir.Extensions() map[string]string +``` + +# Parsing the HTTP Response + +```go +directives, err := httpcc.ParseResponse(res.Header.Get(`Cache-Control`)) +// dir.MaxAge() uint64, bool +// dir.MustRevalidate() bool +// dir.NoCache() []string +// dir.NoStore() bool +// dir.NoTransform() bool +// dir.Public() bool +// dir.Private() bool +// dir.SMaxAge() uint64, bool +// dir.Extensions() map[string]string +``` + diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/httpcc/directives.go b/extra/server-discovery/vendor/github.com/lestrrat-go/httpcc/directives.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/httpcc/directives.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/httpcc/directives.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/httpcc/httpcc.go b/extra/server-discovery/vendor/github.com/lestrrat-go/httpcc/httpcc.go similarity index 88% rename from aux/server-discovery/vendor/github.com/lestrrat-go/httpcc/httpcc.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/httpcc/httpcc.go index 454615094..14679f9b1 100644 --- a/aux/server-discovery/vendor/github.com/lestrrat-go/httpcc/httpcc.go +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/httpcc/httpcc.go @@ -2,11 +2,10 @@ package httpcc import ( "bufio" + "fmt" "strconv" "strings" "unicode/utf8" - - "github.com/pkg/errors" ) const ( @@ -103,28 +102,28 @@ func parseDirective(s string, ccd directiveValidator) (*TokenPair, error) { switch ccd.Validate(pair.Name) { case TokenOnly: if v[0] == '"' { - return nil, errors.Errorf(`invalid value for %s (quoted string not allowed)`, pair.Name) + return nil, fmt.Errorf(`invalid value for %s (quoted string not allowed)`, pair.Name) } case QuotedStringOnly: // quoted-string only if v[0] != '"' { - return nil, errors.Errorf(`invalid value for %s (bare token not allowed)`, pair.Name) + return nil, fmt.Errorf(`invalid value for %s (bare token not allowed)`, pair.Name) } tmp, err := strconv.Unquote(v) if err != nil { - return nil, errors.Errorf(`malformed quoted string in token`) + return nil, fmt.Errorf(`malformed quoted string in token`) } v = tmp case AnyTokenValue: if v[0] == '"' { tmp, err := strconv.Unquote(v) if err != nil { - return nil, errors.Errorf(`malformed quoted string in token`) + return nil, fmt.Errorf(`malformed quoted string in token`) } v = tmp } case NoArgument: if len(v) > 0 { - return nil, errors.Errorf(`received argument to directive %s`, pair.Name) + return nil, fmt.Errorf(`received argument to directive %s`, pair.Name) } } @@ -148,7 +147,7 @@ func parseDirectives(s string, p func(string) (*TokenPair, error)) ([]*TokenPair for scanner.Scan() { tok, err := p(scanner.Text()) if err != nil { - return nil, errors.Wrapf(err, `failed to parse token #%d`, len(tokens)+1) + return nil, fmt.Errorf(`failed to parse token #%d: %w`, len(tokens)+1, err) } tokens = append(tokens, tok) } @@ -220,7 +219,7 @@ func ParseRequest(v string) (*RequestDirective, error) { var dir RequestDirective tokens, err := ParseRequestDirectives(v) if err != nil { - return nil, errors.Wrap(err, `failed to parse tokens`) + return nil, fmt.Errorf(`failed to parse tokens: %w`, err) } for _, token := range tokens { @@ -229,19 +228,19 @@ func ParseRequest(v string) (*RequestDirective, error) { case MaxAge: iv, err := strconv.ParseUint(token.Value, 10, 64) if err != nil { - return nil, errors.Wrap(err, `failed to parse max-age`) + return nil, fmt.Errorf(`failed to parse max-age: %w`, err) } dir.maxAge = &iv case MaxStale: iv, err := strconv.ParseUint(token.Value, 10, 64) if err != nil { - return nil, errors.Wrap(err, `failed to parse max-stale`) + return nil, fmt.Errorf(`failed to parse max-stale: %w`, err) } dir.maxStale = &iv case MinFresh: iv, err := strconv.ParseUint(token.Value, 10, 64) if err != nil { - return nil, errors.Wrap(err, `failed to parse min-fresh`) + return nil, fmt.Errorf(`failed to parse min-fresh: %w`, err) } dir.minFresh = &iv case NoCache: @@ -263,7 +262,7 @@ func ParseRequest(v string) (*RequestDirective, error) { func ParseResponse(v string) (*ResponseDirective, error) { tokens, err := ParseResponseDirectives(v) if err != nil { - return nil, errors.Wrap(err, `failed to parse tokens`) + return nil, fmt.Errorf(`failed to parse tokens: %w`, err) } var dir ResponseDirective @@ -274,7 +273,7 @@ func ParseResponse(v string) (*ResponseDirective, error) { case MaxAge: iv, err := strconv.ParseUint(token.Value, 10, 64) if err != nil { - return nil, errors.Wrap(err, `failed to parse max-age`) + return nil, fmt.Errorf(`failed to parse max-age: %w`, err) } dir.maxAge = &iv case NoCache: @@ -300,7 +299,7 @@ func ParseResponse(v string) (*ResponseDirective, error) { case SMaxAge: iv, err := strconv.ParseUint(token.Value, 10, 64) if err != nil { - return nil, errors.Wrap(err, `failed to parse s-maxage`) + return nil, fmt.Errorf(`failed to parse s-maxage: %w`, err) } dir.sMaxAge = &iv default: diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/iter/LICENSE b/extra/server-discovery/vendor/github.com/lestrrat-go/iter/LICENSE similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/iter/LICENSE rename to extra/server-discovery/vendor/github.com/lestrrat-go/iter/LICENSE diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/iter/arrayiter/arrayiter.go b/extra/server-discovery/vendor/github.com/lestrrat-go/iter/arrayiter/arrayiter.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/iter/arrayiter/arrayiter.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/iter/arrayiter/arrayiter.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/iter/mapiter/mapiter.go b/extra/server-discovery/vendor/github.com/lestrrat-go/iter/mapiter/mapiter.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/iter/mapiter/mapiter.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/iter/mapiter/mapiter.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/.gitignore b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/.gitignore similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/.gitignore rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/.gitignore diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/.golangci.yml b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/.golangci.yml similarity index 81% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/.golangci.yml rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/.golangci.yml index b5afb667a..f2b084529 100644 --- a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/.golangci.yml +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/.golangci.yml @@ -28,11 +28,14 @@ linters: - gofumpt - golint #deprecated - gomnd + - gomoddirectives # I think it's broken - gosec - govet - interfacer # deprecated - ifshort + - ireturn # No, I _LIKE_ returning interfaces - lll + - maintidx # Do this in code review - maligned # deprecated - makezero - nakedret @@ -42,7 +45,8 @@ linters: - scopelint # deprecated - tagliatelle - testpackage - - thelper + - thelper # Tests are fine + - varnamelen # Short names are ok - wrapcheck - wsl @@ -63,9 +67,15 @@ issues: - path: internal/codegen/codegen.go linters: - errcheck + - path: internal/jwxtest/jwxtest.go + linters: + - errcheck + - errchkjson + - forcetypeassert - path: /*_test.go linters: - errcheck + - errchkjson - forcetypeassert - path: /*_example_test.go linters: diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/Changes b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/Changes similarity index 97% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/Changes rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/Changes index 60b34b8ab..c1c6db298 100644 --- a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/Changes +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/Changes @@ -1,6 +1,28 @@ Changes ======= +v1.2.23 13 Apr 2022 +[Bug fixes] + * [jwk] jwk.AutoRefresh had a race condition when `Configure()` was + called concurrently (#686) + (It has been patched correctly, but we may come back to revisit + the design choices in the near future) + +v1.2.22 08 Apr 2022 +[Bug fixes] + * [jws] jws.Verify was ignoring the `b64` header when it was present + in the protected headers (#681). Now the following should work: + + jws.Sign(..., jws.WithDetachedPayload(payload)) + // previously payload had to be base64 encoded + jws.Verify(..., jws.WithDetachedPayload(payload)) + + (note: v2 branch was not affected) + +v1.2.21 30 Mar 2022 +[Bug fixes] + * [jwk] RSA keys without p and q can now be parsed. + v1.2.20 03 Mar 2022 [Miscellaneous] * Dependency on golang.org/x/crypto has been upgraded to diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/LICENSE b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/LICENSE similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/LICENSE rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/LICENSE diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/Makefile b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/Makefile similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/Makefile rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/Makefile diff --git a/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/README.md b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/README.md new file mode 100644 index 000000000..89ce8d85d --- /dev/null +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/README.md @@ -0,0 +1,134 @@ +# github.com/lestrrat-go/jwx ![](https://github.com/lestrrat-go/jwx/workflows/CI/badge.svg) [![Go Reference](https://pkg.go.dev/badge/github.com/lestrrat-go/jwx.svg)](https://pkg.go.dev/github.com/lestrrat-go/jwx) [![codecov.io](http://codecov.io/github/lestrrat-go/jwx/coverage.svg?branch=main)](http://codecov.io/github/lestrrat-go/jwx?branch=main) + +Various libraries implementing various JWx technologies. Please click on the package names in the table below to find the synopsis/description for each package. + +If you are using this module in your product or your company, please add your product and/or company name in the [Wiki](https://github.com/lestrrat-go/jwx/wiki/Users)! It really helps keeping up our motivation. + +| Package name | Notes | +|-----------------------------------------------------------|-------------------------------------------------| +| [jwt](https://github.com/lestrrat-go/jwx/tree/main/jwt) | [RFC 7519](https://tools.ietf.org/html/rfc7519) | +| [jwk](https://github.com/lestrrat-go/jwx/tree/main/jwk) | [RFC 7517](https://tools.ietf.org/html/rfc7517) + [RFC 7638](https://tools.ietf.org/html/rfc7638) | +| [jwa](https://github.com/lestrrat-go/jwx/tree/main/jwa) | [RFC 7518](https://tools.ietf.org/html/rfc7518) | +| [jws](https://github.com/lestrrat-go/jwx/tree/main/jws) | [RFC 7515](https://tools.ietf.org/html/rfc7515) + [RFC 7797](https://tools.ietf.org/html/rfc7797) | +| [jwe](https://github.com/lestrrat-go/jwx/tree/main/jwe) | [RFC 7516](https://tools.ietf.org/html/rfc7516) | + +# How to Use + +* [API documentation](https://pkg.go.dev/github.com/lestrrat-go/jwx) +* [How-to style documentation](./docs) +* [Runnable Examples](./examples) + +# Description + +## History + +My goal was to write a server that heavily uses JWK and JWT. At first glance +the libraries that already exist seemed sufficient, but soon I realized that + +1. To completely implement the protocols, I needed the entire JWT, JWK, JWS, JWE (and JWA, by necessity). +2. Most of the libraries that existed only deal with a subset of the various JWx specifications that were necessary to implement their specific needs + +For example, a certain library looks like it had most of JWS, JWE, JWK covered, but then it lacked the ability to include private claims in its JWT responses. Another library had support of all the private claims, but completely lacked in its flexibility to generate various different response formats. + +Because I was writing the server side (and the client side for testing), I needed the *entire* JOSE toolset to properly implement my server, **and** they needed to be *flexible* enough to fulfill the entire spec that I was writing. + +So here's `github.com/lestrrat-go/jwx`. This library is extensible, customizable, and hopefully well organized to the point that it is easy for you to slice and dice it. + +## Why would I use this library? + +There are several other major Go modules that handle JWT and related data formats, +so why should you use this library? + +From a purely functional perspective, the only major difference is this: +Whereas most other projects only deal with what they seem necessary to handle +JWTs, this module handles the **_entire_** spectrum of JWS, JWE, JWK, and JWT. + +That is, if you need to not only parse JWTs, but also to control JWKs, or +if you need to handle payloads that are NOT JWTs, you should probably consider +using this module. You should also note that JWT is built _on top_ of those +other technologies. You simply cannot have a complete JWT package without +implementing the entirety of JWS/JWS/JWK, which this library does. + +Next, from an implementation perspective, this module differs significantly +from others in that it tries very hard to expose only the APIs, and not the +internal data. For example, individual JWT claims are not accessible through +struct field lookups. You need to use one of the getter methods. + +This is because this library takes the stance that the end user is fully capable +and even willing to shoot themselves on the foot when presented with a lax +API. By making sure that users do not have access to open structs, we can protect +users from doing silly things like creating _incomplete_ structs, or access the +structs concurrently without any protection. This structure also allows +us to put extra smarts in the structs, such as doing the right thing when +you want to parse / write custom fields (this module does not require the user +to specify alternate structs to parse objects with custom fields) + +In the end I think it comes down to your usage pattern, and priorities. +Some general guidelines that come to mind are: + +* If you want a single library to handle everything JWx, such as using JWE, JWK, JWS, handling [auto-refreshing JWKs](https://github.com/lestrrat-go/jwx/blob/main/docs/04-jwk.md#auto-refreshing-remote-keys), use this module. +* If you want to honor all possible custom fields transparently, use this module. +* If you want a standardized clean API, use this module. + +Otherwise, feel free to choose something else. + +# Command Line Tool + +Since v1.1.1 we have a command line tool `jwx` (*). With `jwx` you can create JWKs (from PEM files, even), sign and verify JWS message, encrypt and decrypt JWE messages, etc. + +(*) Okay, it existed since a long time ago, but it was never useful. + +## Installation + +``` +go install github.com/lestrrat-go/jwx/cmd/jwx +``` + +# Caveats + +## Backwards Compatibility Notice + +### Users of github.com/lestrrat/go-jwx + +Uh, why are you using such an ancient version? You know that repository is archived for a reason, yeah? Please use the new version. + +### Pre-1.0.0 users + +The API has been reworked quite substantially between pre- and post 1.0.0 releases. Please check out the [Changes](./Changes) file (or the [diff](https://github.com/lestrrat-go/jwx/compare/v0.9.2...v1.0.0), if you are into that sort of thing) + +### v1.0.x users + +The API has gone under some changes for v1.1.0. If you are upgrading, you might want to read the relevant parts in the [Changes](./Changes) file. + +# Contributions + +## Issues + +For bug reports and feature requests, please try to follow the issue templates as much as possible. +For either bug reports or feature requests, failing tests are even better. + +## Pull Requests + +Please make sure to include tests that excercise the changes you made. + +If you are editing auto-generated files (those files with the `_gen.go` suffix, please make sure that you do the following: + +1. Edit the generator, not the generated files (e.g. internal/cmd/genreadfile/main.go) +2. Run `make generate` (or `go generate`) to generate the new code +3. Commit _both_ the generator _and_ the generated files + +## Discussions / Usage + +Please try [discussions](https://github.com/lestrrat-go/jwx/discussions) first. + +# Related Modules + +* [github.com/jwx-go/crypto-signer/gcp](https://github.com/jwx-go/crypto-signer/tree/main/gcp) - GCP KMS wrapper that implements [`crypto.Signer`](https://pkg.go.dev/crypto#Signer) +* [github.com/jwx-go/crypto-signer/aws](https://github.com/jwx-go/crypto-signer/tree/main/aws) - AWS KMS wrapper that implements [`crypto.Signer`](https://pkg.go.dev/crypto#Signer) + +# Credits + +* Initial work on this library was generously sponsored by HDE Inc (https://www.hde.co.jp) +* Lots of code, especially JWE was taken from go-jose library (https://github.com/square/go-jose) +* Lots of individual contributors have helped this project over the years. Thank each and everyone of you very much. + diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/format.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/format.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/format.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/format.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/formatkind_string_gen.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/formatkind_string_gen.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/formatkind_string_gen.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/formatkind_string_gen.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/gen.sh b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/gen.sh similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/gen.sh rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/gen.sh diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/base64/base64.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/base64/base64.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/base64/base64.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/base64/base64.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/ecutil/ecutil.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/ecutil/ecutil.go similarity index 99% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/ecutil/ecutil.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/ecutil/ecutil.go index 1d79aeb37..128666913 100644 --- a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/ecutil/ecutil.go +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/ecutil/ecutil.go @@ -61,6 +61,7 @@ var ecpointBufferPool = sync.Pool{ } func getCrvFixedBuffer(size int) []byte { + //nolint:forcetypeassert buf := *(ecpointBufferPool.Get().(*[]byte)) if size > ec521BufferSize && cap(buf) < size { buf = append(buf, make([]byte, size-cap(buf))...) diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/iter/mapiter.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/iter/mapiter.go similarity index 97% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/iter/mapiter.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/iter/mapiter.go index 184d3f0c1..f7ddc1189 100644 --- a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/iter/mapiter.go +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/iter/mapiter.go @@ -22,6 +22,7 @@ func (fn MapVisitorFunc) Visit(s string, v interface{}) error { func WalkMap(ctx context.Context, src mapiter.Source, visitor MapVisitor) error { return mapiter.Walk(ctx, src, mapiter.VisitorFunc(func(k, v interface{}) error { + //nolint:forcetypeassert return visitor.Visit(k.(string), v) })) } diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/json/goccy.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/json/goccy.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/json/goccy.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/json/goccy.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/json/json.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/json/json.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/json/json.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/json/json.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/json/registry.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/json/registry.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/json/registry.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/json/registry.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/json/stdlib.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/json/stdlib.go similarity index 97% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/json/stdlib.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/json/stdlib.go index 0d0c5ce3d..62b1a5ff5 100644 --- a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/json/stdlib.go +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/json/stdlib.go @@ -1,3 +1,4 @@ +//go:build !jwx_goccy // +build !jwx_goccy package json diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/keyconv/keyconv.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/keyconv/keyconv.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/keyconv/keyconv.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/keyconv/keyconv.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/pool/pool.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/pool/pool.go similarity index 92% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/pool/pool.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/pool/pool.go index 09a4af8b2..fae560b7c 100644 --- a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/pool/pool.go +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/internal/pool/pool.go @@ -15,6 +15,7 @@ func allocBytesBuffer() interface{} { } func GetBytesBuffer() *bytes.Buffer { + //nolint:forcetypeassert return bytesBufferPool.Get().(*bytes.Buffer) } @@ -32,6 +33,7 @@ func allocBigInt() interface{} { } func GetBigInt() *big.Int { + //nolint:forcetypeassert return bigIntPool.Get().(*big.Int) } @@ -48,6 +50,7 @@ func allocKeyToErrorMap() interface{} { } func GetKeyToErrorMap() map[string]error { + //nolint:forcetypeassert return keyToErrorMapPool.Get().(map[string]error) } diff --git a/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/README.md b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/README.md new file mode 100644 index 000000000..eafb291f7 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/README.md @@ -0,0 +1,3 @@ +# JWA [![Go Reference](https://pkg.go.dev/badge/github.com/lestrrat-go/jwx/jwa.svg)](https://pkg.go.dev/github.com/lestrrat-go/jwx/jwa) + +Package [github.com/lestrrat-go/jwx/jwa](./jwa) defines the various algorithm described in [RFC7518](https://tools.ietf.org/html/rfc7518) diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/compression_gen.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/compression_gen.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/compression_gen.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/compression_gen.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/content_encryption_gen.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/content_encryption_gen.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/content_encryption_gen.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/content_encryption_gen.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/elliptic_gen.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/elliptic_gen.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/elliptic_gen.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/elliptic_gen.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/gen.sh b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/gen.sh similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/gen.sh rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/gen.sh diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/jwa.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/jwa.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/jwa.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/jwa.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/key_encryption_gen.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/key_encryption_gen.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/key_encryption_gen.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/key_encryption_gen.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/key_type_gen.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/key_type_gen.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/key_type_gen.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/key_type_gen.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/secp2561k.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/secp2561k.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/secp2561k.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/secp2561k.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/signature_gen.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/signature_gen.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/signature_gen.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwa/signature_gen.go diff --git a/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/README.md b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/README.md new file mode 100644 index 000000000..216c53362 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/README.md @@ -0,0 +1,94 @@ +# JWE [![Go Reference](https://pkg.go.dev/badge/github.com/lestrrat-go/jwx/jwe.svg)](https://pkg.go.dev/github.com/lestrrat-go/jwx/jwe) + +Package jwe implements JWE as described in [RFC7516](https://tools.ietf.org/html/rfc7516) + +* Encrypt and Decrypt arbitrary data +* Content compression and decompression +* Add arbitrary fields in the JWE header object + +How-to style documentation can be found in the [docs directory](../docs). + +Examples are located in the examples directory ([jwe_example_test.go](../examples/jwe_example_test.go)) + +Supported key encryption algorithm: + +| Algorithm | Supported? | Constant in [jwa](../jwa) | +|:-----------------------------------------|:-----------|:-------------------------| +| RSA-PKCS1v1.5 | YES | jwa.RSA1_5 | +| RSA-OAEP-SHA1 | YES | jwa.RSA_OAEP | +| RSA-OAEP-SHA256 | YES | jwa.RSA_OAEP_256 | +| AES key wrap (128) | YES | jwa.A128KW | +| AES key wrap (192) | YES | jwa.A192KW | +| AES key wrap (256) | YES | jwa.A256KW | +| Direct encryption | YES (1) | jwa.DIRECT | +| ECDH-ES | YES (1) | jwa.ECDH_ES | +| ECDH-ES + AES key wrap (128) | YES | jwa.ECDH_ES_A128KW | +| ECDH-ES + AES key wrap (192) | YES | jwa.ECDH_ES_A192KW | +| ECDH-ES + AES key wrap (256) | YES | jwa.ECDH_ES_A256KW | +| AES-GCM key wrap (128) | YES | jwa.A128GCMKW | +| AES-GCM key wrap (192) | YES | jwa.A192GCMKW | +| AES-GCM key wrap (256) | YES | jwa.A256GCMKW | +| PBES2 + HMAC-SHA256 + AES key wrap (128) | YES | jwa.PBES2_HS256_A128KW | +| PBES2 + HMAC-SHA384 + AES key wrap (192) | YES | jwa.PBES2_HS384_A192KW | +| PBES2 + HMAC-SHA512 + AES key wrap (256) | YES | jwa.PBES2_HS512_A256KW | + +* Note 1: Single-recipient only + +Supported content encryption algorithm: + +| Algorithm | Supported? | Constant in [jwa](../jwa) | +|:----------------------------|:-----------|:--------------------------| +| AES-CBC + HMAC-SHA256 (128) | YES | jwa.A128CBC_HS256 | +| AES-CBC + HMAC-SHA384 (192) | YES | jwa.A192CBC_HS384 | +| AES-CBC + HMAC-SHA512 (256) | YES | jwa.A256CBC_HS512 | +| AES-GCM (128) | YES | jwa.A128GCM | +| AES-GCM (192) | YES | jwa.A192GCM | +| AES-GCM (256) | YES | jwa.A256GCM | + +# SYNOPSIS + +## Encrypt data + +```go +func ExampleEncrypt() { + privkey, err := rsa.GenerateKey(rand.Reader, 2048) + if err != nil { + log.Printf("failed to generate private key: %s", err) + return + } + + payload := []byte("Lorem Ipsum") + + encrypted, err := jwe.Encrypt(payload, jwa.RSA1_5, &privkey.PublicKey, jwa.A128CBC_HS256, jwa.NoCompress) + if err != nil { + log.Printf("failed to encrypt payload: %s", err) + return + } + _ = encrypted + // OUTPUT: +} +``` + +## Decrypt data + +```go +func ExampleDecrypt() { + privkey, encrypted, err := exampleGenPayload() + if err != nil { + log.Printf("failed to generate encrypted payload: %s", err) + return + } + + decrypted, err := jwe.Decrypt(encrypted, jwa.RSA1_5, privkey) + if err != nil { + log.Printf("failed to decrypt: %s", err) + return + } + + if string(decrypted) != "Lorem Ipsum" { + log.Printf("WHAT?!") + return + } + // OUTPUT: +} +``` diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/compress.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/compress.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/compress.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/compress.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/decrypt.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/decrypt.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/decrypt.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/decrypt.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/encrypt.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/encrypt.go similarity index 99% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/encrypt.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/encrypt.go index 0b1b40bf4..230b5aba9 100644 --- a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/encrypt.go +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/encrypt.go @@ -16,6 +16,7 @@ var encryptCtxPool = sync.Pool{ } func getEncryptCtx() *encryptCtx { + //nolint:forcetypeassert return encryptCtxPool.Get().(*encryptCtx) } diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/gen.sh b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/gen.sh similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/gen.sh rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/gen.sh diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/headers.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/headers.go similarity index 94% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/headers.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/headers.go index 7d8efd634..eacbfda01 100644 --- a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/headers.go +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/headers.go @@ -71,8 +71,10 @@ func (h *stdHeaders) Clone(ctx context.Context) (Headers, error) { func (h *stdHeaders) Copy(ctx context.Context, dst Headers) error { for _, pair := range h.makePairs() { - if err := dst.Set(pair.Key.(string), pair.Value); err != nil { - return errors.Wrapf(err, `failed to set header`) + //nolint:forcetypeassert + key := pair.Key.(string) + if err := dst.Set(key, pair.Value); err != nil { + return errors.Wrapf(err, `failed to set header %q`, key) } } return nil diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/headers_gen.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/headers_gen.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/headers_gen.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/headers_gen.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/interface.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/interface.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/interface.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/interface.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/aescbc/aescbc.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/aescbc/aescbc.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/aescbc/aescbc.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/aescbc/aescbc.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/cipher/cipher.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/cipher/cipher.go similarity index 96% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/cipher/cipher.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/cipher/cipher.go index 586feff89..4581f648b 100644 --- a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/cipher/cipher.go +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/cipher/cipher.go @@ -96,10 +96,8 @@ func (c AesContentCipher) Encrypt(cek, plaintext, aad []byte) (iv, ciphertext, t switch e := e.(type) { case error: err = e - case string: - err = errors.New(e) default: - err = fmt.Errorf("%s", e) + err = errors.Errorf("%s", e) } err = errors.Wrap(err, "failed to encrypt") } @@ -142,10 +140,8 @@ func (c AesContentCipher) Decrypt(cek, iv, ciphertxt, tag, aad []byte) (plaintex switch e := e.(type) { case error: err = e - case string: - err = errors.New(e) default: - err = fmt.Errorf("%s", e) + err = errors.Errorf("%s", e) } err = errors.Wrap(err, "failed to decrypt") return diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/cipher/interface.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/cipher/interface.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/cipher/interface.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/cipher/interface.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/concatkdf/concatkdf.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/concatkdf/concatkdf.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/concatkdf/concatkdf.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/concatkdf/concatkdf.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/content_crypt/content_crypt.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/content_crypt/content_crypt.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/content_crypt/content_crypt.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/content_crypt/content_crypt.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/content_crypt/interface.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/content_crypt/interface.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/content_crypt/interface.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/content_crypt/interface.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/keyenc/interface.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/keyenc/interface.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/keyenc/interface.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/keyenc/interface.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/keyenc/keyenc.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/keyenc/keyenc.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/keyenc/keyenc.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/keyenc/keyenc.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/keygen/interface.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/keygen/interface.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/keygen/interface.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/keygen/interface.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/keygen/keygen.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/keygen/keygen.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/keygen/keygen.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/internal/keygen/keygen.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/io.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/io.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/io.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/io.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/jwe.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/jwe.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/jwe.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/jwe.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/message.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/message.go similarity index 99% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/message.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/message.go index d3dc2535b..6609a6924 100644 --- a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/message.go +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/message.go @@ -395,8 +395,10 @@ func (m *Message) UnmarshalJSON(buf []byte) error { m.rawProtectedHeaders = base64.Encode(protectedHeadersRaw) } - if !proxy.UnprotectedHeaders.(isZeroer).isZero() { - m.unprotectedHeaders = proxy.UnprotectedHeaders + if iz, ok := proxy.UnprotectedHeaders.(isZeroer); ok { + if !iz.isZero() { + m.unprotectedHeaders = proxy.UnprotectedHeaders + } } if len(m.recipients) == 0 { diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/options.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/options.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/options.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/options.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/serializer.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/serializer.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/serializer.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwe/serializer.go diff --git a/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/README.md b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/README.md new file mode 100644 index 000000000..cc38e75f1 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/README.md @@ -0,0 +1,274 @@ +# JWK [![Go Reference](https://pkg.go.dev/badge/github.com/lestrrat-go/jwx/jwk.svg)](https://pkg.go.dev/github.com/lestrrat-go/jwx/jwk) + +Package jwk implements JWK as described in [RFC7517](https://tools.ietf.org/html/rfc7517) + +* Parse and work with RSA/EC/Symmetric/OKP JWK types + * Convert to and from JSON + * Convert to and from raw key types (e.g. *rsa.PrivateKey) +* Ability to keep a JWKS fresh. + +How-to style documentation can be found in the [docs directory](../docs). + +Examples are located in the examples directory ([jwk_example_test.go](../examples/jwk_example_test.go)) + +Supported key types: + +| kty | Curve | Go Key Type | +|:----|:------------------------|:----------------------------------------------| +| RSA | N/A | rsa.PrivateKey / rsa.PublicKey (2) | +| EC | P-256
P-384
P-521
secp256k1 (1) | ecdsa.PrivateKey / ecdsa.PublicKey (2) | +| oct | N/A | []byte | +| OKP | Ed25519 (1) | ed25519.PrivateKey / ed25519.PublicKey (2) | +| | X25519 (1) | (jwx/)x25519.PrivateKey / x25519.PublicKey (2)| + +* Note 1: Experimental +* Note 2: Either value or pointers accepted (e.g. rsa.PrivateKey or *rsa.PrivateKey) + +# SYNOPSIS + +## Parse a JWK or a JWK set + +```go + // Parse a single JWK key. + key, err := jwk.ParseKey(...) + + // Parse a JWK set (or a single JWK key) + set, err := jwk.Parse(...) +``` + +## Create JWK keys from raw keys + +```go +func ExampleNew() { + // New returns different underlying types of jwk.Key objects + // depending on the input value. + + // []byte -> jwk.SymmetricKey + { + raw := []byte("Lorem Ipsum") + key, err := jwk.New(raw) + if err != nil { + fmt.Printf("failed to create symmetric key: %s\n", err) + return + } + if _, ok := key.(jwk.SymmetricKey); !ok { + fmt.Printf("expected jwk.SymmetricKey, got %T\n", key) + return + } + } + + // *rsa.PrivateKey -> jwk.RSAPrivateKey + // *rsa.PublicKey -> jwk.RSAPublicKey + { + raw, err := rsa.GenerateKey(rand.Reader, 2048) + if err != nil { + fmt.Printf("failed to generate new RSA privatre key: %s\n", err) + return + } + + key, err := jwk.New(raw) + if err != nil { + fmt.Printf("failed to create symmetric key: %s\n", err) + return + } + if _, ok := key.(jwk.RSAPrivateKey); !ok { + fmt.Printf("expected jwk.SymmetricKey, got %T\n", key) + return + } + // PublicKey is omitted for brevity + } + + // *ecdsa.PrivateKey -> jwk.ECDSAPrivateKey + // *ecdsa.PublicKey -> jwk.ECDSAPublicKey + { + raw, err := ecdsa.GenerateKey(elliptic.P384(), rand.Reader) + if err != nil { + fmt.Printf("failed to generate new ECDSA privatre key: %s\n", err) + return + } + + key, err := jwk.New(raw) + if err != nil { + fmt.Printf("failed to create symmetric key: %s\n", err) + return + } + if _, ok := key.(jwk.ECDSAPrivateKey); !ok { + fmt.Printf("expected jwk.SymmetricKey, got %T\n", key) + return + } + // PublicKey is omitted for brevity + } + + // OUTPUT: +} +``` + +# Get the JSON representation of a key + +```go +func ExampleMarshalJSON() { + // to get the same values every time, we need to create a static source + // of "randomness" + rdr := bytes.NewReader([]byte("01234567890123456789012345678901234567890123456789ABCDEF")) + raw, err := ecdsa.GenerateKey(elliptic.P384(), rdr) + if err != nil { + fmt.Printf("failed to generate new ECDSA privatre key: %s\n", err) + return + } + + key, err := jwk.New(raw) + if err != nil { + fmt.Printf("failed to create symmetric key: %s\n", err) + return + } + if _, ok := key.(jwk.ECDSAPrivateKey); !ok { + fmt.Printf("expected jwk.SymmetricKey, got %T\n", key) + return + } + + key.Set(jwk.KeyIDKey, "mykey") + + buf, err := json.MarshalIndent(key, "", " ") + if err != nil { + fmt.Printf("failed to marshal key into JSON: %s\n", err) + return + } + fmt.Printf("%s\n", buf) + + // OUTPUT: + // { + // "kty": "EC", + // "crv": "P-384", + // "d": "ODkwMTIzNDU2Nzg5MDEyMz7deMbyLt8g4cjcxozuIoygLLlAeoQ1AfM9TSvxkFHJ", + // "kid": "mykey", + // "x": "gvvRMqm1w5aHn7sVNA2QUJeOVcedUnmiug6VhU834gzS9k87crVwu9dz7uLOdoQl", + // "y": "7fVF7b6J_6_g6Wu9RuJw8geWxEi5ja9Gp2TSdELm5u2E-M7IF-bsxqcdOj3n1n7N" + // } +} +``` + +# Auto-Refresh a key during a long running process + +```go +func ExampleAutoRefresh() { + ctx, cancel := context.WithCancel(context.Background()) + + const googleCerts = `https://www.googleapis.com/oauth2/v3/certs` + ar := jwk.NewAutoRefresh(ctx) + + // Tell *jwk.AutoRefresh that we only want to refresh this JWKS + // when it needs to (based on Cache-Control or Expires header from + // the HTTP response). If the calculated minimum refresh interval is less + // than 15 minutes, don't go refreshing any earlier than 15 minutes. + ar.Configure(googleCerts, jwk.WithMinRefreshInterval(15*time.Minute)) + + // Refresh the JWKS once before getting into the main loop. + // This allows you to check if the JWKS is available before we start + // a long-running program + _, err := ar.Refresh(ctx, googleCerts) + if err != nil { + fmt.Printf("failed to refresh google JWKS: %s\n", err) + return + } + + // Pretend that this is your program's main loop +MAIN: + for { + select { + case <-ctx.Done(): + break MAIN + default: + } + keyset, err := ar.Fetch(ctx, googleCerts) + if err != nil { + fmt.Printf("failed to fetch google JWKS: %s\n", err) + return + } + _ = keyset + + // Do interesting stuff with the keyset... but here, we just + // sleep for a bit + time.Sleep(time.Second) + + // Because we're a dummy program, we just cancel the loop now. + // If this were a real program, you prosumably loop forever + cancel() + } + // OUTPUT: +} +``` + +Parse and use a JWK key: + +```go + +import ( + "encoding/json" + "log" + + "github.com/lestrrat-go/jwx/jwk" +) + +func main() { + set, err := jwk.Fetch(context.Background(), "https://www.googleapis.com/oauth2/v3/certs") + if err != nil { + log.Printf("failed to parse JWK: %s", err) + return + } + + // Key sets can be serialized back to JSON + { + jsonbuf, err := json.Marshal(set) + if err != nil { + log.Printf("failed to marshal key set into JSON: %s", err) + return + } + log.Printf("%s", jsonbuf) + } + + for it := set.Iterate(context.Background()); it.Next(context.Background()); { + pair := it.Pair() + key := pair.Value.(jwk.Key) + + var rawkey interface{} // This is the raw key, like *rsa.PrivateKey or *ecdsa.PrivateKey + if err := key.Raw(&rawkey); err != nil { + log.Printf("failed to create public key: %s", err) + return + } + // Use rawkey for jws.Verify() or whatever. + _ = rawkey + + // You can create jwk.Key from a raw key, too + fromRawKey, err := jwk.New(rawkey) + + + // Keys can be serialized back to JSON + jsonbuf, err := json.Marshal(key) + if err != nil { + log.Printf("failed to marshal key into JSON: %s", err) + return + } + log.Printf("%s", jsonbuf) + + // If you know the underlying Key type (RSA, EC, Symmetric), you can + // create an empy instance first + // key := jwk.NewRSAPrivateKey() + // ..and then use json.Unmarshal + // json.Unmarshal(key, jsonbuf) + // + // but if you don't know the type first, you have an abstract type + // jwk.Key, which can't be used as the first argument to json.Unmarshal + // + // In this case, use jwk.Parse() + fromJsonKey, err := jwk.Parse(jsonbuf) + if err != nil { + log.Printf("failed to parse json: %s", err) + return + } + _ = fromJsonKey + _ = fromRawKey + } +} +``` + + diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/certchain.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/certchain.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/certchain.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/certchain.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/ecdsa.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/ecdsa.go similarity index 96% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/ecdsa.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/ecdsa.go index 1f011ce78..19e0f8847 100644 --- a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/ecdsa.go +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/ecdsa.go @@ -149,8 +149,10 @@ func makeECDSAPublicKey(v interface { case ECDSADKey: continue default: - if err := newKey.Set(pair.Key.(string), pair.Value); err != nil { - return nil, errors.Wrapf(err, `failed to set field %s`, pair.Key) + //nolint:forcetypeassert + key := pair.Key.(string) + if err := newKey.Set(key, pair.Value); err != nil { + return nil, errors.Wrapf(err, `failed to set field %q`, key) } } } diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/ecdsa_gen.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/ecdsa_gen.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/ecdsa_gen.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/ecdsa_gen.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/es256k.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/es256k.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/es256k.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/es256k.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/gen.sh b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/gen.sh similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/gen.sh rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/gen.sh diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/interface.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/interface.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/interface.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/interface.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/interface_gen.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/interface_gen.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/interface_gen.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/interface_gen.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/io.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/io.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/io.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/io.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/jwk.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/jwk.go similarity index 99% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/jwk.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/jwk.go index 84e3766c4..0ef377c95 100644 --- a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/jwk.go +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/jwk.go @@ -624,8 +624,10 @@ func cloneKey(src Key) (Key, error) { } for _, pair := range src.makePairs() { - if err := dst.Set(pair.Key.(string), pair.Value); err != nil { - return nil, errors.Wrapf(err, `failed to set %s`, pair.Key.(string)) + //nolint:forcetypeassert + key := pair.Key.(string) + if err := dst.Set(key, pair.Value); err != nil { + return nil, errors.Wrapf(err, `failed to set %q`, key) } } return dst, nil diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/key_ops.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/key_ops.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/key_ops.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/key_ops.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/okp.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/okp.go similarity index 94% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/okp.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/okp.go index 565fb448f..6d99bd6fe 100644 --- a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/okp.go +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/okp.go @@ -85,6 +85,7 @@ func buildOKPPrivateKey(alg jwa.EllipticCurveAlgorithm, xbuf []byte, dbuf []byte switch alg { case jwa.Ed25519: ret := ed25519.NewKeyFromSeed(dbuf) + //nolint:forcetypeassert if !bytes.Equal(xbuf, ret.Public().(ed25519.PublicKey)) { return nil, errors.Errorf(`invalid x value given d value`) } @@ -94,6 +95,7 @@ func buildOKPPrivateKey(alg jwa.EllipticCurveAlgorithm, xbuf []byte, dbuf []byte if err != nil { return nil, errors.Wrap(err, `unable to construct x25519 private key from seed`) } + //nolint:forcetypeassert if !bytes.Equal(xbuf, ret.Public().(x25519.PublicKey)) { return nil, errors.Errorf(`invalid x value given d value`) } @@ -126,8 +128,10 @@ func makeOKPPublicKey(v interface { case OKPDKey: continue default: - if err := newKey.Set(pair.Key.(string), pair.Value); err != nil { - return nil, errors.Wrapf(err, `failed to set field %s`, pair.Key) + //nolint:forcetypeassert + key := pair.Key.(string) + if err := newKey.Set(key, pair.Value); err != nil { + return nil, errors.Wrapf(err, `failed to set field %q`, key) } } } diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/okp_gen.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/okp_gen.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/okp_gen.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/okp_gen.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/option.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/option.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/option.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/option.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/refresh.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/refresh.go similarity index 99% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/refresh.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/refresh.go index 051263259..0a8f75452 100644 --- a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/refresh.go +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/refresh.go @@ -489,9 +489,9 @@ func (af *AutoRefresh) refreshLoop(ctx context.Context) { func (af *AutoRefresh) doRefreshRequest(ctx context.Context, url string, enableBackoff bool) error { af.muRegistry.RLock() t, ok := af.registry[url] - af.muRegistry.RUnlock() if !ok { + af.muRegistry.RUnlock() return errors.Errorf(`url "%s" is not registered`, url) } @@ -505,6 +505,7 @@ func (af *AutoRefresh) doRefreshRequest(ctx context.Context, url string, enableB if t.wl != nil { fetchOptions = append(fetchOptions, WithFetchWhitelist(t.wl)) } + af.muRegistry.RUnlock() res, err := fetch(ctx, url, fetchOptions...) if err == nil { @@ -520,7 +521,9 @@ func (af *AutoRefresh) doRefreshRequest(ctx context.Context, url string, enableB af.muCache.Lock() af.cache[url] = keyset af.muCache.Unlock() + af.muRegistry.RLock() nextInterval := calculateRefreshDuration(res, t.refreshInterval, t.minRefreshInterval) + af.muRegistry.RUnlock() rtr := &resetTimerReq{ t: t, d: nextInterval, @@ -532,8 +535,10 @@ func (af *AutoRefresh) doRefreshRequest(ctx context.Context, url string, enableB } now := time.Now() + af.muRegistry.Lock() t.lastRefresh = now.Local() t.nextRefresh = now.Add(nextInterval).Local() + af.muRegistry.Unlock() return nil } err = parseErr diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/rsa.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/rsa.go similarity index 87% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/rsa.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/rsa.go index 0c80e737c..1a31caa7a 100644 --- a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/rsa.go +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/rsa.go @@ -4,6 +4,7 @@ import ( "crypto" "crypto/rsa" "encoding/binary" + "fmt" "math/big" "github.com/lestrrat-go/blackmagic" @@ -22,21 +23,27 @@ func (k *rsaPrivateKey) FromRaw(rawKey *rsa.PrivateKey) error { } k.d = d - if len(rawKey.Primes) < 2 { - return errors.Errorf(`invalid number of primes in rsa.PrivateKey: need 2, got %d`, len(rawKey.Primes)) + l := len(rawKey.Primes) + + if l < 0 /* I know, I'm being paranoid */ || l > 2 { + return fmt.Errorf(`invalid number of primes in rsa.PrivateKey: need 0 to 2, but got %d`, len(rawKey.Primes)) } - p, err := bigIntToBytes(rawKey.Primes[0]) - if err != nil { - return errors.Wrap(err, `invalid rsa.PrivateKey`) + if l > 0 { + p, err := bigIntToBytes(rawKey.Primes[0]) + if err != nil { + return fmt.Errorf(`invalid rsa.PrivateKey: %w`, err) + } + k.p = p } - k.p = p - q, err := bigIntToBytes(rawKey.Primes[1]) - if err != nil { - return errors.Wrap(err, `invalid rsa.PrivateKey`) + if l > 1 { + q, err := bigIntToBytes(rawKey.Primes[1]) + if err != nil { + return fmt.Errorf(`invalid rsa.PrivateKey: %w`, err) + } + k.q = q } - k.q = q // dp, dq, qi are optional values if v, err := bigIntToBytes(rawKey.Precomputed.Dp); err == nil { @@ -176,8 +183,10 @@ func makeRSAPublicKey(v interface { case RSADKey, RSADPKey, RSADQKey, RSAPKey, RSAQKey, RSAQIKey: continue default: - if err := newKey.Set(pair.Key.(string), pair.Value); err != nil { - return nil, errors.Wrapf(err, `failed to set field %s`, pair.Key) + //nolint:forcetypeassert + key := pair.Key.(string) + if err := newKey.Set(key, pair.Value); err != nil { + return nil, errors.Wrapf(err, `failed to set field %q`, key) } } } diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/rsa_gen.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/rsa_gen.go similarity index 99% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/rsa_gen.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/rsa_gen.go index 21de3bf1e..383cb34ca 100644 --- a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/rsa_gen.go +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/rsa_gen.go @@ -1180,12 +1180,6 @@ LOOP: if h.n == nil { return errors.Errorf(`required field n is missing`) } - if h.p == nil { - return errors.Errorf(`required field p is missing`) - } - if h.q == nil { - return errors.Errorf(`required field q is missing`) - } return nil } diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/set.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/set.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/set.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/set.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/symmetric.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/symmetric.go similarity index 87% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/symmetric.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/symmetric.go index ae2cd15d0..8511cff00 100644 --- a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/symmetric.go +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/symmetric.go @@ -51,8 +51,10 @@ func (k *symmetricKey) PublicKey() (Key, error) { newKey := NewSymmetricKey() for _, pair := range k.makePairs() { - if err := newKey.Set(pair.Key.(string), pair.Value); err != nil { - return nil, errors.Wrapf(err, `failed to set field %s`, pair.Key) + //nolint:forcetypeassert + key := pair.Key.(string) + if err := newKey.Set(key, pair.Value); err != nil { + return nil, errors.Wrapf(err, `failed to set field %q`, key) } } return newKey, nil diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/symmetric_gen.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/symmetric_gen.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/symmetric_gen.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/symmetric_gen.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/usage.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/usage.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/usage.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/usage.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/whitelist.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/whitelist.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/whitelist.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwk/whitelist.go diff --git a/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/README.md b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/README.md new file mode 100644 index 000000000..f6e3dcbac --- /dev/null +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/README.md @@ -0,0 +1,111 @@ +# JWS [![Go Reference](https://pkg.go.dev/badge/github.com/lestrrat-go/jwx/jws.svg)](https://pkg.go.dev/github.com/lestrrat-go/jwx/jws) + +Package jws implements JWS as described in [RFC7515](https://tools.ietf.org/html/rfc7515) and [RFC7797](https://tools.ietf.org/html/rfc7797) + +* Parse and generate compact or JSON serializations +* Sign and verify arbitrary payload +* Use any of the keys supported in [github.com/lestrrat-go/jwx/jwk](../jwk) +* Add arbitrary fields in the JWS object +* Ability to add/replace existing signature methods +* Respect "b64" settings for RFC7797 + +How-to style documentation can be found in the [docs directory](../docs). + +Examples are located in the examples directory ([jws_example_test.go](../examples/jws_example_test.go)) + +Supported signature algorithms: + +| Algorithm | Supported? | Constant in [jwa](../jwa) | +|:----------------------------------------|:-----------|:-------------------------| +| HMAC using SHA-256 | YES | jwa.HS256 | +| HMAC using SHA-384 | YES | jwa.HS384 | +| HMAC using SHA-512 | YES | jwa.HS512 | +| RSASSA-PKCS-v1.5 using SHA-256 | YES | jwa.RS256 | +| RSASSA-PKCS-v1.5 using SHA-384 | YES | jwa.RS384 | +| RSASSA-PKCS-v1.5 using SHA-512 | YES | jwa.RS512 | +| ECDSA using P-256 and SHA-256 | YES | jwa.ES256 | +| ECDSA using P-384 and SHA-384 | YES | jwa.ES384 | +| ECDSA using P-521 and SHA-512 | YES | jwa.ES512 | +| ECDSA using secp256k1 and SHA-256 (2) | YES | jwa.ES256K | +| RSASSA-PSS using SHA256 and MGF1-SHA256 | YES | jwa.PS256 | +| RSASSA-PSS using SHA384 and MGF1-SHA384 | YES | jwa.PS384 | +| RSASSA-PSS using SHA512 and MGF1-SHA512 | YES | jwa.PS512 | +| EdDSA (1) | YES | jwa.EdDSA | + +* Note 1: Experimental +* Note 2: Experimental, and must be toggled using `-tags jwx_es256k` build tag + +# SYNOPSIS + +## Sign and verify arbitrary data + +```go +import( + "crypto/rand" + "crypto/rsa" + "log" + + "github.com/lestrrat-go/jwx/jwa" + "github.com/lestrrat-go/jwx/jws" +) + +func main() { + privkey, err := rsa.GenerateKey(rand.Reader, 2048) + if err != nil { + log.Printf("failed to generate private key: %s", err) + return + } + + buf, err := jws.Sign([]byte("Lorem ipsum"), jwa.RS256, privkey) + if err != nil { + log.Printf("failed to created JWS message: %s", err) + return + } + + // When you receive a JWS message, you can verify the signature + // and grab the payload sent in the message in one go: + verified, err := jws.Verify(buf, jwa.RS256, &privkey.PublicKey) + if err != nil { + log.Printf("failed to verify message: %s", err) + return + } + + log.Printf("signed message verified! -> %s", verified) +} +``` + +## Programatically manipulate `jws.Message` + +```go +func ExampleMessage() { + // initialization for the following variables have been omitted. + // please see jws_example_test.go for details + var decodedPayload, decodedSig1, decodedSig2 []byte + var public1, protected1, public2, protected2 jws.Header + + // Construct a message. DO NOT use values that are base64 encoded + m := jws.NewMessage(). + SetPayload(decodedPayload). + AppendSignature( + jws.NewSignature(). + SetSignature(decodedSig1). + SetProtectedHeaders(public1). + SetPublicHeaders(protected1), + ). + AppendSignature( + jws.NewSignature(). + SetSignature(decodedSig2). + SetProtectedHeaders(public2). + SetPublicHeaders(protected2), + ) + + buf, err := json.MarshalIndent(m, "", " ") + if err != nil { + fmt.Printf("%s\n", err) + return + } + + _ = buf +} +``` + diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/ecdsa.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/ecdsa.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/ecdsa.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/ecdsa.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/eddsa.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/eddsa.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/eddsa.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/eddsa.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/es256k.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/es256k.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/es256k.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/es256k.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/gen.sh b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/gen.sh similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/gen.sh rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/gen.sh diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/headers.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/headers.go similarity index 91% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/headers.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/headers.go index 2eca43158..9ca8f656e 100644 --- a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/headers.go +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/headers.go @@ -36,8 +36,10 @@ func (h *stdHeaders) AsMap(ctx context.Context) (map[string]interface{}, error) func (h *stdHeaders) Copy(ctx context.Context, dst Headers) error { for _, pair := range h.makePairs() { - if err := dst.Set(pair.Key.(string), pair.Value); err != nil { - return errors.Wrapf(err, `failed to set header`) + //nolint:forcetypeassert + key := pair.Key.(string) + if err := dst.Set(key, pair.Value); err != nil { + return errors.Wrapf(err, `failed to set header %q`, key) } } return nil diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/headers_gen.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/headers_gen.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/headers_gen.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/headers_gen.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/hmac.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/hmac.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/hmac.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/hmac.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/interface.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/interface.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/interface.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/interface.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/io.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/io.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/io.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/io.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/jws.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/jws.go similarity index 99% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/jws.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/jws.go index c767116ff..6908dd6bd 100644 --- a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/jws.go +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/jws.go @@ -165,6 +165,7 @@ func Sign(payload []byte, alg jwa.SignatureAlgorithm, key interface{}, options . func SignMulti(payload []byte, options ...Option) ([]byte, error) { var signers []*payloadSigner for _, o := range options { + //nolint:forcetypeassert switch o.Ident() { case identPayloadSigner{}: signers = append(signers, o.Value().(*payloadSigner)) @@ -475,16 +476,6 @@ func (ctx *verifyCtx) verifyCompact(signed []byte) ([]byte, error) { return nil, errors.Wrap(err, `failed extract from compact serialization format`) } - verifyBuf := pool.GetBytesBuffer() - defer pool.ReleaseBytesBuffer(verifyBuf) - - verifyBuf.Write(protected) - verifyBuf.WriteByte('.') - if len(payload) == 0 && ctx.detachedPayload != nil { - payload = ctx.detachedPayload - } - verifyBuf.Write(payload) - decodedSignature, err := base64.Decode(signature) if err != nil { return nil, errors.Wrap(err, `failed to decode signature`) @@ -500,6 +491,20 @@ func (ctx *verifyCtx) verifyCompact(signed []byte) ([]byte, error) { return nil, errors.Wrap(err, `failed to decode headers`) } + verifyBuf := pool.GetBytesBuffer() + defer pool.ReleaseBytesBuffer(verifyBuf) + + verifyBuf.Write(protected) + verifyBuf.WriteByte('.') + if len(payload) == 0 && ctx.detachedPayload != nil { + if getB64Value(hdr) { + payload = base64.Encode(ctx.detachedPayload) + } else { + payload = ctx.detachedPayload + } + } + verifyBuf.Write(payload) + if !ctx.useJKU { if hdr.KeyID() != "" { if jwkKey, ok := ctx.key.(jwk.Key); ok { diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/message.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/message.go similarity index 99% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/message.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/message.go index 669041a0a..802b29771 100644 --- a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/message.go +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/message.go @@ -81,10 +81,12 @@ func (s *Signature) UnmarshalJSON(data []byte) error { } prt := NewHeaders() + //nolint:forcetypeassert prt.(*stdHeaders).SetDecodeCtx(s.DecodeCtx()) if err := json.Unmarshal(src, prt); err != nil { return errors.Wrap(err, `failed to unmarshal protected headers`) } + //nolint:forcetypeassert prt.(*stdHeaders).SetDecodeCtx(nil) s.protected = prt } @@ -305,10 +307,12 @@ func (m *Message) UnmarshalJSON(buf []byte) error { return errors.Wrap(err, `failed to base64 decode flattened protected headers`) } prt := NewHeaders() + //nolint:forcetypeassert prt.(*stdHeaders).SetDecodeCtx(m.DecodeCtx()) if err := json.Unmarshal(decoded, prt); err != nil { return errors.Wrap(err, `failed to unmarshal flattened protected headers`) } + //nolint:forcetypeassert prt.(*stdHeaders).SetDecodeCtx(nil) sig.protected = prt } diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/option.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/option.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/option.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/option.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/rsa.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/rsa.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/rsa.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/rsa.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/signer.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/signer.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/signer.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/signer.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/verifier.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/verifier.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/verifier.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jws/verifier.go diff --git a/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/README.md b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/README.md new file mode 100644 index 000000000..9e97439f6 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/README.md @@ -0,0 +1,224 @@ +# JWT [![Go Reference](https://pkg.go.dev/badge/github.com/lestrrat-go/jwx/jwt.svg)](https://pkg.go.dev/github.com/lestrrat-go/jwx/jwt) + +Package jwt implements JSON Web Tokens as described in [RFC7519](https://tools.ietf.org/html/rfc7519). + +* Convenience methods for oft-used keys ("aud", "sub", "iss", etc) +* Convenience functions to extract/parse from http.Request, http.Header, url.Values +* Ability to Get/Set arbitrary keys +* Conversion to and from JSON +* Generate signed tokens +* Verify signed tokens +* Extra support for OpenID tokens via [github.com/lestrrat-go/jwx/jwt/openid](./jwt/openid) + +How-to style documentation can be found in the [docs directory](../docs). + +More examples are located in the examples directory ([jwt_example_test.go](../examples/jwt_example_test.go)) + +# SYNOPSIS + +## Verify a signed JWT + +```go + token, err := jwt.Parse(payload, jwt.WithKeySet(keyset)) + if err != nil { + fmt.Printf("failed to parse payload: %s\n", err) + } +``` + +## Token Usage + +```go +func ExampleJWT() { + const aLongLongTimeAgo = 233431200 + + t := jwt.New() + t.Set(jwt.SubjectKey, `https://github.com/lestrrat-go/jwx/jwt`) + t.Set(jwt.AudienceKey, `Golang Users`) + t.Set(jwt.IssuedAtKey, time.Unix(aLongLongTimeAgo, 0)) + t.Set(`privateClaimKey`, `Hello, World!`) + + buf, err := json.MarshalIndent(t, "", " ") + if err != nil { + fmt.Printf("failed to generate JSON: %s\n", err) + return + } + + fmt.Printf("%s\n", buf) + fmt.Printf("aud -> '%s'\n", t.Audience()) + fmt.Printf("iat -> '%s'\n", t.IssuedAt().Format(time.RFC3339)) + if v, ok := t.Get(`privateClaimKey`); ok { + fmt.Printf("privateClaimKey -> '%s'\n", v) + } + fmt.Printf("sub -> '%s'\n", t.Subject()) + + key, err := rsa.GenerateKey(rand.Reader, 2048) + if err != nil { + log.Printf("failed to generate private key: %s", err) + return + } + + { + // Signing a token (using raw rsa.PrivateKey) + signed, err := jwt.Sign(t, jwa.RS256, key) + if err != nil { + log.Printf("failed to sign token: %s", err) + return + } + _ = signed + } + + { + // Signing a token (using JWK) + jwkKey, err := jwk.New(key) + if err != nil { + log.Printf("failed to create JWK key: %s", err) + return + } + + signed, err := jwt.Sign(t, jwa.RS256, jwkKey) + if err != nil { + log.Printf("failed to sign token: %s", err) + return + } + _ = signed + } +} +``` + +## OpenID Claims + +`jwt` package can work with token types other than the default one. +For OpenID claims, use the token created by `openid.New()`, or +use the `jwt.WithToken(openid.New())`. If you need to use other specialized +claims, use `jwt.WithToken()` to specify the exact token type + +```go +func Example_openid() { + const aLongLongTimeAgo = 233431200 + + t := openid.New() + t.Set(jwt.SubjectKey, `https://github.com/lestrrat-go/jwx/jwt`) + t.Set(jwt.AudienceKey, `Golang Users`) + t.Set(jwt.IssuedAtKey, time.Unix(aLongLongTimeAgo, 0)) + t.Set(`privateClaimKey`, `Hello, World!`) + + addr := openid.NewAddress() + addr.Set(openid.AddressPostalCodeKey, `105-0011`) + addr.Set(openid.AddressCountryKey, `日本`) + addr.Set(openid.AddressRegionKey, `東京都`) + addr.Set(openid.AddressLocalityKey, `港区`) + addr.Set(openid.AddressStreetAddressKey, `芝公園 4-2-8`) + t.Set(openid.AddressKey, addr) + + buf, err := json.MarshalIndent(t, "", " ") + if err != nil { + fmt.Printf("failed to generate JSON: %s\n", err) + return + } + fmt.Printf("%s\n", buf) + + t2, err := jwt.Parse(buf, jwt.WithToken(openid.New())) + if err != nil { + fmt.Printf("failed to parse JSON: %s\n", err) + return + } + if _, ok := t2.(openid.Token); !ok { + fmt.Printf("using jwt.WithToken(openid.New()) creates an openid.Token instance") + return + } +} +``` + +# FAQ + +## Why is `jwt.Token` an interface? + +In this package, `jwt.Token` is an interface. This is not an arbitrary choice: there are actual reason for the type being an interface. + +We understand that if you are migrating from another library this may be a deal breaker, but we hope you can at least appreciate the fact that this was not done arbitrarily, and that there were real technical trade offs that were evaluated. + +### No uninitialized tokens + +First and foremost, by making it an interface, you cannot use an uninitialized token: + +```go +var token1 jwt.Token // this is nil, you can't just start using this +if err := json.Unmarshal(data, &token1); err != nil { // so you can't do this + ... +} + +// But you _can_ do this, and we _want_ you to do this so the object is properly initialized +token2 = jwt.New() +if err := json.Unmarshal(data, &token2); err != nil { // actually, in practice you should use jwt.Parse() + .... +} +``` + +### But why does it need to be initialized? + +There are several reasons, but one of the reasons is that I'm using a sync.Mutex to avoid races. We want this to be properly initialized. + +The other reason is that we support custom claims out of the box. The `map[string]interface{}` container is initialized during new. This is important when checking for equality using reflect-y methods (akin to `reflect.DeepEqual`), because if you allowed zero values, you could end up with "empty" tokens, that actually differ. Consider the following: + +```go +// assume jwt.Token was s struct, not an interface +token1 := jwt.Token{ privateClaims: make(map[string]interface{}) } +token2 := jwt.Token{ privateClaims: nil } +``` + +These are semantically equivalent, but users would need to be aware of this difference when comparing values. By forcing the user to use a constructor, we can force a uniform empty state. + +### Standard way to store values + +Unlike some other libraries, this library allows you to store standard claims and non-standard claims in the same token. + +You _want_ to store standard claims in a properly typed field, which we do for fields like "iss", "nbf", etc. +But for non-standard claims, there is just no way of doing this, so we _have_ to use a container like `map[string]interface{}` + +This means that if you allow direct access to these fields via a struct, you will have two different ways to access the claims, which is confusing: + +```go +tok.Issuer = ... +tok.PrivateClaims["foo"] = ... +``` + +So we want to hide where this data is stored, and use a standard method like `Set()` and `Get()` to store all the values. +At this point you are effectively going to hide the implementation detail from the user, so you end up with a struct like below, which is fundamentally not so different from providing just an interface{}: + +```go +type Token struct { + // unexported fields +} + +func (tok *Token) Set(...) { ... } +``` + +### Use of pointers to store values + +We wanted to differentiate the state between a claim being uninitialized, and a claim being initialized to empty. + +So we use pointers to store values: + +```go +type stdToken struct { + .... + issuer *string // if nil, uninitialized. if &(""), initialized to empty +} +``` + +This is fine for us, but we doubt that this would be something users would want to do. +This is a subtle difference, but cluttering up the API with slight variations of the same type (i.e. pointers vs non-pointers) seemed like a bad idea to us. + +```go +token.Issuer = &issuer // want to avoid this + +token.Set(jwt.IssuerKey, "foobar") // so this is what we picked +``` + +This way users no longer need to care how the data is internally stored. + +### Allow more than one type of token through the same interface + +`dgrijalva/jwt-go` does this in a different way, but we felt that it would be more intuitive for all tokens to follow a single interface so there is fewer type conversions required. + +See the `openid` token for an example. diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/builder_gen.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/builder_gen.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/builder_gen.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/builder_gen.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/gen.sh b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/gen.sh similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/gen.sh rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/gen.sh diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/http.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/http.go similarity index 99% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/http.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/http.go index be19abb76..aaaf27f13 100644 --- a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/http.go +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/http.go @@ -63,6 +63,7 @@ func ParseRequest(req *http.Request, options ...ParseOption) (Token, error) { var formkeys []string var parseOptions []ParseOption for _, option := range options { + //nolint:forcetypeassert switch option.Ident() { case identHeaderKey{}: hdrkeys = append(hdrkeys, option.Value().(string)) diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/interface.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/interface.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/interface.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/interface.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/internal/types/date.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/internal/types/date.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/internal/types/date.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/internal/types/date.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/internal/types/string.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/internal/types/string.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/internal/types/string.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/internal/types/string.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/io.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/io.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/io.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/io.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/jwt.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/jwt.go similarity index 99% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/jwt.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/jwt.go index 3c35279d1..13c153934 100644 --- a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/jwt.go +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/jwt.go @@ -529,8 +529,10 @@ func (t *stdToken) Clone() (Token, error) { dst := New() for _, pair := range t.makePairs() { - if err := dst.Set(pair.Key.(string), pair.Value); err != nil { - return nil, errors.Wrapf(err, `failed to set %s`, pair.Key.(string)) + //nolint:forcetypeassert + key := pair.Key.(string) + if err := dst.Set(key, pair.Value); err != nil { + return nil, errors.Wrapf(err, `failed to set %s`, key) } } return dst, nil diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/options.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/options.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/options.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/options.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/serialize.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/serialize.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/serialize.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/serialize.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/token_gen.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/token_gen.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/token_gen.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/token_gen.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/validate.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/validate.go similarity index 99% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/validate.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/validate.go index c1a6894c0..631e3841a 100644 --- a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/validate.go +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwt/validate.go @@ -204,6 +204,7 @@ func SetValidationCtxClock(ctx context.Context, cl Clock) context.Context { // the current validation context. This value will always be available // during validation of tokens. func ValidationCtxClock(ctx context.Context) Clock { + //nolint:forcetypeassert return ctx.Value(identValidationCtxClock{}).(Clock) } @@ -212,6 +213,7 @@ func SetValidationCtxSkew(ctx context.Context, dur time.Duration) context.Contex } func ValidationCtxSkew(ctx context.Context) time.Duration { + //nolint:forcetypeassert return ctx.Value(identValidationCtxSkew{}).(time.Duration) } diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwx.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwx.go similarity index 92% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwx.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwx.go index 17668d1e5..24c96539c 100644 --- a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/jwx.go +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/jwx.go @@ -11,15 +11,14 @@ // JWA (https://tools.ietf.org/html/rfc7518) // JWT (https://tools.ietf.org/html/rfc7519) // -// The primary focus of this library tool set is to implement the extremely -// flexible OAuth2 / OpenID Connect protocols. -// // Examples are stored in a separate Go module (to avoid adding // dependencies to this module), and thus does not appear in the // online documentation for this module. // You can find the examples in Github at https://github.com/lestrrat-go/jwx/examples // // You can find more high level documentation at Github (https://github.com/lestrrat-go/jwx) +// +// FAQ style documentation can be found in the repository (https://github.com/lestrrat-go/jwx/tree/develop/v2/docs) package jwx import ( diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/options.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/options.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/options.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/options.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/jwx/x25519/x25519.go b/extra/server-discovery/vendor/github.com/lestrrat-go/jwx/x25519/x25519.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/jwx/x25519/x25519.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/jwx/x25519/x25519.go diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/option/.gitignore b/extra/server-discovery/vendor/github.com/lestrrat-go/option/.gitignore similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/option/.gitignore rename to extra/server-discovery/vendor/github.com/lestrrat-go/option/.gitignore diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/option/LICENSE b/extra/server-discovery/vendor/github.com/lestrrat-go/option/LICENSE similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/option/LICENSE rename to extra/server-discovery/vendor/github.com/lestrrat-go/option/LICENSE diff --git a/extra/server-discovery/vendor/github.com/lestrrat-go/option/README.md b/extra/server-discovery/vendor/github.com/lestrrat-go/option/README.md new file mode 100644 index 000000000..ba42acd53 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/option/README.md @@ -0,0 +1,136 @@ +# option + +Base object for what I call the "Optional Parameters Pattern". + +The beauty of this pattern is that you can achieve a method that can +take the following simple calling style + +``` +obj.Method(mandatory1, mandatory2) +``` + +or the following, if you want to modify its behavior with optional parameters + +``` +obj.Method(mandatory1, mandatory2, optional1, optional2, optional3) +``` + +Intead of the more clunky zero value for optionals style + +``` +obj.Method(mandatory1, mandatory2, nil, "", 0) +``` + +or the equally cluncky config object style, which requires you to create a +struct with `NamesThatLookReallyLongBecauseItNeedsToIncludeMethodNamesConfig + +``` +cfg := &ConfigForMethod{ + Optional1: ..., + Optional2: ..., + Optional3: ..., +} +obj.Method(mandatory1, mandatory2, &cfg) +``` + +# SYNOPSIS + +This library is intended to be a reusable component to implement +a function with arguments that look like the following: + +``` +obj.Method(mandatory1, mandatory2, optional1, optional2, optional3, ...) +``` + +Internally, we just declare this method as follows: + +``` +func (obj *Object) Method(m1 Type1, m2 Type2, options ...Option) { + ... +} +``` + +Option objects take two arguments, its identifier and the value it contains. +The identifier can be anything, but it's usually better to use a an unexported +empty struct so that only you have the ability to generate said option: + +``` +type identOptionalParamOne struct{} +type identOptionalParamTwo struct{} +type identOptionalParamThree struct{} + +func WithOptionOne(v ...) Option { + return option.New(identOptionalParamOne{}, v) +} +``` + +Then you can call the method we described above as + +``` +obj.Method(m1, m2, WithOptionOne(...), WithOptionTwo(...), WithOptionThree(...)) +``` + +Options should be parsed in a code that looks somewhat like this + +``` +func (obj *Object) Method(m1 Type1, m2 Type2, options ...Option) { + paramOne := defaultValueParamOne + for _, option := range options { + switch option.Ident() { + case identOptionalParamOne{}: + paramOne = option.Value().(...) + } + } + ... +} +``` + +# Simple usage + +Most of the times all you need to do is to declare the Option type as an alias +in your code: + +``` +package myawesomepkg + +import "github.com/lestrrat-go/option" + +type Option = option.Interface +``` + +Then you can start definig options like they are described in the SYNOPSIS section. + +# Differentiating Options + +When you have multiple methods and options, and those options can only be passed to +each one the methods, it's hard to see which options should be passed to which method. + +``` +func WithX() Option {} +func WithY() Option {} + +// Now, which of WithX/WithY go to which method? +func (*Obj) Method1(options ...Option) {} +func (*Obj) Method2(options ...Option) {} +``` + +In this case the easiest way to make it obvious is to put an extra layer around +the options so that they have different types + +``` +type Method1Option interface { + Option + method1Option() +} + +type method1Option struct { Option } +func (*method1Option) method1Option() {} + +func WithX() Method1Option { + return &methodOption{option.New(...)} +} + +func (*Obj) Method1(options ...Method1Option) {} +``` + +This way the compiler knows if an option can be passed to a given method. diff --git a/aux/server-discovery/vendor/github.com/lestrrat-go/option/option.go b/extra/server-discovery/vendor/github.com/lestrrat-go/option/option.go similarity index 100% rename from aux/server-discovery/vendor/github.com/lestrrat-go/option/option.go rename to extra/server-discovery/vendor/github.com/lestrrat-go/option/option.go diff --git a/aux/server-discovery/vendor/github.com/pkg/errors/.gitignore b/extra/server-discovery/vendor/github.com/lestrrat-go/strftime/.gitignore similarity index 100% rename from aux/server-discovery/vendor/github.com/pkg/errors/.gitignore rename to extra/server-discovery/vendor/github.com/lestrrat-go/strftime/.gitignore diff --git a/extra/server-discovery/vendor/github.com/lestrrat-go/strftime/.golangci.yml b/extra/server-discovery/vendor/github.com/lestrrat-go/strftime/.golangci.yml new file mode 100644 index 000000000..571d18bff --- /dev/null +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/strftime/.golangci.yml @@ -0,0 +1,5 @@ +issues: + exclude-rules: + - path: _test\.go + linters: + - errcheck diff --git a/extra/server-discovery/vendor/github.com/lestrrat-go/strftime/Changes b/extra/server-discovery/vendor/github.com/lestrrat-go/strftime/Changes new file mode 100644 index 000000000..b86a84c40 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/strftime/Changes @@ -0,0 +1,28 @@ +Changes +======= + +v1.0.6 - 20 Apr 2022 +[Miscellaneous] + * Minimum go version is now go 1.13 + * github.com/pkg/errors is going to be phased out in steps. In this release, + users may opt-in to using native errors using `fmt.Errorf("%w")` by + specifying the tag `strftime_native_errors`. In the next release, the default + will be to use native errors, but users will be able to opt-in to using + github.com/pkg/errors using a tag. The version after will remove github.com/pkg/errors. + + This is something that we normally would do over a major version upgrade + but since we do not expect this library to receive API breaking changes in the + near future and thus no v2 is expected, we have decided to do this over few + non-major releases. + +v1.0.5 +[New features] + * `(strftime.Strftime).FormatBuffer([]byte, time.Time) []byte` has been added. + This allows the user to provide the same underlying `[]byte` buffer for each + call to `FormatBuffer`, which avoid allocation per call. + * `%I` formatted midnight as `00`, where it should have been using `01` + + +before v1.0.4 + +Apparently we have failed to provide Changes prior to v1.0.5 :( diff --git a/extra/server-discovery/vendor/github.com/lestrrat-go/strftime/LICENSE b/extra/server-discovery/vendor/github.com/lestrrat-go/strftime/LICENSE new file mode 100644 index 000000000..eed693818 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/strftime/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2016 lestrrat + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/extra/server-discovery/vendor/github.com/lestrrat-go/strftime/Makefile b/extra/server-discovery/vendor/github.com/lestrrat-go/strftime/Makefile new file mode 100644 index 000000000..b38217120 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/strftime/Makefile @@ -0,0 +1,29 @@ +.PHONY: bench realclean cover viewcover test lint + +bench: + go test -tags bench -benchmem -bench . + @git checkout go.mod + @rm go.sum + +realclean: + rm coverage.out + +test: + go test -v -race ./... + +cover: +ifeq ($(strip $(STRFTIME_TAGS)),) + go test -v -race -coverpkg=./... -coverprofile=coverage.out ./... +else + go test -v -tags $(STRFTIME_TAGS) -race -coverpkg=./... -coverprofile=coverage.out ./... +endif + +viewcover: + go tool cover -html=coverage.out + +lint: + golangci-lint run ./... + +imports: + goimports -w ./ + diff --git a/extra/server-discovery/vendor/github.com/lestrrat-go/strftime/README.md b/extra/server-discovery/vendor/github.com/lestrrat-go/strftime/README.md new file mode 100644 index 000000000..a1e7de5df --- /dev/null +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/strftime/README.md @@ -0,0 +1,227 @@ +# strftime + +Fast strftime for Go + +[![Build Status](https://travis-ci.org/lestrrat-go/strftime.png?branch=master)](https://travis-ci.org/lestrrat-go/strftime) + +[![GoDoc](https://godoc.org/github.com/lestrrat-go/strftime?status.svg)](https://godoc.org/github.com/lestrrat-go/strftime) + +# SYNOPSIS + +```go +f, err := strftime.New(`.... pattern ...`) +if err := f.Format(buf, time.Now()); err != nil { + log.Println(err.Error()) +} +``` + +# DESCRIPTION + +The goals for this library are + +* Optimized for the same pattern being called repeatedly +* Be flexible about destination to write the results out +* Be as complete as possible in terms of conversion specifications + +# API + +## Format(string, time.Time) (string, error) + +Takes the pattern and the time, and formats it. This function is a utility function that recompiles the pattern every time the function is called. If you know beforehand that you will be formatting the same pattern multiple times, consider using `New` to create a `Strftime` object and reuse it. + +## New(string) (\*Strftime, error) + +Takes the pattern and creates a new `Strftime` object. + +## obj.Pattern() string + +Returns the pattern string used to create this `Strftime` object + +## obj.Format(io.Writer, time.Time) error + +Formats the time according to the pre-compiled pattern, and writes the result to the specified `io.Writer` + +## obj.FormatString(time.Time) string + +Formats the time according to the pre-compiled pattern, and returns the result string. + +# SUPPORTED CONVERSION SPECIFICATIONS + +| pattern | description | +|:--------|:------------| +| %A | national representation of the full weekday name | +| %a | national representation of the abbreviated weekday | +| %B | national representation of the full month name | +| %b | national representation of the abbreviated month name | +| %C | (year / 100) as decimal number; single digits are preceded by a zero | +| %c | national representation of time and date | +| %D | equivalent to %m/%d/%y | +| %d | day of the month as a decimal number (01-31) | +| %e | the day of the month as a decimal number (1-31); single digits are preceded by a blank | +| %F | equivalent to %Y-%m-%d | +| %H | the hour (24-hour clock) as a decimal number (00-23) | +| %h | same as %b | +| %I | the hour (12-hour clock) as a decimal number (01-12) | +| %j | the day of the year as a decimal number (001-366) | +| %k | the hour (24-hour clock) as a decimal number (0-23); single digits are preceded by a blank | +| %l | the hour (12-hour clock) as a decimal number (1-12); single digits are preceded by a blank | +| %M | the minute as a decimal number (00-59) | +| %m | the month as a decimal number (01-12) | +| %n | a newline | +| %p | national representation of either "ante meridiem" (a.m.) or "post meridiem" (p.m.) as appropriate. | +| %R | equivalent to %H:%M | +| %r | equivalent to %I:%M:%S %p | +| %S | the second as a decimal number (00-60) | +| %T | equivalent to %H:%M:%S | +| %t | a tab | +| %U | the week number of the year (Sunday as the first day of the week) as a decimal number (00-53) | +| %u | the weekday (Monday as the first day of the week) as a decimal number (1-7) | +| %V | the week number of the year (Monday as the first day of the week) as a decimal number (01-53) | +| %v | equivalent to %e-%b-%Y | +| %W | the week number of the year (Monday as the first day of the week) as a decimal number (00-53) | +| %w | the weekday (Sunday as the first day of the week) as a decimal number (0-6) | +| %X | national representation of the time | +| %x | national representation of the date | +| %Y | the year with century as a decimal number | +| %y | the year without century as a decimal number (00-99) | +| %Z | the time zone name | +| %z | the time zone offset from UTC | +| %% | a '%' | + +# EXTENSIONS / CUSTOM SPECIFICATIONS + +This library in general tries to be POSIX compliant, but sometimes you just need that +extra specification or two that is relatively widely used but is not included in the +POSIX specification. + +For example, POSIX does not specify how to print out milliseconds, +but popular implementations allow `%f` or `%L` to achieve this. + +For those instances, `strftime.Strftime` can be configured to use a custom set of +specifications: + +``` +ss := strftime.NewSpecificationSet() +ss.Set('L', ...) // provide implementation for `%L` + +// pass this new specification set to the strftime instance +p, err := strftime.New(`%L`, strftime.WithSpecificationSet(ss)) +p.Format(..., time.Now()) +``` + +The implementation must implement the `Appender` interface, which is + +``` +type Appender interface { + Append([]byte, time.Time) []byte +} +``` + +For commonly used extensions such as the millisecond example and Unix timestamp, we provide a default +implementation so the user can do one of the following: + +``` +// (1) Pass a specification byte and the Appender +// This allows you to pass arbitrary Appenders +p, err := strftime.New( + `%L`, + strftime.WithSpecification('L', strftime.Milliseconds), +) + +// (2) Pass an option that knows to use strftime.Milliseconds +p, err := strftime.New( + `%L`, + strftime.WithMilliseconds('L'), +) +``` + +Similarly for Unix Timestamp: +``` +// (1) Pass a specification byte and the Appender +// This allows you to pass arbitrary Appenders +p, err := strftime.New( + `%s`, + strftime.WithSpecification('s', strftime.UnixSeconds), +) + +// (2) Pass an option that knows to use strftime.UnixSeconds +p, err := strftime.New( + `%s`, + strftime.WithUnixSeconds('s'), +) +``` + +If a common specification is missing, please feel free to submit a PR +(but please be sure to be able to defend how "common" it is) + +## List of available extensions + +- [`Milliseconds`](https://pkg.go.dev/github.com/lestrrat-go/strftime?tab=doc#Milliseconds) (related option: [`WithMilliseconds`](https://pkg.go.dev/github.com/lestrrat-go/strftime?tab=doc#WithMilliseconds)); + +- [`Microseconds`](https://pkg.go.dev/github.com/lestrrat-go/strftime?tab=doc#Microseconds) (related option: [`WithMicroseconds`](https://pkg.go.dev/github.com/lestrrat-go/strftime?tab=doc#WithMicroseconds)); + +- [`UnixSeconds`](https://pkg.go.dev/github.com/lestrrat-go/strftime?tab=doc#UnixSeconds) (related option: [`WithUnixSeconds`](https://pkg.go.dev/github.com/lestrrat-go/strftime?tab=doc#WithUnixSeconds)). + + +# PERFORMANCE / OTHER LIBRARIES + +The following benchmarks were run separately because some libraries were using cgo on specific platforms (notabley, the fastly version) + +``` +// On my OS X 10.14.6, 2.3 GHz Intel Core i5, 16GB memory. +// go version go1.13.4 darwin/amd64 +hummingbird% go test -tags bench -benchmem -bench . + +BenchmarkTebeka-4 297471 3905 ns/op 257 B/op 20 allocs/op +BenchmarkJehiah-4 818444 1773 ns/op 256 B/op 17 allocs/op +BenchmarkFastly-4 2330794 550 ns/op 80 B/op 5 allocs/op +BenchmarkLestrrat-4 916365 1458 ns/op 80 B/op 2 allocs/op +BenchmarkLestrratCachedString-4 2527428 546 ns/op 128 B/op 2 allocs/op +BenchmarkLestrratCachedWriter-4 537422 2155 ns/op 192 B/op 3 allocs/op +PASS +ok github.com/lestrrat-go/strftime 25.618s +``` + +``` +// On a host on Google Cloud Platform, machine-type: f1-micro (vCPU x 1, memory: 0.6GB) +// (Yes, I was being skimpy) +// Linux 4.9.0-11-amd64 #1 SMP Debian 4.9.189-3+deb9u1 (2019-09-20) x86_64 GNU/Linux +// go version go1.13.4 linux/amd64 +hummingbird% go test -tags bench -benchmem -bench . + +BenchmarkTebeka 254997 4726 ns/op 256 B/op 20 allocs/op +BenchmarkJehiah 659289 1882 ns/op 256 B/op 17 allocs/op +BenchmarkFastly 389150 3044 ns/op 224 B/op 13 allocs/op +BenchmarkLestrrat 699069 1780 ns/op 80 B/op 2 allocs/op +BenchmarkLestrratCachedString 2081594 589 ns/op 128 B/op 2 allocs/op +BenchmarkLestrratCachedWriter 825763 1480 ns/op 192 B/op 3 allocs/op +PASS +ok github.com/lestrrat-go/strftime 11.355s +``` + +This library is much faster than other libraries *IF* you can reuse the format pattern. + +Here's the annotated list from the benchmark results. You can clearly see that (re)using a `Strftime` object +and producing a string is the fastest. Writing to an `io.Writer` seems a bit sluggish, but since +the one producing the string is doing almost exactly the same thing, we believe this is purely the overhead of +writing to an `io.Writer` + +| Import Path | Score | Note | +|:------------------------------------|--------:|:--------------------------------| +| github.com/lestrrat-go/strftime | 3000000 | Using `FormatString()` (cached) | +| github.com/fastly/go-utils/strftime | 2000000 | Pure go version on OS X | +| github.com/lestrrat-go/strftime | 1000000 | Using `Format()` (NOT cached) | +| github.com/jehiah/go-strftime | 1000000 | | +| github.com/fastly/go-utils/strftime | 1000000 | cgo version on Linux | +| github.com/lestrrat-go/strftime | 500000 | Using `Format()` (cached) | +| github.com/tebeka/strftime | 300000 | | + +However, depending on your pattern, this speed may vary. If you find a particular pattern that seems sluggish, +please send in patches or tests. + +Please also note that this benchmark only uses the subset of conversion specifications that are supported by *ALL* of the libraries compared. + +Somethings to consider when making performance comparisons in the future: + +* Can it write to io.Writer? +* Which `%specification` does it handle? diff --git a/extra/server-discovery/vendor/github.com/lestrrat-go/strftime/appenders.go b/extra/server-discovery/vendor/github.com/lestrrat-go/strftime/appenders.go new file mode 100644 index 000000000..2941a2479 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/strftime/appenders.go @@ -0,0 +1,348 @@ +package strftime + +import ( + "bytes" + "fmt" + "io" + "strconv" + "strings" + "time" +) + +// These are all of the standard, POSIX compliant specifications. +// Extensions should be in extensions.go +var ( + fullWeekDayName = StdlibFormat("Monday") + abbrvWeekDayName = StdlibFormat("Mon") + fullMonthName = StdlibFormat("January") + abbrvMonthName = StdlibFormat("Jan") + centuryDecimal = AppendFunc(appendCentury) + timeAndDate = StdlibFormat("Mon Jan _2 15:04:05 2006") + mdy = StdlibFormat("01/02/06") + dayOfMonthZeroPad = StdlibFormat("02") + dayOfMonthSpacePad = StdlibFormat("_2") + ymd = StdlibFormat("2006-01-02") + twentyFourHourClockZeroPad = &hourPadded{twelveHour: false, pad: '0'} + twelveHourClockZeroPad = &hourPadded{twelveHour: true, pad: '0'} + dayOfYear = AppendFunc(appendDayOfYear) + twentyFourHourClockSpacePad = &hourPadded{twelveHour: false, pad: ' '} + twelveHourClockSpacePad = &hourPadded{twelveHour: true, pad: ' '} + minutesZeroPad = StdlibFormat("04") + monthNumberZeroPad = StdlibFormat("01") + newline = Verbatim("\n") + ampm = StdlibFormat("PM") + hm = StdlibFormat("15:04") + imsp = hmsWAMPM{} + secondsNumberZeroPad = StdlibFormat("05") + hms = StdlibFormat("15:04:05") + tab = Verbatim("\t") + weekNumberSundayOrigin = weeknumberOffset(0) // week number of the year, Sunday first + weekdayMondayOrigin = weekday(1) + // monday as the first day, and 01 as the first value + weekNumberMondayOriginOneOrigin = AppendFunc(appendWeekNumber) + eby = StdlibFormat("_2-Jan-2006") + // monday as the first day, and 00 as the first value + weekNumberMondayOrigin = weeknumberOffset(1) // week number of the year, Monday first + weekdaySundayOrigin = weekday(0) + natReprTime = StdlibFormat("15:04:05") // national representation of the time XXX is this correct? + natReprDate = StdlibFormat("01/02/06") // national representation of the date XXX is this correct? + year = StdlibFormat("2006") // year with century + yearNoCentury = StdlibFormat("06") // year w/o century + timezone = StdlibFormat("MST") // time zone name + timezoneOffset = StdlibFormat("-0700") // time zone ofset from UTC + percent = Verbatim("%") +) + +// Appender is the interface that must be fulfilled by components that +// implement the translation of specifications to actual time value. +// +// The Append method takes the accumulated byte buffer, and the time to +// use to generate the textual representation. The resulting byte +// sequence must be returned by this method, normally by using the +// append() builtin function. +type Appender interface { + Append([]byte, time.Time) []byte +} + +// AppendFunc is an utility type to allow users to create a +// function-only version of an Appender +type AppendFunc func([]byte, time.Time) []byte + +func (af AppendFunc) Append(b []byte, t time.Time) []byte { + return af(b, t) +} + +type appenderList []Appender + +type dumper interface { + dump(io.Writer) +} + +func (l appenderList) dump(out io.Writer) { + var buf bytes.Buffer + ll := len(l) + for i, a := range l { + if dumper, ok := a.(dumper); ok { + dumper.dump(&buf) + } else { + fmt.Fprintf(&buf, "%#v", a) + } + + if i < ll-1 { + fmt.Fprintf(&buf, ",\n") + } + } + if _, err := buf.WriteTo(out); err != nil { + panic(err) + } +} + +// does the time.Format thing +type stdlibFormat struct { + s string +} + +// StdlibFormat returns an Appender that simply goes through `time.Format()` +// For example, if you know you want to display the abbreviated month name for %b, +// you can create a StdlibFormat with the pattern `Jan` and register that +// for specification `b`: +// +// a := StdlibFormat(`Jan`) +// ss := NewSpecificationSet() +// ss.Set('b', a) // does %b -> abbreviated month name +func StdlibFormat(s string) Appender { + return &stdlibFormat{s: s} +} + +func (v stdlibFormat) Append(b []byte, t time.Time) []byte { + return t.AppendFormat(b, v.s) +} + +func (v stdlibFormat) str() string { + return v.s +} + +func (v stdlibFormat) canCombine() bool { + return true +} + +func (v stdlibFormat) combine(w combiner) Appender { + return StdlibFormat(v.s + w.str()) +} + +func (v stdlibFormat) dump(out io.Writer) { + fmt.Fprintf(out, "stdlib: %s", v.s) +} + +type verbatimw struct { + s string +} + +// Verbatim returns an Appender suitable for generating static text. +// For static text, this method is slightly favorable than creating +// your own appender, as adjacent verbatim blocks will be combined +// at compile time to produce more efficient Appenders +func Verbatim(s string) Appender { + return &verbatimw{s: s} +} + +func (v verbatimw) Append(b []byte, _ time.Time) []byte { + return append(b, v.s...) +} + +func (v verbatimw) canCombine() bool { + return canCombine(v.s) +} + +func (v verbatimw) combine(w combiner) Appender { + if _, ok := w.(*stdlibFormat); ok { + return StdlibFormat(v.s + w.str()) + } + return Verbatim(v.s + w.str()) +} + +func (v verbatimw) str() string { + return v.s +} + +func (v verbatimw) dump(out io.Writer) { + fmt.Fprintf(out, "verbatim: %s", v.s) +} + +// These words below, as well as any decimal character +var combineExclusion = []string{ + "Mon", + "Monday", + "Jan", + "January", + "MST", + "PM", + "pm", +} + +func canCombine(s string) bool { + if strings.ContainsAny(s, "0123456789") { + return false + } + for _, word := range combineExclusion { + if strings.Contains(s, word) { + return false + } + } + return true +} + +type combiner interface { + canCombine() bool + combine(combiner) Appender + str() string +} + +// this is container for the compiler to keep track of appenders, +// and combine them as we parse and compile the pattern +type combiningAppend struct { + list appenderList + prev Appender + prevCanCombine bool +} + +func (ca *combiningAppend) Append(w Appender) { + if ca.prevCanCombine { + if wc, ok := w.(combiner); ok && wc.canCombine() { + ca.prev = ca.prev.(combiner).combine(wc) + ca.list[len(ca.list)-1] = ca.prev + return + } + } + + ca.list = append(ca.list, w) + ca.prev = w + ca.prevCanCombine = false + if comb, ok := w.(combiner); ok { + if comb.canCombine() { + ca.prevCanCombine = true + } + } +} + +func appendCentury(b []byte, t time.Time) []byte { + n := t.Year() / 100 + if n < 10 { + b = append(b, '0') + } + return append(b, strconv.Itoa(n)...) +} + +type weekday int + +func (v weekday) Append(b []byte, t time.Time) []byte { + n := int(t.Weekday()) + if n < int(v) { + n += 7 + } + return append(b, byte(n+48)) +} + +type weeknumberOffset int + +func (v weeknumberOffset) Append(b []byte, t time.Time) []byte { + yd := t.YearDay() + offset := int(t.Weekday()) - int(v) + if offset < 0 { + offset += 7 + } + + if yd < offset { + return append(b, '0', '0') + } + + n := ((yd - offset) / 7) + 1 + if n < 10 { + b = append(b, '0') + } + return append(b, strconv.Itoa(n)...) +} + +func appendWeekNumber(b []byte, t time.Time) []byte { + _, n := t.ISOWeek() + if n < 10 { + b = append(b, '0') + } + return append(b, strconv.Itoa(n)...) +} + +func appendDayOfYear(b []byte, t time.Time) []byte { + n := t.YearDay() + if n < 10 { + b = append(b, '0', '0') + } else if n < 100 { + b = append(b, '0') + } + return append(b, strconv.Itoa(n)...) +} + +type hourPadded struct { + pad byte + twelveHour bool +} + +func (v hourPadded) Append(b []byte, t time.Time) []byte { + h := t.Hour() + if v.twelveHour && h > 12 { + h = h - 12 + } + if v.twelveHour && h == 0 { + h = 12 + } + + if h < 10 { + b = append(b, v.pad) + b = append(b, byte(h+48)) + } else { + b = unrollTwoDigits(b, h) + } + return b +} + +func unrollTwoDigits(b []byte, v int) []byte { + b = append(b, byte((v/10)+48)) + b = append(b, byte((v%10)+48)) + return b +} + +type hmsWAMPM struct{} + +func (v hmsWAMPM) Append(b []byte, t time.Time) []byte { + h := t.Hour() + var am bool + + if h == 0 { + b = append(b, '1') + b = append(b, '2') + am = true + } else { + switch { + case h == 12: + // no op + case h > 12: + h = h - 12 + default: + am = true + } + b = unrollTwoDigits(b, h) + } + b = append(b, ':') + b = unrollTwoDigits(b, t.Minute()) + b = append(b, ':') + b = unrollTwoDigits(b, t.Second()) + + b = append(b, ' ') + if am { + b = append(b, 'A') + } else { + b = append(b, 'P') + } + b = append(b, 'M') + + return b +} diff --git a/extra/server-discovery/vendor/github.com/lestrrat-go/strftime/extension.go b/extra/server-discovery/vendor/github.com/lestrrat-go/strftime/extension.go new file mode 100644 index 000000000..5f03aec17 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/strftime/extension.go @@ -0,0 +1,67 @@ +package strftime + +import ( + "strconv" + "time" +) + +// NOTE: declare private variable and iniitalize once in init(), +// and leave the Milliseconds() function as returning static content. +// This way, `go doc -all` does not show the contents of the +// milliseconds function +var milliseconds Appender +var microseconds Appender +var unixseconds Appender + +func init() { + milliseconds = AppendFunc(func(b []byte, t time.Time) []byte { + millisecond := int(t.Nanosecond()) / int(time.Millisecond) + if millisecond < 100 { + b = append(b, '0') + } + if millisecond < 10 { + b = append(b, '0') + } + return append(b, strconv.Itoa(millisecond)...) + }) + microseconds = AppendFunc(func(b []byte, t time.Time) []byte { + microsecond := int(t.Nanosecond()) / int(time.Microsecond) + if microsecond < 100000 { + b = append(b, '0') + } + if microsecond < 10000 { + b = append(b, '0') + } + if microsecond < 1000 { + b = append(b, '0') + } + if microsecond < 100 { + b = append(b, '0') + } + if microsecond < 10 { + b = append(b, '0') + } + return append(b, strconv.Itoa(microsecond)...) + }) + unixseconds = AppendFunc(func(b []byte, t time.Time) []byte { + return append(b, strconv.FormatInt(t.Unix(), 10)...) + }) +} + +// Milliseconds returns the Appender suitable for creating a zero-padded, +// 3-digit millisecond textual representation. +func Milliseconds() Appender { + return milliseconds +} + +// Microsecond returns the Appender suitable for creating a zero-padded, +// 6-digit microsecond textual representation. +func Microseconds() Appender { + return microseconds +} + +// UnixSeconds returns the Appender suitable for creating +// unix timestamp textual representation. +func UnixSeconds() Appender { + return unixseconds +} diff --git a/extra/server-discovery/vendor/github.com/lestrrat-go/strftime/internal/errors/errors_fmt.go b/extra/server-discovery/vendor/github.com/lestrrat-go/strftime/internal/errors/errors_fmt.go new file mode 100644 index 000000000..18871c147 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/strftime/internal/errors/errors_fmt.go @@ -0,0 +1,18 @@ +//go:build strftime_native_errors +// +build strftime_native_errors + +package errors + +import "fmt" + +func New(s string) error { + return fmt.Errorf(s) +} + +func Errorf(s string, args ...interface{}) error { + return fmt.Errorf(s, args...) +} + +func Wrap(err error, s string) error { + return fmt.Errorf(s+`: %w`, err) +} diff --git a/extra/server-discovery/vendor/github.com/lestrrat-go/strftime/internal/errors/errors_pkg.go b/extra/server-discovery/vendor/github.com/lestrrat-go/strftime/internal/errors/errors_pkg.go new file mode 100644 index 000000000..357978783 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/strftime/internal/errors/errors_pkg.go @@ -0,0 +1,18 @@ +//go:build !strftime_native_errors +// +build !strftime_native_errors + +package errors + +import "github.com/pkg/errors" + +func New(s string) error { + return errors.New(s) +} + +func Errorf(s string, args ...interface{}) error { + return errors.Errorf(s, args...) +} + +func Wrap(err error, s string) error { + return errors.Wrap(err, s) +} diff --git a/extra/server-discovery/vendor/github.com/lestrrat-go/strftime/options.go b/extra/server-discovery/vendor/github.com/lestrrat-go/strftime/options.go new file mode 100644 index 000000000..8ef9d9517 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/strftime/options.go @@ -0,0 +1,67 @@ +package strftime + +type Option interface { + Name() string + Value() interface{} +} + +type option struct { + name string + value interface{} +} + +func (o *option) Name() string { return o.name } +func (o *option) Value() interface{} { return o.value } + +const optSpecificationSet = `opt-specification-set` + +// WithSpecification allows you to specify a custom specification set +func WithSpecificationSet(ds SpecificationSet) Option { + return &option{ + name: optSpecificationSet, + value: ds, + } +} + +type optSpecificationPair struct { + name byte + appender Appender +} + +const optSpecification = `opt-specification` + +// WithSpecification allows you to create a new specification set on the fly, +// to be used only for that invocation. +func WithSpecification(b byte, a Appender) Option { + return &option{ + name: optSpecification, + value: &optSpecificationPair{ + name: b, + appender: a, + }, + } +} + +// WithMilliseconds is similar to WithSpecification, and specifies that +// the Strftime object should interpret the pattern `%b` (where b +// is the byte that you specify as the argument) +// as the zero-padded, 3 letter milliseconds of the time. +func WithMilliseconds(b byte) Option { + return WithSpecification(b, Milliseconds()) +} + +// WithMicroseconds is similar to WithSpecification, and specifies that +// the Strftime object should interpret the pattern `%b` (where b +// is the byte that you specify as the argument) +// as the zero-padded, 3 letter microseconds of the time. +func WithMicroseconds(b byte) Option { + return WithSpecification(b, Microseconds()) +} + +// WithUnixSeconds is similar to WithSpecification, and specifies that +// the Strftime object should interpret the pattern `%b` (where b +// is the byte that you specify as the argument) +// as the unix timestamp in seconds +func WithUnixSeconds(b byte) Option { + return WithSpecification(b, UnixSeconds()) +} diff --git a/extra/server-discovery/vendor/github.com/lestrrat-go/strftime/specifications.go b/extra/server-discovery/vendor/github.com/lestrrat-go/strftime/specifications.go new file mode 100644 index 000000000..2b6e11fed --- /dev/null +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/strftime/specifications.go @@ -0,0 +1,152 @@ +package strftime + +import ( + "fmt" + "sync" + + "github.com/lestrrat-go/strftime/internal/errors" +) + +// because there is no such thing was a sync.RWLocker +type rwLocker interface { + RLock() + RUnlock() + sync.Locker +} + +// SpecificationSet is a container for patterns that Strftime uses. +// If you want a custom strftime, you can copy the default +// SpecificationSet and tweak it +type SpecificationSet interface { + Lookup(byte) (Appender, error) + Delete(byte) error + Set(byte, Appender) error +} + +type specificationSet struct { + mutable bool + lock rwLocker + store map[byte]Appender +} + +// The default specification set does not need any locking as it is never +// accessed from the outside, and is never mutated. +var defaultSpecificationSet SpecificationSet + +func init() { + defaultSpecificationSet = newImmutableSpecificationSet() +} + +func newImmutableSpecificationSet() SpecificationSet { + // Create a mutable one so that populateDefaultSpecifications work through + // its magic, then copy the associated map + // (NOTE: this is done this way because there used to be + // two struct types for specification set, united under an interface. + // it can now be removed, but we would need to change the entire + // populateDefaultSpecifications method, and I'm currently too lazy + // PRs welcome) + tmp := NewSpecificationSet() + + ss := &specificationSet{ + mutable: false, + lock: nil, // never used, so intentionally not initialized + store: tmp.(*specificationSet).store, + } + + return ss +} + +// NewSpecificationSet creates a specification set with the default specifications. +func NewSpecificationSet() SpecificationSet { + ds := &specificationSet{ + mutable: true, + lock: &sync.RWMutex{}, + store: make(map[byte]Appender), + } + populateDefaultSpecifications(ds) + + return ds +} + +var defaultSpecifications = map[byte]Appender{ + 'A': fullWeekDayName, + 'a': abbrvWeekDayName, + 'B': fullMonthName, + 'b': abbrvMonthName, + 'C': centuryDecimal, + 'c': timeAndDate, + 'D': mdy, + 'd': dayOfMonthZeroPad, + 'e': dayOfMonthSpacePad, + 'F': ymd, + 'H': twentyFourHourClockZeroPad, + 'h': abbrvMonthName, + 'I': twelveHourClockZeroPad, + 'j': dayOfYear, + 'k': twentyFourHourClockSpacePad, + 'l': twelveHourClockSpacePad, + 'M': minutesZeroPad, + 'm': monthNumberZeroPad, + 'n': newline, + 'p': ampm, + 'R': hm, + 'r': imsp, + 'S': secondsNumberZeroPad, + 'T': hms, + 't': tab, + 'U': weekNumberSundayOrigin, + 'u': weekdayMondayOrigin, + 'V': weekNumberMondayOriginOneOrigin, + 'v': eby, + 'W': weekNumberMondayOrigin, + 'w': weekdaySundayOrigin, + 'X': natReprTime, + 'x': natReprDate, + 'Y': year, + 'y': yearNoCentury, + 'Z': timezone, + 'z': timezoneOffset, + '%': percent, +} + +func populateDefaultSpecifications(ds SpecificationSet) { + for c, handler := range defaultSpecifications { + if err := ds.Set(c, handler); err != nil { + panic(fmt.Sprintf("failed to set default specification for %c: %s", c, err)) + } + } +} + +func (ds *specificationSet) Lookup(b byte) (Appender, error) { + if ds.mutable { + ds.lock.RLock() + defer ds.lock.RLock() + } + v, ok := ds.store[b] + if !ok { + return nil, errors.Errorf(`lookup failed: '%%%c' was not found in specification set`, b) + } + return v, nil +} + +func (ds *specificationSet) Delete(b byte) error { + if !ds.mutable { + return errors.New(`delete failed: this specification set is marked immutable`) + } + + ds.lock.Lock() + defer ds.lock.Unlock() + delete(ds.store, b) + return nil +} + +func (ds *specificationSet) Set(b byte, a Appender) error { + if !ds.mutable { + return errors.New(`set failed: this specification set is marked immutable`) + } + + ds.lock.Lock() + defer ds.lock.Unlock() + ds.store[b] = a + return nil +} diff --git a/extra/server-discovery/vendor/github.com/lestrrat-go/strftime/strftime.go b/extra/server-discovery/vendor/github.com/lestrrat-go/strftime/strftime.go new file mode 100644 index 000000000..c869491fe --- /dev/null +++ b/extra/server-discovery/vendor/github.com/lestrrat-go/strftime/strftime.go @@ -0,0 +1,228 @@ +package strftime + +import ( + "io" + "strings" + "sync" + "time" + + "github.com/lestrrat-go/strftime/internal/errors" +) + +type compileHandler interface { + handle(Appender) +} + +// compile, and create an appender list +type appenderListBuilder struct { + list *combiningAppend +} + +func (alb *appenderListBuilder) handle(a Appender) { + alb.list.Append(a) +} + +// compile, and execute the appenders on the fly +type appenderExecutor struct { + t time.Time + dst []byte +} + +func (ae *appenderExecutor) handle(a Appender) { + ae.dst = a.Append(ae.dst, ae.t) +} + +func compile(handler compileHandler, p string, ds SpecificationSet) error { + for l := len(p); l > 0; l = len(p) { + // This is a really tight loop, so we don't even calls to + // Verbatim() to cuase extra stuff + var verbatim verbatimw + + i := strings.IndexByte(p, '%') + if i < 0 { + verbatim.s = p + handler.handle(&verbatim) + // this is silly, but I don't trust break keywords when there's a + // possibility of this piece of code being rearranged + p = p[l:] + continue + } + if i == l-1 { + return errors.New(`stray % at the end of pattern`) + } + + // we found a '%'. we need the next byte to decide what to do next + // we already know that i < l - 1 + // everything up to the i is verbatim + if i > 0 { + verbatim.s = p[:i] + handler.handle(&verbatim) + p = p[i:] + } + + specification, err := ds.Lookup(p[1]) + if err != nil { + return errors.Wrap(err, `pattern compilation failed`) + } + + handler.handle(specification) + p = p[2:] + } + return nil +} + +func getSpecificationSetFor(options ...Option) (SpecificationSet, error) { + var ds SpecificationSet = defaultSpecificationSet + var extraSpecifications []*optSpecificationPair + for _, option := range options { + switch option.Name() { + case optSpecificationSet: + ds = option.Value().(SpecificationSet) + case optSpecification: + extraSpecifications = append(extraSpecifications, option.Value().(*optSpecificationPair)) + } + } + + if len(extraSpecifications) > 0 { + // If ds is immutable, we're going to need to create a new + // one. oh what a waste! + if raw, ok := ds.(*specificationSet); ok && !raw.mutable { + ds = NewSpecificationSet() + } + for _, v := range extraSpecifications { + if err := ds.Set(v.name, v.appender); err != nil { + return nil, err + } + } + } + return ds, nil +} + +var fmtAppendExecutorPool = sync.Pool{ + New: func() interface{} { + var h appenderExecutor + h.dst = make([]byte, 0, 32) + return &h + }, +} + +func getFmtAppendExecutor() *appenderExecutor { + return fmtAppendExecutorPool.Get().(*appenderExecutor) +} + +func releasdeFmtAppendExecutor(v *appenderExecutor) { + // TODO: should we discard the buffer if it's too long? + v.dst = v.dst[:0] + fmtAppendExecutorPool.Put(v) +} + +// Format takes the format `s` and the time `t` to produce the +// format date/time. Note that this function re-compiles the +// pattern every time it is called. +// +// If you know beforehand that you will be reusing the pattern +// within your application, consider creating a `Strftime` object +// and reusing it. +func Format(p string, t time.Time, options ...Option) (string, error) { + // TODO: this may be premature optimization + ds, err := getSpecificationSetFor(options...) + if err != nil { + return "", errors.Wrap(err, `failed to get specification set`) + } + h := getFmtAppendExecutor() + defer releasdeFmtAppendExecutor(h) + + h.t = t + if err := compile(h, p, ds); err != nil { + return "", errors.Wrap(err, `failed to compile format`) + } + + return string(h.dst), nil +} + +// Strftime is the object that represents a compiled strftime pattern +type Strftime struct { + pattern string + compiled appenderList +} + +// New creates a new Strftime object. If the compilation fails, then +// an error is returned in the second argument. +func New(p string, options ...Option) (*Strftime, error) { + // TODO: this may be premature optimization + ds, err := getSpecificationSetFor(options...) + if err != nil { + return nil, errors.Wrap(err, `failed to get specification set`) + } + + var h appenderListBuilder + h.list = &combiningAppend{} + + if err := compile(&h, p, ds); err != nil { + return nil, errors.Wrap(err, `failed to compile format`) + } + + return &Strftime{ + pattern: p, + compiled: h.list.list, + }, nil +} + +// Pattern returns the original pattern string +func (f *Strftime) Pattern() string { + return f.pattern +} + +// Format takes the destination `dst` and time `t`. It formats the date/time +// using the pre-compiled pattern, and outputs the results to `dst` +func (f *Strftime) Format(dst io.Writer, t time.Time) error { + const bufSize = 64 + var b []byte + max := len(f.pattern) + 10 + if max < bufSize { + var buf [bufSize]byte + b = buf[:0] + } else { + b = make([]byte, 0, max) + } + if _, err := dst.Write(f.format(b, t)); err != nil { + return err + } + return nil +} + +// FormatBuffer is equivalent to Format, but appends the result directly to +// supplied slice dst, returning the updated slice. This avoids any internal +// memory allocation. +func (f *Strftime) FormatBuffer(dst []byte, t time.Time) []byte { + return f.format(dst, t) +} + +// Dump outputs the internal structure of the formatter, for debugging purposes. +// Please do NOT assume the output format to be fixed: it is expected to change +// in the future. +func (f *Strftime) Dump(out io.Writer) { + f.compiled.dump(out) +} + +func (f *Strftime) format(b []byte, t time.Time) []byte { + for _, w := range f.compiled { + b = w.Append(b, t) + } + return b +} + +// FormatString takes the time `t` and formats it, returning the +// string containing the formated data. +func (f *Strftime) FormatString(t time.Time) string { + const bufSize = 64 + var b []byte + max := len(f.pattern) + 10 + if max < bufSize { + var buf [bufSize]byte + b = buf[:0] + } else { + b = make([]byte, 0, max) + } + return string(f.format(b, t)) +} diff --git a/aux/server-discovery/vendor/github.com/microcosm-cc/bluemonday/.coveralls.yml b/extra/server-discovery/vendor/github.com/microcosm-cc/bluemonday/.coveralls.yml similarity index 100% rename from aux/server-discovery/vendor/github.com/microcosm-cc/bluemonday/.coveralls.yml rename to extra/server-discovery/vendor/github.com/microcosm-cc/bluemonday/.coveralls.yml diff --git a/aux/server-discovery/vendor/github.com/microcosm-cc/bluemonday/.editorconfig b/extra/server-discovery/vendor/github.com/microcosm-cc/bluemonday/.editorconfig similarity index 100% rename from aux/server-discovery/vendor/github.com/microcosm-cc/bluemonday/.editorconfig rename to extra/server-discovery/vendor/github.com/microcosm-cc/bluemonday/.editorconfig diff --git a/aux/server-discovery/vendor/github.com/microcosm-cc/bluemonday/.gitattributes b/extra/server-discovery/vendor/github.com/microcosm-cc/bluemonday/.gitattributes similarity index 100% rename from aux/server-discovery/vendor/github.com/microcosm-cc/bluemonday/.gitattributes rename to extra/server-discovery/vendor/github.com/microcosm-cc/bluemonday/.gitattributes diff --git a/aux/server-discovery/vendor/github.com/microcosm-cc/bluemonday/.gitignore b/extra/server-discovery/vendor/github.com/microcosm-cc/bluemonday/.gitignore similarity index 100% rename from aux/server-discovery/vendor/github.com/microcosm-cc/bluemonday/.gitignore rename to extra/server-discovery/vendor/github.com/microcosm-cc/bluemonday/.gitignore diff --git a/aux/server-discovery/vendor/github.com/microcosm-cc/bluemonday/.travis.yml b/extra/server-discovery/vendor/github.com/microcosm-cc/bluemonday/.travis.yml similarity index 100% rename from aux/server-discovery/vendor/github.com/microcosm-cc/bluemonday/.travis.yml rename to extra/server-discovery/vendor/github.com/microcosm-cc/bluemonday/.travis.yml diff --git a/extra/server-discovery/vendor/github.com/microcosm-cc/bluemonday/CONTRIBUTING.md b/extra/server-discovery/vendor/github.com/microcosm-cc/bluemonday/CONTRIBUTING.md new file mode 100644 index 000000000..1d4b24434 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/microcosm-cc/bluemonday/CONTRIBUTING.md @@ -0,0 +1,52 @@ +# Contributing to bluemonday + +Third-party patches are essential for keeping bluemonday secure and offering the features developers want. However there are a few guidelines that we need contributors to follow so that we can maintain the quality of work that developers who use bluemonday expect. + +## Getting Started + +* Make sure you have a [Github account](https://github.com/signup/free) + +## Guidelines + +1. Do not vendor dependencies. As a security package, were we to vendor dependencies the projects that then vendor bluemonday may not receive the latest security updates to the dependencies. By not vendoring dependencies the project that implements bluemonday will vendor the latest version of any dependent packages. Vendoring is a project problem, not a package problem. bluemonday will be tested against the latest version of dependencies periodically and during any PR/merge. +2. I do not care about spelling mistakes or whitespace and I do not believe that you should either. PRs therefore must be functional in their nature or be substantial and impactful if documentation or examples. + +## Submitting an Issue + +* Submit a ticket for your issue, assuming one does not already exist +* Clearly describe the issue including the steps to reproduce (with sample input and output) if it is a bug + +If you are reporting a security flaw, you may expect that we will provide the code to fix it for you. Otherwise you may want to submit a pull request to ensure the resolution is applied sooner rather than later: + +* Fork the repository on Github +* Issue a pull request containing code to resolve the issue + +## Submitting a Pull Request + +* Submit a ticket for your issue, assuming one does not already exist +* Describe the reason for the pull request and if applicable show some example inputs and outputs to demonstrate what the patch does +* Fork the repository on Github +* Before submitting the pull request you should + 1. Include tests for your patch, 1 test should encapsulate the entire patch and should refer to the Github issue + 1. If you have added new exposed/public functionality, you should ensure it is documented appropriately + 1. If you have added new exposed/public functionality, you should consider demonstrating how to use it within one of the helpers or shipped policies if appropriate or within a test if modifying a helper or policy is not appropriate + 1. Run all of the tests `go test -v ./...` or `make test` and ensure all tests pass + 1. Run gofmt `gofmt -w ./$*` or `make fmt` + 1. Run vet `go tool vet *.go` or `make vet` and resolve any issues + 1. Install golint using `go get -u github.com/golang/lint/golint` and run vet `golint *.go` or `make lint` and resolve every warning +* When submitting the pull request you should + 1. Note the issue(s) it resolves, i.e. `Closes #6` in the pull request comment to close issue #6 when the pull request is accepted + +Once you have submitted a pull request, we *may* merge it without changes. If we have any comments or feedback, or need you to make changes to your pull request we will update the Github pull request or the associated issue. We expect responses from you within two weeks, and we may close the pull request is there is no activity. + +### Contributor Licence Agreement + +We haven't gone for the formal "Sign a Contributor Licence Agreement" thing that projects like [puppet](https://cla.puppetlabs.com/), [Mojito](https://developer.yahoo.com/cocktails/mojito/cla/) and companies like [Google](http://code.google.com/legal/individual-cla-v1.0.html) are using. + +But we do need to know that we can accept and merge your contributions, so for now the act of contributing a pull request should be considered equivalent to agreeing to a contributor licence agreement, specifically: + +You accept that the act of submitting code to the bluemonday project is to grant a copyright licence to the project that is perpetual, worldwide, non-exclusive, no-charge, royalty free and irrevocable. + +You accept that all who comply with the licence of the project (BSD 3-clause) are permitted to use your contributions to the project. + +You accept, and by submitting code do declare, that you have the legal right to grant such a licence to the project and that each of the contributions is your own original creation. diff --git a/extra/server-discovery/vendor/github.com/microcosm-cc/bluemonday/CREDITS.md b/extra/server-discovery/vendor/github.com/microcosm-cc/bluemonday/CREDITS.md new file mode 100644 index 000000000..68fa88da8 --- /dev/null +++ b/extra/server-discovery/vendor/github.com/microcosm-cc/bluemonday/CREDITS.md @@ -0,0 +1,8 @@ +1. John Graham-Cumming http://jgc.org/ +1. Mohammad Gufran https://github.com/Gufran +1. Steven Gutzwiller https://github.com/StevenGutzwiller +1. Andrew Krasichkov @buglloc https://github.com/buglloc +1. Mike Samuel mikesamuel@gmail.com +1. Dmitri Shuralyov shurcooL@gmail.com +1. opennota https://github.com/opennota https://gitlab.com/opennota +1. Tom Anthony https://www.tomanthony.co.uk/ \ No newline at end of file diff --git a/extra/server-discovery/vendor/github.com/microcosm-cc/bluemonday/LICENSE.md b/extra/server-discovery/vendor/github.com/microcosm-cc/bluemonday/LICENSE.md new file mode 100644 index 000000000..f822458ed --- /dev/null +++ b/extra/server-discovery/vendor/github.com/microcosm-cc/bluemonday/LICENSE.md @@ -0,0 +1,28 @@ +Copyright (c) 2014, David Kitchen + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the organisation (Microcosm) nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/aux/server-discovery/vendor/github.com/microcosm-cc/bluemonday/Makefile b/extra/server-discovery/vendor/github.com/microcosm-cc/bluemonday/Makefile similarity index 100% rename from aux/server-discovery/vendor/github.com/microcosm-cc/bluemonday/Makefile rename to extra/server-discovery/vendor/github.com/microcosm-cc/bluemonday/Makefile diff --git a/extra/server-discovery/vendor/github.com/microcosm-cc/bluemonday/README.md b/extra/server-discovery/vendor/github.com/microcosm-cc/bluemonday/README.md new file mode 100644 index 000000000..d20debf0e --- /dev/null +++ b/extra/server-discovery/vendor/github.com/microcosm-cc/bluemonday/README.md @@ -0,0 +1,418 @@ +# bluemonday [![Build Status](https://travis-ci.org/microcosm-cc/bluemonday.svg?branch=master)](https://travis-ci.org/microcosm-cc/bluemonday) [![GoDoc](https://godoc.org/github.com/microcosm-cc/bluemonday?status.png)](https://godoc.org/github.com/microcosm-cc/bluemonday) [![Sourcegraph](https://sourcegraph.com/github.com/microcosm-cc/bluemonday/-/badge.svg)](https://sourcegraph.com/github.com/microcosm-cc/bluemonday?badge) + +bluemonday is a HTML sanitizer implemented in Go. It is fast and highly configurable. + +bluemonday takes untrusted user generated content as an input, and will return HTML that has been sanitised against an allowlist of approved HTML elements and attributes so that you can safely include the content in your web page. + +If you accept user generated content, and your server uses Go, you **need** bluemonday. + +The default policy for user generated content (`bluemonday.UGCPolicy().Sanitize()`) turns this: +```html +Hello World +``` + +Into a harmless: +```html +Hello World +``` + +And it turns this: +```html +XSS +``` + +Into this: +```html +XSS +``` + +Whilst still allowing this: +```html + + + +``` + +To pass through mostly unaltered (it gained a rel="nofollow" which is a good thing for user generated content): +```html + + + +``` + +It protects sites from [XSS](http://en.wikipedia.org/wiki/Cross-site_scripting) attacks. There are many [vectors for an XSS attack](https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet) and the best way to mitigate the risk is to sanitize user input against a known safe list of HTML elements and attributes. + +You should **always** run bluemonday **after** any other processing. + +If you use [blackfriday](https://github.com/russross/blackfriday) or [Pandoc](http://johnmacfarlane.net/pandoc/) then bluemonday should be run after these steps. This ensures that no insecure HTML is introduced later in your process. + +bluemonday is heavily inspired by both the [OWASP Java HTML Sanitizer](https://code.google.com/p/owasp-java-html-sanitizer/) and the [HTML Purifier](http://htmlpurifier.org/). + +## Technical Summary + +Allowlist based, you need to either build a policy describing the HTML elements and attributes to permit (and the `regexp` patterns of attributes), or use one of the supplied policies representing good defaults. + +The policy containing the allowlist is applied using a fast non-validating, forward only, token-based parser implemented in the [Go net/html library](https://godoc.org/golang.org/x/net/html) by the core Go team. + +We expect to be supplied with well-formatted HTML (closing elements for every applicable open element, nested correctly) and so we do not focus on repairing badly nested or incomplete HTML. We focus on simply ensuring that whatever elements do exist are described in the policy allowlist and that attributes and links are safe for use on your web page. [GIGO](http://en.wikipedia.org/wiki/Garbage_in,_garbage_out) does apply and if you feed it bad HTML bluemonday is not tasked with figuring out how to make it good again. + +### Supported Go Versions + +bluemonday is tested on all versions since Go 1.2 including tip. + +We do not support Go 1.0 as we depend on `golang.org/x/net/html` which includes a reference to `io.ErrNoProgress` which did not exist in Go 1.0. + +We support Go 1.1 but Travis no longer tests against it. + +## Is it production ready? + +*Yes* + +We are using bluemonday in production having migrated from the widely used and heavily field tested OWASP Java HTML Sanitizer. + +We are passing our extensive test suite (including AntiSamy tests as well as tests for any issues raised). Check for any [unresolved issues](https://github.com/microcosm-cc/bluemonday/issues?page=1&state=open) to see whether anything may be a blocker for you. + +We invite pull requests and issues to help us ensure we are offering comprehensive protection against various attacks via user generated content. + +## Usage + +Install in your `${GOPATH}` using `go get -u github.com/microcosm-cc/bluemonday` + +Then call it: +```go +package main + +import ( + "fmt" + + "github.com/microcosm-cc/bluemonday" +) + +func main() { + // Do this once for each unique policy, and use the policy for the life of the program + // Policy creation/editing is not safe to use in multiple goroutines + p := bluemonday.UGCPolicy() + + // The policy can then be used to sanitize lots of input and it is safe to use the policy in multiple goroutines + html := p.Sanitize( + `Google`, + ) + + // Output: + // Google + fmt.Println(html) +} +``` + +We offer three ways to call Sanitize: +```go +p.Sanitize(string) string +p.SanitizeBytes([]byte) []byte +p.SanitizeReader(io.Reader) bytes.Buffer +``` + +If you are obsessed about performance, `p.SanitizeReader(r).Bytes()` will return a `[]byte` without performing any unnecessary casting of the inputs or outputs. Though the difference is so negligible you should never need to care. + +You can build your own policies: +```go +package main + +import ( + "fmt" + + "github.com/microcosm-cc/bluemonday" +) + +func main() { + p := bluemonday.NewPolicy() + + // Require URLs to be parseable by net/url.Parse and either: + // mailto: http:// or https:// + p.AllowStandardURLs() + + // We only allow

and + p.AllowAttrs("href").OnElements("a") + p.AllowElements("p") + + html := p.Sanitize( + `Google`, + ) + + // Output: + // Google + fmt.Println(html) +} +``` + +We ship two default policies: + +1. `bluemonday.StrictPolicy()` which can be thought of as equivalent to stripping all HTML elements and their attributes as it has nothing on its allowlist. An example usage scenario would be blog post titles where HTML tags are not expected at all and if they are then the elements *and* the content of the elements should be stripped. This is a *very* strict policy. +2. `bluemonday.UGCPolicy()` which allows a broad selection of HTML elements and attributes that are safe for user generated content. Note that this policy does *not* allow iframes, object, embed, styles, script, etc. An example usage scenario would be blog post bodies where a variety of formatting is expected along with the potential for TABLEs and IMGs. + +## Policy Building + +The essence of building a policy is to determine which HTML elements and attributes are considered safe for your scenario. OWASP provide an [XSS prevention cheat sheet](https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet) to help explain the risks, but essentially: + +1. Avoid anything other than the standard HTML elements +1. Avoid `script`, `style`, `iframe`, `object`, `embed`, `base` elements that allow code to be executed by the client or third party content to be included that can execute code +1. Avoid anything other than plain HTML attributes with values matched to a regexp + +Basically, you should be able to describe what HTML is fine for your scenario. If you do not have confidence that you can describe your policy please consider using one of the shipped policies such as `bluemonday.UGCPolicy()`. + +To create a new policy: +```go +p := bluemonday.NewPolicy() +``` + +To add elements to a policy either add just the elements: +```go +p.AllowElements("b", "strong") +``` + +Or using a regex: + +_Note: if an element is added by name as shown above, any matching regex will be ignored_ + +It is also recommended to ensure multiple patterns don't overlap as order of execution is not guaranteed and can result in some rules being missed. +```go +p.AllowElementsMatching(regex.MustCompile(`^my-element-`)) +``` + +Or add elements as a virtue of adding an attribute: +```go +// Note the recommended pattern, see the recommendation on using .Matching() below +p.AllowAttrs("nowrap").OnElements("td", "th") +``` + +Again, this also supports a regex pattern match alternative: +```go +p.AllowAttrs("nowrap").OnElementsMatching(regex.MustCompile(`^my-element-`)) +``` + +Attributes can either be added to all elements: +```go +p.AllowAttrs("dir").Matching(regexp.MustCompile("(?i)rtl|ltr")).Globally() +``` + +Or attributes can be added to specific elements: +```go +// Not the recommended pattern, see the recommendation on using .Matching() below +p.AllowAttrs("value").OnElements("li") +``` + +It is **always** recommended that an attribute be made to match a pattern. XSS in HTML attributes is very easy otherwise: +```go +// \p{L} matches unicode letters, \p{N} matches unicode numbers +p.AllowAttrs("title").Matching(regexp.MustCompile(`[\p{L}\p{N}\s\-_',:\[\]!\./\\\(\)&]*`)).Globally() +``` + +You can stop at any time and call .Sanitize(): +```go +// string htmlIn passed in from a HTTP POST +htmlOut := p.Sanitize(htmlIn) +``` + +And you can take any existing policy and extend it: +```go +p := bluemonday.UGCPolicy() +p.AllowElements("fieldset", "select", "option") +``` + +### Inline CSS + +Although it's possible to handle inline CSS using `AllowAttrs` with a `Matching` rule, writing a single monolithic regular expression to safely process all inline CSS which you wish to allow is not a trivial task. Instead of attempting to do so, you can allow the `style` attribute on whichever element(s) you desire and use style policies to control and sanitize inline styles. + +It is strongly recommended that you use `Matching` (with a suitable regular expression) +`MatchingEnum`, or `MatchingHandler` to ensure each style matches your needs, +but default handlers are supplied for most widely used styles. + +Similar to attributes, you can allow specific CSS properties to be set inline: +```go +p.AllowAttrs("style").OnElements("span", "p") +// Allow the 'color' property with valid RGB(A) hex values only (on any element allowed a 'style' attribute) +p.AllowStyles("color").Matching(regexp.MustCompile("(?i)^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$")).Globally() +``` + +Additionally, you can allow a CSS property to be set only to an allowed value: +```go +p.AllowAttrs("style").OnElements("span", "p") +// Allow the 'text-decoration' property to be set to 'underline', 'line-through' or 'none' +// on 'span' elements only +p.AllowStyles("text-decoration").MatchingEnum("underline", "line-through", "none").OnElements("span") +``` + +Or you can specify elements based on a regex pattern match: +```go +p.AllowAttrs("style").OnElementsMatching(regex.MustCompile(`^my-element-`)) +// Allow the 'text-decoration' property to be set to 'underline', 'line-through' or 'none' +// on 'span' elements only +p.AllowStyles("text-decoration").MatchingEnum("underline", "line-through", "none").OnElementsMatching(regex.MustCompile(`^my-element-`)) +``` + +If you need more specific checking, you can create a handler that takes in a string and returns a bool to +validate the values for a given property. The string parameter has been +converted to lowercase and unicode code points have been converted. +```go +myHandler := func(value string) bool{ + // Validate your input here + return true +} +p.AllowAttrs("style").OnElements("span", "p") +// Allow the 'color' property with values validated by the handler (on any element allowed a 'style' attribute) +p.AllowStyles("color").MatchingHandler(myHandler).Globally() +``` + +### Links + +Links are difficult beasts to sanitise safely and also one of the biggest attack vectors for malicious content. + +It is possible to do this: +```go +p.AllowAttrs("href").Matching(regexp.MustCompile(`(?i)mailto|https?`)).OnElements("a") +``` + +But that will not protect you as the regular expression is insufficient in this case to have prevented a malformed value doing something unexpected. + +We provide some additional global options for safely working with links. + +`RequireParseableURLs` will ensure that URLs are parseable by Go's `net/url` package: +```go +p.RequireParseableURLs(true) +``` + +If you have enabled parseable URLs then the following option will `AllowRelativeURLs`. By default this is disabled (bluemonday is an allowlist tool... you need to explicitly tell us to permit things) and when disabled it will prevent all local and scheme relative URLs (i.e. `href="localpage.html"`, `href="../home.html"` and even `href="//www.google.com"` are relative): +```go +p.AllowRelativeURLs(true) +``` + +If you have enabled parseable URLs then you can allow the schemes (commonly called protocol when thinking of `http` and `https`) that are permitted. Bear in mind that allowing relative URLs in the above option will allow for a blank scheme: +```go +p.AllowURLSchemes("mailto", "http", "https") +``` + +Regardless of whether you have enabled parseable URLs, you can force all URLs to have a rel="nofollow" attribute. This will be added if it does not exist, but only when the `href` is valid: +```go +// This applies to "a" "area" "link" elements that have a "href" attribute +p.RequireNoFollowOnLinks(true) +``` + +Similarly, you can force all URLs to have "noreferrer" in their rel attribute. +```go +// This applies to "a" "area" "link" elements that have a "href" attribute +p.RequireNoReferrerOnLinks(true) +``` + + +We provide a convenience method that applies all of the above, but you will still need to allow the linkable elements for the URL rules to be applied to: +```go +p.AllowStandardURLs() +p.AllowAttrs("cite").OnElements("blockquote", "q") +p.AllowAttrs("href").OnElements("a", "area") +p.AllowAttrs("src").OnElements("img") +``` + +An additional complexity regarding links is the data URI as defined in [RFC2397](http://tools.ietf.org/html/rfc2397). The data URI allows for images to be served inline using this format: + +```html + +``` + +We have provided a helper to verify the mimetype followed by base64 content of data URIs links: + +```go +p.AllowDataURIImages() +``` + +That helper will enable GIF, JPEG, PNG and WEBP images. + +It should be noted that there is a potential [security](http://palizine.plynt.com/issues/2010Oct/bypass-xss-filters/) [risk](https://capec.mitre.org/data/definitions/244.html) with the use of data URI links. You should only enable data URI links if you already trust the content. + +We also have some features to help deal with user generated content: +```go +p.AddTargetBlankToFullyQualifiedLinks(true) +``` + +This will ensure that anchor `` links that are fully qualified (the href destination includes a host name) will get `target="_blank"` added to them. + +Additionally any link that has `target="_blank"` after the policy has been applied will also have the `rel` attribute adjusted to add `noopener`. This means a link may start like `` and will end up as ``. It is important to note that the addition of `noopener` is a security feature and not an issue. There is an unfortunate feature to browsers that a browser window opened as a result of `target="_blank"` can still control the opener (your web page) and this protects against that. The background to this can be found here: [https://dev.to/ben/the-targetblank-vulnerability-by-example](https://dev.to/ben/the-targetblank-vulnerability-by-example) + +### Policy Building Helpers + +We also bundle some helpers to simplify policy building: +```go + +// Permits the "dir", "id", "lang", "title" attributes globally +p.AllowStandardAttributes() + +// Permits the "img" element and its standard attributes +p.AllowImages() + +// Permits ordered and unordered lists, and also definition lists +p.AllowLists() + +// Permits HTML tables and all applicable elements and non-styling attributes +p.AllowTables() +``` + +### Invalid Instructions + +The following are invalid: +```go +// This does not say where the attributes are allowed, you need to add +// .Globally() or .OnElements(...) +// This will be ignored without error. +p.AllowAttrs("value") + +// This does not say where the attributes are allowed, you need to add +// .Globally() or .OnElements(...) +// This will be ignored without error. +p.AllowAttrs( + "type", +).Matching( + regexp.MustCompile("(?i)^(circle|disc|square|a|A|i|I|1)$"), +) +``` + +Both examples exhibit the same issue, they declare attributes but do not then specify whether they are allowed globally or only on specific elements (and which elements). Attributes belong to one or more elements, and the policy needs to declare this. + +## Limitations + +We are not yet including any tools to help allow and sanitize CSS. Which means that unless you wish to do the heavy lifting in a single regular expression (inadvisable), **you should not allow the "style" attribute anywhere**. + +In the same theme, both `