diff --git a/SUMMARY.md b/SUMMARY.md index 10d997a32..2c73ba5d5 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -27,6 +27,7 @@ * [Kubernetes Dashboard](deployment/digital-ocean/dashboard/README.md) * [HTTPS](deployment/digital-ocean/https/README.md) * [Human Connection](deployment/human-connection/README.md) + * [Error Reporting](deployment/human-connection/error-reporting/README.md) * [Mailserver](deployment/human-connection/mailserver/README.md) * [Maintenance](deployment/human-connection/maintenance/README.md) * [Volumes](deployment/volumes/README.md) diff --git a/backend/.env.template b/backend/.env.template index 0227b93d4..6697f09c4 100644 --- a/backend/.env.template +++ b/backend/.env.template @@ -14,3 +14,6 @@ JWT_SECRET="b/&&7b78BF&fv/Vd" MAPBOX_TOKEN="pk.eyJ1IjoiaHVtYW4tY29ubmVjdGlvbiIsImEiOiJjajl0cnBubGoweTVlM3VwZ2lzNTNud3ZtIn0.KZ8KK9l70omjXbEkkbHGsQ" PRIVATE_KEY_PASSPHRASE="a7dsf78sadg87ad87sfagsadg78" + +SENTRY_DSN_BACKEND= +COMMIT= diff --git a/backend/package.json b/backend/package.json index e9f6a92b7..290244edd 100644 --- a/backend/package.json +++ b/backend/package.json @@ -43,6 +43,7 @@ }, "dependencies": { "@hapi/joi": "^15.1.1", + "@sentry/node": "^5.6.1", "activitystrea.ms": "~2.1.3", "apollo-cache-inmemory": "~1.6.3", "apollo-client": "~2.6.4", @@ -64,6 +65,7 @@ "graphql-custom-directives": "~0.2.14", "graphql-iso-date": "~3.6.1", "graphql-middleware": "~3.0.5", + "graphql-middleware-sentry": "^3.2.0", "graphql-shield": "~6.0.4", "graphql-tag": "~2.10.1", "helmet": "~3.20.0", diff --git a/backend/src/config/index.js b/backend/src/config/index.js index daba745c8..3709b5cc3 100644 --- a/backend/src/config/index.js +++ b/backend/src/config/index.js @@ -11,6 +11,8 @@ const { SMTP_PORT, SMTP_USERNAME, SMTP_PASSWORD, + SENTRY_DSN_BACKEND, + COMMIT, NEO4J_URI = 'bolt://localhost:7687', NEO4J_USERNAME = 'neo4j', NEO4J_PASSWORD = 'neo4j', @@ -31,15 +33,18 @@ export const neo4jConfigs = { NEO4J_URI, NEO4J_USERNAME, NEO4J_PASSWORD } export const serverConfigs = { GRAPHQL_PORT, CLIENT_URI, GRAPHQL_URI } export const developmentConfigs = { - DEBUG: process.env.NODE_ENV !== 'production' && process.env.DEBUG === 'true', + DEBUG: process.env.NODE_ENV !== 'production' && process.env.DEBUG, DISABLED_MIDDLEWARES: (process.env.NODE_ENV !== 'production' && process.env.DISABLED_MIDDLEWARES) || '', } +export const sentryConfigs = { SENTRY_DSN_BACKEND, COMMIT } + export default { ...requiredConfigs, ...smtpConfigs, ...neo4jConfigs, ...serverConfigs, ...developmentConfigs, + ...sentryConfigs, } diff --git a/backend/src/middleware/index.js b/backend/src/middleware/index.js index ba5b9d324..3407c6874 100644 --- a/backend/src/middleware/index.js +++ b/backend/src/middleware/index.js @@ -14,10 +14,12 @@ import orderBy from './orderByMiddleware' import validation from './validation/validationMiddleware' import handleContentData from './handleHtmlContent/handleContentData' import email from './email/emailMiddleware' +import sentry from './sentryMiddleware' export default schema => { const middlewares = { permissions: permissions, + sentry: sentry, activityPub: activityPub, dateTime: dateTime, validation: validation, @@ -33,6 +35,7 @@ export default schema => { } let order = [ + 'sentry', 'permissions', // 'activityPub', disabled temporarily 'dateTime', diff --git a/backend/src/middleware/permissionsMiddleware.js b/backend/src/middleware/permissionsMiddleware.js index 0f6f9e1c5..83c29d19d 100644 --- a/backend/src/middleware/permissionsMiddleware.js +++ b/backend/src/middleware/permissionsMiddleware.js @@ -1,12 +1,12 @@ import { rule, shield, deny, allow, and, or, not } from 'graphql-shield' import { neode } from '../bootstrap/neo4j' +import CONFIG from '../config' + +const debug = !!CONFIG.DEBUG +const allowExternalErrors = true const instance = neode() -/* - * TODO: implement - * See: https://github.com/Human-Connection/Nitro-Backend/pull/40#pullrequestreview-180898363 - */ const isAuthenticated = rule({ cache: 'contextual', })(async (_parent, _args, ctx, _info) => { @@ -204,6 +204,8 @@ const permissions = shield( }, }, { + debug, + allowExternalErrors, fallbackRule: allow, }, ) diff --git a/backend/src/middleware/sentryMiddleware.js b/backend/src/middleware/sentryMiddleware.js new file mode 100644 index 000000000..b1130ad37 --- /dev/null +++ b/backend/src/middleware/sentryMiddleware.js @@ -0,0 +1,26 @@ +import { sentry } from 'graphql-middleware-sentry' +import { sentryConfigs } from '../config' + +let sentryMiddleware = (resolve, root, args, context, resolveInfo) => + resolve(root, args, context, resolveInfo) + +if (sentryConfigs.SENTRY_DSN_BACKEND) { + sentryMiddleware = sentry({ + forwardErrors: true, + config: { + dsn: sentryConfigs.SENTRY_DSN_BACKEND, + release: sentryConfigs.COMMIT, + environment: process.env.NODE_ENV, + }, + withScope: (scope, error, context) => { + scope.setUser({ + id: context.user.id, + }) + scope.setExtra('body', context.req.body) + scope.setExtra('origin', context.req.headers.origin) + scope.setExtra('user-agent', context.req.headers['user-agent']) + }, + }) +} + +export default sentryMiddleware diff --git a/backend/src/schema/index.js b/backend/src/schema/index.js index 2b24178e1..b8f120057 100644 --- a/backend/src/schema/index.js +++ b/backend/src/schema/index.js @@ -35,7 +35,7 @@ export default applyScalars( ], // add 'User' here as soon as possible }, - debug: CONFIG.DEBUG, + debug: !!CONFIG.DEBUG, }, }), ), diff --git a/backend/src/server.js b/backend/src/server.js index 752cd96fb..f92e77fed 100644 --- a/backend/src/server.js +++ b/backend/src/server.js @@ -33,8 +33,8 @@ const createServer = options => { } }, schema: middleware(schema), - debug: CONFIG.DEBUG, - tracing: CONFIG.DEBUG, + debug: !!CONFIG.DEBUG, + tracing: !!CONFIG.DEBUG, } const server = new ApolloServer(Object.assign({}, defaults, options)) diff --git a/backend/yarn.lock b/backend/yarn.lock index 33a159604..0cd1ce266 100644 --- a/backend/yarn.lock +++ b/backend/yarn.lock @@ -1074,6 +1074,62 @@ resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA= +"@sentry/core@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.6.1.tgz#946f064cc500bf4cd2a1bac580192fe440b614c7" + integrity sha512-gK8XfkJIZLsBEQehkr2q2fdHI50B3yo4RXiixSZiNBVIzQ+1z3JcMssDzGwhbY81NHUzHZ7of3oQ4Ab4OGRI/g== + dependencies: + "@sentry/hub" "5.6.1" + "@sentry/minimal" "5.6.1" + "@sentry/types" "5.6.1" + "@sentry/utils" "5.6.1" + tslib "^1.9.3" + +"@sentry/hub@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-5.6.1.tgz#9f355c0abcc92327fbd10b9b939608aa4967bece" + integrity sha512-m+OhkIV5yTAL3R1+XfCwzUQka0UF/xG4py8sEfPXyYIcoOJ2ZTX+1kQJLy8QQJ4RzOBwZA+DzRKP0cgzPJ3+oQ== + dependencies: + "@sentry/types" "5.6.1" + "@sentry/utils" "5.6.1" + tslib "^1.9.3" + +"@sentry/minimal@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-5.6.1.tgz#09d92b26de0b24555cd50c3c33ba4c3e566009a1" + integrity sha512-ercCKuBWHog6aS6SsJRuKhJwNdJ2oRQVWT2UAx1zqvsbHT9mSa8ZRjdPHYOtqY3DoXKk/pLUFW/fkmAnpdMqRw== + dependencies: + "@sentry/hub" "5.6.1" + "@sentry/types" "5.6.1" + tslib "^1.9.3" + +"@sentry/node@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@sentry/node/-/node-5.6.1.tgz#745adde66e78a605d3edfd3b4108a9e2a6859cc4" + integrity sha512-8gNjFRrTOG3vu2RpWZnUSxNx6Ui2Dthq2VHeVImt7PYtVaSddlYZvt0xl8L/fJC/TvFZEPfX0d8Is9v8yvsgRQ== + dependencies: + "@sentry/core" "5.6.1" + "@sentry/hub" "5.6.1" + "@sentry/types" "5.6.1" + "@sentry/utils" "5.6.1" + cookie "0.3.1" + https-proxy-agent "2.2.1" + lru_map "0.3.3" + tslib "^1.9.3" + +"@sentry/types@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.6.1.tgz#5915e1ee4b7a678da3ac260c356b1cb91139a299" + integrity sha512-Kub8TETefHpdhvtnDj3kKfhCj0u/xn3Zi2zIC7PB11NJHvvPXENx97tciz4roJGp7cLRCJsFqCg4tHXniqDSnQ== + +"@sentry/utils@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-5.6.1.tgz#69d9e151e50415bc91f2428e3bcca8beb9bc2815" + integrity sha512-rfgha+UsHW816GqlSRPlniKqAZylOmQWML2JsujoUP03nPu80zdN43DK9Poy/d9OxBxv0gd5K2n+bFdM2kqLQQ== + dependencies: + "@sentry/types" "5.6.1" + tslib "^1.9.3" + "@sindresorhus/is@^0.14.0": version "0.14.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" @@ -1440,6 +1496,13 @@ activitystreams-context@>=3.0.0, activitystreams-context@^3.0.0: resolved "https://registry.yarnpkg.com/activitystreams-context/-/activitystreams-context-3.1.0.tgz#28334e129f17cfb937e8c702c52c1bcb1d2830c7" integrity sha512-KBQ+igwf1tezMXGVw5MvRSEm0gp97JI1hTZ45I6MEkWv25lEgNoA9L6wqfaOiCX8wnMRWw9pwRsPZKypdtxAtg== +agent-base@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" + integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== + dependencies: + es6-promisify "^5.0.0" + aggregate-error@3.0.0, aggregate-error@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.0.tgz#5b5a3c95e9095f311c9ab16c19fb4f3527cd3f79" @@ -2632,6 +2695,11 @@ cookie-signature@1.0.6: resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= +cookie@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" + integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= + cookie@0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" @@ -3227,6 +3295,11 @@ es6-promise@^2.0.0: resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-2.3.0.tgz#96edb9f2fdb01995822b263dd8aadab6748181bc" integrity sha1-lu258v2wGZWCKyY92KratnSBgbw= +es6-promise@^4.0.3: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + es6-promise@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-2.0.1.tgz#ccc4963e679f0ca9fb187c777b9e583d3c7573c2" @@ -3237,6 +3310,13 @@ es6-promise@~4.0.5: resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.0.5.tgz#7882f30adde5b240ccfa7f7d78c548330951ae42" integrity sha1-eILzCt3lskDM+n99eMVIMwlRrkI= +es6-promisify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= + dependencies: + es6-promise "^4.0.3" + es6-symbol@^3.1.1, es6-symbol@~3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" @@ -4084,6 +4164,11 @@ graphql-iso-date@~3.6.1: resolved "https://registry.yarnpkg.com/graphql-iso-date/-/graphql-iso-date-3.6.1.tgz#bd2d0dc886e0f954cbbbc496bbf1d480b57ffa96" integrity sha512-AwFGIuYMJQXOEAgRlJlFL4H1ncFM8n8XmoVDTNypNOZyQ8LFDG2ppMFlsS862BSTCDcSUfHp8PD3/uJhv7t59Q== +graphql-middleware-sentry@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/graphql-middleware-sentry/-/graphql-middleware-sentry-3.2.0.tgz#a72872ae4b9fbe286980023a3c531286b8258df7" + integrity sha512-tIrxJIL+MRh2pxoot+EYJIrFfPgB3OF4nqmmh1gi54q/V1rgv7w46Ahn2jgl2nTu4bKw6mtGVF4CKikWCMPa5Q== + graphql-middleware@~3.0.5: version "3.0.5" resolved "https://registry.yarnpkg.com/graphql-middleware/-/graphql-middleware-3.0.5.tgz#8cbce45ce4be95bd4600ffe5332e1936ec721e10" @@ -4383,6 +4468,14 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" +https-proxy-agent@2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0" + integrity sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ== + dependencies: + agent-base "^4.1.0" + debug "^3.1.0" + iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -5728,6 +5821,11 @@ lru-cache@^5.0.0: dependencies: yallist "^3.0.2" +lru_map@0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" + integrity sha1-tcg1G5Rky9dQM1p5ZQoOwOVhGN0= + make-dir@^1.0.0, make-dir@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" diff --git a/deployment/human-connection/error-reporting/README.md b/deployment/human-connection/error-reporting/README.md new file mode 100644 index 000000000..5a4eac7c9 --- /dev/null +++ b/deployment/human-connection/error-reporting/README.md @@ -0,0 +1,16 @@ +# Error reporting + +We use [Sentry](https://github.com/getsentry/sentry) for error reporting in both +our backend and web frontend. You can either use a hosted or a self-hosted +instance. Just set the two `DSN` in your +[configmap](../templates/configmap.template.yaml) and update the `COMMIT` +during a deployment with your commit or the version of your release. + +## Self-hosted Sentry + +For data privacy it is recommended to set up your own instance of sentry. +If you are lucky enough to have a kubernetes cluster with the required hardware +support, try this [helm chart](https://github.com/helm/charts/tree/master/stable/sentry). + +On our kubernetes cluster we get "mult-attach" errors for persistent volumes. +Apparently Digital Ocean's kubernetes clusters do not fulfill the requirements. diff --git a/deployment/human-connection/templates/configmap.template.yaml b/deployment/human-connection/templates/configmap.template.yaml index 0a7e90343..1bd227af0 100644 --- a/deployment/human-connection/templates/configmap.template.yaml +++ b/deployment/human-connection/templates/configmap.template.yaml @@ -9,6 +9,9 @@ NEO4J_URI: "bolt://nitro-neo4j.human-connection:7687" NEO4J_AUTH: "none" CLIENT_URI: "https://nitro-staging.human-connection.org" + SENTRY_DSN_WEBAPP: "" + SENTRY_DSN_BACKEND: "" + COMMIT: "" metadata: name: configmap namespace: human-connection diff --git a/scripts/deploy.sh b/scripts/deploy.sh index b49fd68a2..cfde8008d 100755 --- a/scripts/deploy.sh +++ b/scripts/deploy.sh @@ -1,4 +1,6 @@ #!/usr/bin/env bash -sed -i "s//${TRAVIS_COMMIT}/g" $TRAVIS_BUILD_DIR/scripts/patch-deployment.yaml -kubectl --namespace=human-connection patch deployment nitro-backend -p "$(cat $TRAVIS_BUILD_DIR/scripts/patch-deployment.yaml)" -kubectl --namespace=human-connection patch deployment nitro-web -p "$(cat $TRAVIS_BUILD_DIR/scripts/patch-deployment.yaml)" +sed -i "s//${TRAVIS_COMMIT}/g" $TRAVIS_BUILD_DIR/scripts/patches/patch-deployment.yaml +sed -i "s//${TRAVIS_COMMIT}/g" $TRAVIS_BUILD_DIR/scripts/patches/patch-configmap.yaml +kubectl --namespace=human-connection patch configmap configmap -p "$(cat $TRAVIS_BUILD_DIR/scripts/patches/patch-configmap.yaml)" +kubectl --namespace=human-connection patch deployment nitro-backend -p "$(cat $TRAVIS_BUILD_DIR/scripts/patches/patch-deployment.yaml)" +kubectl --namespace=human-connection patch deployment nitro-web -p "$(cat $TRAVIS_BUILD_DIR/scripts/patches/patch-deployment.yaml)" diff --git a/scripts/patches/patch-configmap.yaml b/scripts/patches/patch-configmap.yaml new file mode 100644 index 000000000..7635c01ec --- /dev/null +++ b/scripts/patches/patch-configmap.yaml @@ -0,0 +1,7 @@ +apiVersion: v1 +kind: ConfigMap +data: + COMMIT: +metadata: + name: configmap + namespace: human-connection diff --git a/scripts/patch-deployment.yaml b/scripts/patches/patch-deployment.yaml similarity index 100% rename from scripts/patch-deployment.yaml rename to scripts/patches/patch-deployment.yaml diff --git a/webapp/.env.template b/webapp/.env.template index 1fa2a542a..bebdeaaaf 100644 --- a/webapp/.env.template +++ b/webapp/.env.template @@ -1 +1,3 @@ MAPBOX_TOKEN="pk.eyJ1IjoiaHVtYW4tY29ubmVjdGlvbiIsImEiOiJjajl0cnBubGoweTVlM3VwZ2lzNTNud3ZtIn0.KZ8KK9l70omjXbEkkbHGsQ" +SENTRY_DSN_WEBAPP= +COMMIT= diff --git a/webapp/nuxt.config.js b/webapp/nuxt.config.js index 49da8dc21..4a2e6f38c 100644 --- a/webapp/nuxt.config.js +++ b/webapp/nuxt.config.js @@ -12,6 +12,9 @@ const styleguideStyles = process.env.STYLEGUIDE_DEV const buildDir = process.env.NUXT_BUILD || '.nuxt' +const additionalSentryConfig = {} +if (process.env.COMMIT) additionalSentryConfig.release = process.env.COMMIT + module.exports = { buildDir, mode: 'universal', @@ -218,6 +221,7 @@ module.exports = { '@nuxtjs/apollo', '@nuxtjs/axios', '@nuxtjs/style-resources', + '@nuxtjs/sentry', ], /* @@ -284,6 +288,12 @@ module.exports = { }, }, + sentry: { + dsn: process.env.SENTRY_DSN_WEBAPP, + publishRelease: !!process.env.COMMIT, + config: additionalSentryConfig, + }, + manifest: { name: 'Human-Connection.org', description: 'Human-Connection.org', diff --git a/webapp/package.json b/webapp/package.json index 5c6afa822..992398680 100644 --- a/webapp/package.json +++ b/webapp/package.json @@ -54,6 +54,7 @@ "@nuxtjs/apollo": "^4.0.0-rc9", "@nuxtjs/axios": "~5.5.4", "@nuxtjs/dotenv": "~1.4.0", + "@nuxtjs/sentry": "^3.0.0", "@nuxtjs/style-resources": "~1.0.0", "accounting": "~0.4.1", "apollo-cache-inmemory": "~1.6.3", @@ -78,8 +79,8 @@ "vue-count-to": "~1.0.13", "vue-infinite-scroll": "^2.0.2", "vue-izitoast": "roschaefer/vue-izitoast#patch-1", - "vuex-i18n": "~1.13.1", "vue-sweetalert-icons": "~4.2.0", + "vuex-i18n": "~1.13.1", "zxcvbn": "^4.4.2" }, "devDependencies": { diff --git a/webapp/yarn.lock b/webapp/yarn.lock index eecf5b5fe..8009b5039 100644 --- a/webapp/yarn.lock +++ b/webapp/yarn.lock @@ -1430,6 +1430,18 @@ consola "^2.5.6" http-proxy-middleware "^0.19.1" +"@nuxtjs/sentry@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@nuxtjs/sentry/-/sentry-3.0.0.tgz#7ca3a25b7b2ea35a953292a7961deb515a6d9140" + integrity sha512-xVuSpnB6kepdjaZzP9u9DUwRVmJrbPXNIsbxWZNfzw9hv5ZXzjIydJticsnDuDTixzFEuLtsm+vfDY7oVEA8Gw== + dependencies: + "@sentry/browser" "^5.2.0" + "@sentry/integrations" "^5.2.0" + "@sentry/node" "^5.2.0" + "@sentry/webpack-plugin" "^1.6.2" + consola "^2.6.1" + deepmerge "^3.2.0" + "@nuxtjs/style-resources@~1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@nuxtjs/style-resources/-/style-resources-1.0.0.tgz#7c4d6be19d7f7cc5d687d689f2ab16c0b94773a1" @@ -1661,6 +1673,100 @@ dependencies: any-observable "^0.3.0" +"@sentry/browser@^5.2.0": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-5.6.2.tgz#f39e95c3aff2d4b4fd5d0d4aa7192af73f20d24e" + integrity sha512-Nm/W/5ra6+OQCWQkdd86vHjcYUjHCVqCzQyPasd6HE7SNlWe5euGVfFfDuUFsiDrMAG5uKfGYw5u/AqoweiQkQ== + dependencies: + "@sentry/core" "5.6.2" + "@sentry/types" "5.6.1" + "@sentry/utils" "5.6.1" + tslib "^1.9.3" + +"@sentry/cli@^1.44.4": + version "1.47.1" + resolved "https://registry.yarnpkg.com/@sentry/cli/-/cli-1.47.1.tgz#6a3238e5bfa4f618867bc0bc145b8e2ba191ff46" + integrity sha512-WijaRu1lb99OL6rHee6uOSb1wDyNCbrWcTJoRCuZD83K2fw3U58p68nli/y8CoMwQ55Mrg6CgtY8pmBiuseG0A== + dependencies: + fs-copy-file-sync "^1.1.1" + https-proxy-agent "^2.2.1" + mkdirp "^0.5.1" + node-fetch "^2.1.2" + progress "2.0.0" + proxy-from-env "^1.0.0" + +"@sentry/core@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.6.2.tgz#8c5477654a83ebe41a72e86a79215deb5025e418" + integrity sha512-grbjvNmyxP5WSPR6UobN2q+Nss7Hvz+BClBT8QTr7VTEG5q89TwNddn6Ej3bGkaUVbct/GpVlI3XflWYDsnU6Q== + dependencies: + "@sentry/hub" "5.6.1" + "@sentry/minimal" "5.6.1" + "@sentry/types" "5.6.1" + "@sentry/utils" "5.6.1" + tslib "^1.9.3" + +"@sentry/hub@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-5.6.1.tgz#9f355c0abcc92327fbd10b9b939608aa4967bece" + integrity sha512-m+OhkIV5yTAL3R1+XfCwzUQka0UF/xG4py8sEfPXyYIcoOJ2ZTX+1kQJLy8QQJ4RzOBwZA+DzRKP0cgzPJ3+oQ== + dependencies: + "@sentry/types" "5.6.1" + "@sentry/utils" "5.6.1" + tslib "^1.9.3" + +"@sentry/integrations@^5.2.0": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@sentry/integrations/-/integrations-5.6.1.tgz#fcee1a6e5535a07fdefd365178662283279ce0d7" + integrity sha512-bPtJbmhLDH9Exy0luIKxjlfqmuyAjUPTHZ2CLIw6YlhA5WgK9aYyyjLHTmWK+E9baZBqSp0ShVPAgue2jfpQmQ== + dependencies: + "@sentry/types" "5.6.1" + "@sentry/utils" "5.6.1" + tslib "^1.9.3" + +"@sentry/minimal@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-5.6.1.tgz#09d92b26de0b24555cd50c3c33ba4c3e566009a1" + integrity sha512-ercCKuBWHog6aS6SsJRuKhJwNdJ2oRQVWT2UAx1zqvsbHT9mSa8ZRjdPHYOtqY3DoXKk/pLUFW/fkmAnpdMqRw== + dependencies: + "@sentry/hub" "5.6.1" + "@sentry/types" "5.6.1" + tslib "^1.9.3" + +"@sentry/node@^5.2.0": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@sentry/node/-/node-5.6.2.tgz#4b62f056031da65cad78220d48c546b8bfbfaed7" + integrity sha512-A9CELco6SjF4zt8iS1pO3KdUVI2WVhtTGhSH6X04OVf2en1fimPR+Vs8YVY/04udwd7o+3mI6byT+rS9+/Qzow== + dependencies: + "@sentry/core" "5.6.2" + "@sentry/hub" "5.6.1" + "@sentry/types" "5.6.1" + "@sentry/utils" "5.6.1" + cookie "0.3.1" + https-proxy-agent "2.2.1" + lru_map "0.3.3" + tslib "^1.9.3" + +"@sentry/types@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.6.1.tgz#5915e1ee4b7a678da3ac260c356b1cb91139a299" + integrity sha512-Kub8TETefHpdhvtnDj3kKfhCj0u/xn3Zi2zIC7PB11NJHvvPXENx97tciz4roJGp7cLRCJsFqCg4tHXniqDSnQ== + +"@sentry/utils@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-5.6.1.tgz#69d9e151e50415bc91f2428e3bcca8beb9bc2815" + integrity sha512-rfgha+UsHW816GqlSRPlniKqAZylOmQWML2JsujoUP03nPu80zdN43DK9Poy/d9OxBxv0gd5K2n+bFdM2kqLQQ== + dependencies: + "@sentry/types" "5.6.1" + tslib "^1.9.3" + +"@sentry/webpack-plugin@^1.6.2": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@sentry/webpack-plugin/-/webpack-plugin-1.8.0.tgz#eb41194a222789fcf27aebc7d7d453fe85af9dc2" + integrity sha512-cRNvk70o50q0P952f0rArzvjk8Qvzw40K4B8dziLdNjIIYBGQ3fV+JCY7dta72AdBWB13g8L8SPqCQr8C3PgoQ== + dependencies: + "@sentry/cli" "^1.44.4" + "@sindresorhus/is@^0.7.0": version "0.7.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd" @@ -2641,6 +2747,13 @@ address@^1.0.1: resolved "https://registry.yarnpkg.com/address/-/address-1.1.0.tgz#ef8e047847fcd2c5b6f50c16965f924fd99fe709" integrity sha512-4diPfzWbLEIElVG4AnqP+00SULlPzNuyJFNnmMrLgyaxG6tZXJ1sn7mjBu4fHrJE+Yp/jgylOweJn2xsLMFggQ== +agent-base@^4.1.0, agent-base@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" + integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== + dependencies: + es6-promisify "^5.0.0" + "airbnb-js-shims@^1 || ^2": version "2.2.0" resolved "https://registry.yarnpkg.com/airbnb-js-shims/-/airbnb-js-shims-2.2.0.tgz#46e1d9d9516f704ef736de76a3b6d484df9a96d8" @@ -4991,7 +5104,7 @@ connect@^3.7.0: parseurl "~1.3.3" utils-merge "1.0.1" -consola@^2.3.0, consola@^2.4.0, consola@^2.5.6, consola@^2.6.0, consola@^2.7.1, consola@^2.9.0: +consola@^2.3.0, consola@^2.4.0, consola@^2.5.6, consola@^2.6.0, consola@^2.6.1, consola@^2.7.1, consola@^2.9.0: version "2.10.1" resolved "https://registry.yarnpkg.com/consola/-/consola-2.10.1.tgz#4693edba714677c878d520e4c7e4f69306b4b927" integrity sha512-4sxpH6SGFYLADfUip4vuY65f/gEogrzJoniVhNUYkJHtng0l8ZjnDCqxxrSVRHOHwKxsy8Vm5ONZh1wOR3/l/w== @@ -5073,16 +5186,16 @@ cookie-universal@^2.0.16: "@types/cookie" "^0.3.1" cookie "^0.3.1" +cookie@0.3.1, cookie@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" + integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= + cookie@0.4.0, cookie@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== -cookie@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" - integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= - copy-concurrently@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" @@ -6141,6 +6254,18 @@ es5-shim@^4.5.13: resolved "https://registry.yarnpkg.com/es5-shim/-/es5-shim-4.5.13.tgz#5d88062de049f8969f83783f4a4884395f21d28b" integrity sha512-xi6hh6gsvDE0MaW4Vp1lgNEBpVcCXRWfPXj5egDvtgLz4L9MEvNwYEMdJH+JJinWkwa8c3c3o5HduV7dB/e1Hw== +es6-promise@^4.0.3: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + +es6-promisify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= + dependencies: + es6-promise "^4.0.3" + es6-shim@^0.35.5: version "0.35.5" resolved "https://registry.yarnpkg.com/es6-shim/-/es6-shim-0.35.5.tgz#46f59dc0a84a1c5029e8ff1166ca0a902077a9ab" @@ -6999,6 +7124,11 @@ fs-capacitor@^2.0.1: resolved "https://registry.yarnpkg.com/fs-capacitor/-/fs-capacitor-2.0.4.tgz#5a22e72d40ae5078b4fe64fe4d08c0d3fc88ad3c" integrity sha512-8S4f4WsCryNw2mJJchi46YgB6CR5Ze+4L1h8ewl9tEpL4SJ3ZO+c/bS4BWhB8bK+O3TMqhuZarTitd0S0eh2pA== +fs-copy-file-sync@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/fs-copy-file-sync/-/fs-copy-file-sync-1.1.1.tgz#11bf32c096c10d126e5f6b36d06eece776062918" + integrity sha512-2QY5eeqVv4m2PfyMiEuy9adxNP+ajf+8AR05cEi+OAzPcOj90hvFImeZhTmKLBgSd9EvG33jsD7ZRxsx9dThkQ== + fs-extra@^0.30.0: version "0.30.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" @@ -7884,6 +8014,22 @@ https-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= +https-proxy-agent@2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0" + integrity sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ== + dependencies: + agent-base "^4.1.0" + debug "^3.1.0" + +https-proxy-agent@^2.2.1: + version "2.2.2" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.2.tgz#271ea8e90f836ac9f119daccd39c19ff7dfb0793" + integrity sha512-c8Ndjc9Bkpfx/vCJueCPy0jlP4ccCCSNDp8xwCZzPjKJUm+B+u9WX2x98Qx4n1PiMNTWo3D7KK5ifNV/yJyRzg== + dependencies: + agent-base "^4.3.0" + debug "^3.1.0" + hyperlinker@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/hyperlinker/-/hyperlinker-1.0.0.tgz#23dc9e38a206b208ee49bc2d6c8ef47027df0c0e" @@ -9724,6 +9870,11 @@ lru-cache@^5.0.0, lru-cache@^5.1.1: dependencies: yallist "^3.0.2" +lru_map@0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" + integrity sha1-tcg1G5Rky9dQM1p5ZQoOwOVhGN0= + make-dir@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" @@ -11920,6 +12071,11 @@ process@^0.11.10: resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= +progress@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" + integrity sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8= + progress@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" @@ -12135,6 +12291,11 @@ proxy-addr@~2.0.5: forwarded "~0.1.2" ipaddr.js "1.9.0" +proxy-from-env@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee" + integrity sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4= + prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"