3
0

Fix discovery server build issues

Rename "aux" to "extra" due to:
> "aux" disallowed as path element component on Windows
This commit is contained in:
Denis Arh
2022-11-23 11:28:20 +01:00
parent 4ab9ca16c8
commit 95e9bfda2a
2112 changed files with 39735 additions and 9857 deletions

View File

@@ -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" }

View File

@@ -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 (<baseUrl>/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: <no value>
# WAIT_FOR=<no value>
###############################################################################
# Show temporary status web page.
# Type: bool
# Default: <no value>
# WAIT_FOR_STATUS_PAGE=<no value>
###############################################################################
###############################################################################
# Open search configuration
#
###############################################################################
# IP and port for the open search.
# Use space delimited string to set multiple addresses.
# Type: []string
# ES_ADDRESS=<no value>
###############################################################################
# Username for the open search connection.
# Type: string
# ES_USERNAME=<no value>
###############################################################################
# Password for the open search connection.
# Type: string
# ES_PASSWORD=<no value>
###############################################################################
# How often are indexes incremented. set value in seconds.
# Type: int
# Default: 600
# ES_INDEX_INTERVAL=600
###############################################################################
# ES_ENABLE_RETRY_ON_TIMEOUT=<no value>
###############################################################################
# ES_MAX_RETRIES=<no value>
###############################################################################
###############################################################################
# Corteza server configuration
#
###############################################################################
# IP and port for the corteza server.
# Type: string
# CORTEZA_SERVER_BASE_URL=<no value>
###############################################################################
# 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=<no value>
###############################################################################
# Enables indexing for corteza resources based on client permissions.
# prefix is one of 'public', 'protected' or 'private'".
# Type: string
# DISCOVERY_INDEXER_<PREFIX>_INDEX_CLIENT_KEY=<no value>
# DISCOVERY_INDEXER_<PREFIX>_INDEX_CLIENT_SECRET=<no value>
###############################################################################
###############################################################################
# Corteza discovery searcher configuration
#
###############################################################################
# Enables searching for corteza resources and also enables search endpoints.
# Type: bool
# DISCOVERY_SEARCHER_ENABLED=<no value>
###############################################################################
# Used to restrict corteza resources based on client permissions.
# Type: string
# DISCOVERY_SEARCHER_CLIENT_KEY=<no value>
# DISCOVERY_SEARCHER_CLIENT_SECRET=<no value>
###############################################################################
# It enables access to private indexing.
# Type: string
# DISCOVERY_SEARCHER_JWT_SECRET=<no value>

View File

@@ -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
)

View File

@@ -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=

View File

@@ -1,2 +0,0 @@
---
version: Version {{version}}

View File

@@ -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.

View File

@@ -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

View File

@@ -1,3 +0,0 @@
template:
log-out: Logout successful.
log-in: Click here to <a href="{{link}}">log in</a>.

View File

@@ -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 <a href="{{link}}">log out</a>.
errors:
invalid-user: Cannot continue with unauthorized email, visit <a href="{{link}}">your profile</a> and resolve the issue.
alerts:
denied: cannot authorize {{client}}, no permissions.

View File

@@ -1,4 +0,0 @@
template:
title: Confirm your email
instructions: You should receive email confirmation link to your inbox in a few moments.
links: <a href="{{signup}}">Create new account</a> or <a href="{{login}}">log in</a>.

View File

@@ -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: <a href="{{login}}">Return to the login page</a>

View File

@@ -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

View File

@@ -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'

View File

@@ -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.

View File

@@ -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

View File

@@ -1,7 +0,0 @@
label:
add: + Add
back: Back
delete: Delete
ok: Ok
save: Save
urlPlaceholder: https://example.tld

View File

@@ -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

View File

@@ -1,2 +0,0 @@
---
version: version {{version}}

View File

@@ -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.
<br />
<br />
This will enable additional security for your account.
<br />
<br />
You can use one of the following applications:
lastpass: <a target="_blank" href="{{ link }}">LastPass Authenticator</a>
gauth: Google Authenticator for <a target="_blank" href="{{ android }}">Android</a> or <a target="_blank" href="{{ iphone }}">iPhone</a>
authy: <a target="_blank" href="{{ link }}">Authy</a>
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

View File

@@ -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.

View File

@@ -1,19 +0,0 @@
---
template:
title: Your profile
form:
email:
label: Email
placeholder: email@domain.ltd
resend-confirmation-link: Email is not verified, <a href="{{link}}?resend">resend confirmation link.</a>
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

View File

@@ -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.

View File

@@ -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.

View File

@@ -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

View File

@@ -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.

View File

@@ -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.

View File

@@ -1,3 +0,0 @@
---
template:
title: Internal error

View File

@@ -1,3 +0,0 @@
---
logged-in-as: You're logged-in as
logout: logout

View File

@@ -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

View File

@@ -1,4 +0,0 @@
---
template:
log-out: Logout successful.
log-in: Click here to <a href="{{link}}">log in</a>.

View File

@@ -1,6 +0,0 @@
---
template:
title: Disable two-factor authentication with TOTP
instructions: Disable by entering existing code.
button:
remove: Remove

View File

@@ -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

View File

@@ -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: <a href="{{signup}}">Create new account</a> or <a href="{{login}}">log in</a>.
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.

View File

@@ -1,5 +0,0 @@
---
template:
title: Confirm your email
instructions: You should receive email confirmation link to your inbox in a few moments.
links: <a href="{{signup}}">Create new account</a> or <a href="{{login}}">log in</a>.

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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? <a href="{{link}}">Log in</a>
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

View File

@@ -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 <name>)
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

View File

@@ -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.

View File

@@ -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))
}

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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.

View File

@@ -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
}

View File

@@ -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.

View File

@@ -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
}

View File

@@ -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 (<baseUrl>/auth, <baseUrl>/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!

View File

@@ -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
}

View File

@@ -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.

View File

@@ -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
}

View File

@@ -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

View File

@@ -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
}

View File

@@ -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

View File

@@ -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
}

View File

@@ -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

View File

@@ -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
}

View File

@@ -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

View File

@@ -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
}

View File

@@ -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.

View File

@@ -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
}

View File

@@ -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

View File

@@ -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
}

View File

@@ -1,7 +0,0 @@
docs:
title: Environment
props:
- name: environment
default: "production"
env: ENVIRONMENT

View File

@@ -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
}

View File

@@ -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.

View File

@@ -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
}

View File

@@ -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

View File

@@ -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
}

View File

@@ -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

View File

@@ -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
}

View File

@@ -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.

View File

@@ -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
}

View File

@@ -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

View File

@@ -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
}

View File

@@ -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

View File

@@ -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
}

View File

@@ -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.

View File

@@ -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
}

View File

@@ -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

View File

@@ -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
}

View File

@@ -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

View File

@@ -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
}

View File

@@ -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.

View File

@@ -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
}

View File

@@ -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

View File

@@ -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
}

View File

@@ -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.

View File

@@ -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
}

View File

@@ -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.

View File

@@ -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
}

View File

@@ -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.

View File

@@ -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
}

View File

@@ -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.

View File

@@ -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
}

View File

@@ -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

View File

@@ -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
}

View File

@@ -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

View File

@@ -1,13 +0,0 @@
language: go
script:
- go vet ./...
- go test -v ./...
go:
- 1.3
- 1.4
- 1.5
- 1.6
- 1.7
- tip

View File

@@ -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

Some files were not shown because too many files have changed in this diff Show More