From 9778e42527bd4fb745513e1efb8ce3941c25db5c Mon Sep 17 00:00:00 2001 From: Daniel Griesser Date: Fri, 15 Dec 2017 09:46:45 +0100 Subject: [PATCH 1/7] fix: Disable @sentry/browser tests because of flaky travis --- .travis.yml | 20 ++++++++++---------- packages/browser/package.json | 2 +- packages/browser/yarn.lock | 5 +++-- packages/core/package.json | 2 +- 4 files changed, 15 insertions(+), 14 deletions(-) diff --git a/.travis.yml b/.travis.yml index 25640e9f0adc..56f465b615bf 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,17 +23,17 @@ matrix: sauce_connect: true script: - npm run test && if [ "$TRAVIS_SECURE_ENV_VARS" == "true" ]; then npm run test:ci; else exit 0; fi - - env: NAME="@sentry/browser" - install: true - script: - - yarn link - - cd packages/core && yarn link && yarn install && yarn dist - - cd ../browser - - yarn remove @sentry/core # this has to be removed once we released the package - - yarn link "@sentry/core" - - yarn link "raven-js" - - yarn install && yarn test - env: NAME="@sentry/core" install: true script: - cd packages/core && yarn install && yarn test + # - env: NAME="@sentry/browser" + # install: true + # script: + # - yarn link + # - cd packages/core && yarn link && yarn install && yarn dist + # - cd ../browser + # - yarn remove @sentry/core # this has to be removed once we released the package + # - yarn link "@sentry/core" + # - yarn link "raven-js" + # - yarn install && yarn test diff --git a/packages/browser/package.json b/packages/browser/package.json index ce420d15640f..34372c3fbb93 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/browser", - "version": "0.0.1", + "version": "0.1.0", "description": "Offical Sentry SDK for browsers", "main": "dist/index.js", "typings": "dist/index.d.ts", diff --git a/packages/browser/yarn.lock b/packages/browser/yarn.lock index 6f3f5a378314..ea854daea3a7 100644 --- a/packages/browser/yarn.lock +++ b/packages/browser/yarn.lock @@ -2,8 +2,9 @@ # yarn lockfile v1 -"@sentry/core@file:../core": - version "0.0.1" +"@sentry/core@^0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-0.1.0.tgz#9d9cdbedc1013de21a6143c92dbc357c60242682" "@types/jest@^21.1.6": version "21.1.6" diff --git a/packages/core/package.json b/packages/core/package.json index 45c16ccbf5d4..7d324fc9a3c1 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/core", - "version": "0.0.1", + "version": "0.1.0", "description": "Sentry core implementation for all JavaScript related SDKs", "main": "dist/index.js", "typings": "dist/index.d.ts", From 8818985970cf2cd7a342ec9257fe538bcc3ca60a Mon Sep 17 00:00:00 2001 From: Daniel Griesser Date: Fri, 15 Dec 2017 11:04:55 +0100 Subject: [PATCH 2/7] feat: Add setRelease, Make everything a promise Up test coverage --- packages/browser/lib/SentryBrowser.ts | 13 +- packages/browser/package.json | 18 +-- packages/browser/yarn.lock | 208 +++++++++++++++++++------ packages/core/__mocks__/MockAdapter.ts | 12 +- packages/core/__tests__/client.ts | 34 ++++ packages/core/__tests__/context.ts | 81 +++++----- packages/core/lib/Adapter.ts | 12 +- packages/core/lib/Client.ts | 56 +++---- packages/core/package.json | 20 ++- packages/core/yarn.lock | 160 ++++++++++++++----- 10 files changed, 429 insertions(+), 185 deletions(-) diff --git a/packages/browser/lib/SentryBrowser.ts b/packages/browser/lib/SentryBrowser.ts index 5c834d7315c0..5f6851c0937d 100644 --- a/packages/browser/lib/SentryBrowser.ts +++ b/packages/browser/lib/SentryBrowser.ts @@ -74,23 +74,28 @@ export class SentryBrowser implements IAdapter { }); } - public setUserContext(user?: IUser) { + public async setUserContext(user?: IUser) { Raven.setUserContext(user); return this; } - public setTagsContext(tags?: { [key: string]: any }) { + public async setTagsContext(tags?: { [key: string]: any }) { Raven.setTagsContext(tags); return this; } - public setExtraContext(extra?: { [key: string]: any }) { + public async setExtraContext(extra?: { [key: string]: any }) { Raven.setExtraContext(extra); return this; } - public clearContext() { + public async clearContext() { Raven.clearContext(); return this; } + + public async setRelease(release: string) { + Raven.setRelease(release); + return this; + } } diff --git a/packages/browser/package.json b/packages/browser/package.json index 34372c3fbb93..5888af48b841 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -9,27 +9,27 @@ }, "dependencies": { "@sentry/core": "^0.1.0", - "raven-js": "^3.18.1" + "raven-js": "^3.21.0" }, "devDependencies": { - "@types/jest": "^21.1.6", - "@types/node": "^8.0.51", - "@types/puppeteer": "^0.12.4", + "@types/jest": "^21.1.8", + "@types/node": "^8.5.1", + "@types/puppeteer": "^0.13.8", "jest": "^21.2.1", "npm-run-all": "^4.1.2", - "prettier": "^1.8.2", + "prettier": "^1.9.2", "puppeteer": "^0.13.0", "rollup": "^0.52.1", "rollup-plugin-commonjs": "^8.2.6", "rollup-plugin-node-resolve": "^3.0.0", "rollup-plugin-uglify": "^2.0.1", - "ts-jest": "^21.2.2", - "ts-loader": "^3.1.1", - "ts-node": "^3.3.0", + "ts-jest": "^21.2.4", + "ts-loader": "^3.2.0", + "ts-node": "^4.0.2", "tslint": "^5.8.0", "tslint-config-prettier": "^1.6.0", "tslint-eslint-rules": "^4.1.1", - "typescript": "^2.6.1", + "typescript": "^2.6.2", "vrsource-tslint-rules": "^5.8.0" }, "engines": { diff --git a/packages/browser/yarn.lock b/packages/browser/yarn.lock index ea854daea3a7..9d5c30d51808 100644 --- a/packages/browser/yarn.lock +++ b/packages/browser/yarn.lock @@ -6,24 +6,37 @@ version "0.1.0" resolved "https://registry.yarnpkg.com/@sentry/core/-/core-0.1.0.tgz#9d9cdbedc1013de21a6143c92dbc357c60242682" -"@types/jest@^21.1.6": - version "21.1.6" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-21.1.6.tgz#9467945ce33261e4fdd14276576951aa130515aa" +"@types/events@*": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@types/events/-/events-1.1.0.tgz#93b1be91f63c184450385272c47b6496fd028e02" + +"@types/jest@^21.1.8": + version "21.1.8" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-21.1.8.tgz#d497213725684f1e5a37900b17a47c9c018f1a97" "@types/node@*": version "8.0.34" resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.34.tgz#55f801fa2ddb2a40dd6dfc15ecfe1dde9c129fe9" -"@types/node@^8.0.51": - version "8.0.51" - resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.51.tgz#b31d716fb8d58eeb95c068a039b9b6292817d5fb" +"@types/node@^8.5.1": + version "8.5.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.5.1.tgz#4ec3020bcdfe2abffeef9ba3fbf26fca097514b5" -"@types/puppeteer@^0.12.4": - version "0.12.4" - resolved "https://registry.yarnpkg.com/@types/puppeteer/-/puppeteer-0.12.4.tgz#e4572e0983bed3adaeafdab099231c723a30983b" +"@types/puppeteer@^0.13.8": + version "0.13.8" + resolved "https://registry.yarnpkg.com/@types/puppeteer/-/puppeteer-0.13.8.tgz#b52ee91a547bea2647b68b7fc2a2ab6e49597743" dependencies: + "@types/events" "*" "@types/node" "*" +"@types/strip-bom@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/strip-bom/-/strip-bom-3.0.0.tgz#14a8ec3956c2e81edb7520790aecf21c290aebd2" + +"@types/strip-json-comments@0.0.30": + version "0.0.30" + resolved "https://registry.yarnpkg.com/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz#9aa30c04db212a9a0649d6ae6fd50accc40748a1" + abab@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e" @@ -182,6 +195,10 @@ astral-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" +async-each@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" + async-limiter@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" @@ -328,7 +345,7 @@ babel-register@^6.26.0: mkdirp "^0.5.1" source-map-support "^0.4.15" -babel-runtime@^6.22.0, babel-runtime@^6.26.0: +babel-runtime@^6.22.0, babel-runtime@^6.26.0, babel-runtime@^6.9.2: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" dependencies: @@ -386,6 +403,10 @@ big.js@^3.1.3: version "3.2.0" resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" +binary-extensions@^1.0.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205" + block-stream@*: version "0.0.9" resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" @@ -474,7 +495,7 @@ chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.0.1: +chalk@^2.0.1: version "2.1.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e" dependencies: @@ -490,6 +511,21 @@ chalk@^2.1.0, chalk@^2.3.0: escape-string-regexp "^1.0.5" supports-color "^4.0.0" +chokidar@^1.6.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" + dependencies: + anymatch "^1.3.0" + async-each "^1.0.0" + glob-parent "^2.0.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^2.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + optionalDependencies: + fsevents "^1.0.0" + ci-info@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.1.1.tgz#47b44df118c48d2597b56d342e7e25791060171a" @@ -574,6 +610,22 @@ core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" +cpx@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/cpx/-/cpx-1.5.0.tgz#185be018511d87270dedccc293171e37655ab88f" + dependencies: + babel-runtime "^6.9.2" + chokidar "^1.6.0" + duplexer "^0.1.1" + glob "^7.0.5" + glob2base "^0.0.12" + minimatch "^3.0.2" + mkdirp "^0.5.1" + resolve "^1.1.7" + safe-buffer "^5.0.1" + shell-quote "^1.6.1" + subarg "^1.0.0" + cross-spawn@^5.0.1, cross-spawn@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" @@ -661,6 +713,10 @@ detect-indent@^4.0.0: dependencies: repeating "^2.0.0" +detect-libc@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + diff@^3.1.0, diff@^3.2.0: version "3.4.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.4.0.tgz#b1d85507daf3964828de54b37d0d73ba67dda56c" @@ -672,7 +728,7 @@ doctrine@^0.7.2: esutils "^1.1.6" isarray "0.0.1" -duplexer@~0.1.1: +duplexer@^0.1.1, duplexer@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" @@ -895,6 +951,10 @@ fill-range@^2.1.0: repeat-element "^1.1.2" repeat-string "^1.5.2" +find-index@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz#675d358b2ca3892d795a1ab47232f8b6e2e0dde4" + find-up@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" @@ -946,9 +1006,9 @@ from@~0: version "0.1.7" resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" -fs-extra@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.2.tgz#f91704c53d1b461f893452b0c307d9997647ab6b" +fs-extra@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" dependencies: graceful-fs "^4.1.2" jsonfile "^4.0.0" @@ -958,6 +1018,13 @@ fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" +fsevents@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.3.tgz#11f82318f5fe7bb2cd22965a108e9306208216d8" + dependencies: + nan "^2.3.0" + node-pre-gyp "^0.6.39" + fsevents@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.2.tgz#3282b713fb3ad80ede0e9fcf4611b5aa6fc033f4" @@ -1026,6 +1093,12 @@ glob-parent@^2.0.0: dependencies: is-glob "^2.0.0" +glob2base@^0.0.12: + version "0.0.12" + resolved "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56" + dependencies: + find-index "^0.1.1" + glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" @@ -1192,7 +1265,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.3: +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" @@ -1214,6 +1287,12 @@ is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + dependencies: + binary-extensions "^1.0.0" + is-buffer@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" @@ -1906,7 +1985,7 @@ minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" -minimist@^1.1.1, minimist@^1.2.0: +minimist@^1.1.0, minimist@^1.1.1, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" @@ -1970,6 +2049,22 @@ node-pre-gyp@^0.6.36: tar "^2.2.1" tar-pack "^3.4.0" +node-pre-gyp@^0.6.39: + version "0.6.39" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649" + dependencies: + detect-libc "^1.0.2" + hawk "3.1.3" + mkdirp "^0.5.1" + nopt "^4.0.1" + npmlog "^4.0.2" + rc "^1.1.7" + request "2.81.0" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^2.2.1" + tar-pack "^3.4.0" + nopt@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" @@ -2235,9 +2330,9 @@ preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" -prettier@^1.8.2: - version "1.8.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.8.2.tgz#bff83e7fd573933c607875e5ba3abbdffb96aeb8" +prettier@^1.9.2: + version "1.9.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.9.2.tgz#96bc2132f7a32338e6078aeb29727178c6335827" pretty-format@^21.2.1: version "21.2.1" @@ -2308,9 +2403,9 @@ randomatic@^1.1.3: is-number "^3.0.0" kind-of "^4.0.0" -raven-js@^3.18.1: - version "3.18.1" - resolved "https://registry.yarnpkg.com/raven-js/-/raven-js-3.18.1.tgz#746339c08fca75c3f402d7e6b633687c3ffc6ee8" +raven-js@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/raven-js/-/raven-js-3.21.0.tgz#609236eb0ec30faf696b552f842a80b426be6258" rc@^1.1.7: version "1.2.1" @@ -2359,7 +2454,7 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" -readable-stream@^2.0.1, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.2.2: +readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.2.2: version "2.3.3" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" dependencies: @@ -2371,6 +2466,15 @@ readable-stream@^2.0.1, readable-stream@^2.0.6, readable-stream@^2.1.4, readable string_decoder "~1.0.3" util-deprecate "~1.0.1" +readdirp@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" + dependencies: + graceful-fs "^4.1.2" + minimatch "^3.0.2" + readable-stream "^2.0.2" + set-immediate-shim "^1.0.1" + regenerator-runtime@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1" @@ -2465,7 +2569,7 @@ resolve@1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" -resolve@^1.1.6, resolve@^1.3.2, resolve@^1.4.0: +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.3.2, resolve@^1.4.0: version "1.5.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36" dependencies: @@ -2549,6 +2653,10 @@ set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" +set-immediate-shim@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -2592,7 +2700,7 @@ sntp@2.x.x: dependencies: hoek "4.x.x" -source-map-support@^0.4.0, source-map-support@^0.4.15: +source-map-support@^0.4.15: version "0.4.18" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" dependencies: @@ -2732,6 +2840,12 @@ strip-json-comments@^2.0.0, strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" +subarg@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" + dependencies: + minimist "^1.1.0" + supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" @@ -2817,49 +2931,51 @@ trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" -ts-jest@^21.2.2: - version "21.2.2" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-21.2.2.tgz#60bd8a6bc599cf746bfa054600ba5694d3f39ebc" +ts-jest@^21.2.4: + version "21.2.4" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-21.2.4.tgz#8fbcfbfbf0c58cced10dcc34a5190acc8c5312ef" dependencies: babel-core "^6.24.1" babel-plugin-istanbul "^4.1.4" babel-plugin-transform-es2015-modules-commonjs "^6.24.1" babel-preset-jest "^21.2.0" - fs-extra "^4.0.0" + cpx "^1.5.0" + fs-extra "^4.0.2" jest-config "^21.2.1" - jest-util "^21.2.1" pkg-dir "^2.0.0" source-map-support "^0.5.0" yargs "^10.0.3" -ts-loader@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-3.1.1.tgz#602d93c12029eaf8fa1ee478a90785d40c5f6658" +ts-loader@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-3.2.0.tgz#23211922179b81f7448754b7fdfca45b8374a15a" dependencies: chalk "^2.3.0" enhanced-resolve "^3.0.0" loader-utils "^1.0.2" semver "^5.0.1" -ts-node@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-3.3.0.tgz#c13c6a3024e30be1180dd53038fc209289d4bf69" +ts-node@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-4.0.2.tgz#cb3d039b9898fdc79ad09ab7e69c84564c8c41ee" dependencies: arrify "^1.0.0" - chalk "^2.0.0" + chalk "^2.3.0" diff "^3.1.0" make-error "^1.1.1" minimist "^1.2.0" mkdirp "^0.5.1" - source-map-support "^0.4.0" - tsconfig "^6.0.0" + source-map-support "^0.5.0" + tsconfig "^7.0.0" v8flags "^3.0.0" yn "^2.0.0" -tsconfig@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-6.0.0.tgz#6b0e8376003d7af1864f8df8f89dd0059ffcd032" +tsconfig@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-7.0.0.tgz#84538875a4dc216e5c4a5432b3a4dec3d54e91b7" dependencies: + "@types/strip-bom" "^3.0.0" + "@types/strip-json-comments" "0.0.30" strip-bom "^3.0.0" strip-json-comments "^2.0.0" @@ -2925,9 +3041,9 @@ typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" -typescript@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.6.1.tgz#ef39cdea27abac0b500242d6726ab90e0c846631" +typescript@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.6.2.tgz#3c5b6fd7f6de0914269027f03c0946758f7673a4" uglify-js@^2.6: version "2.8.29" diff --git a/packages/core/__mocks__/MockAdapter.ts b/packages/core/__mocks__/MockAdapter.ts index 8b9d35fa442a..09b50b921dc7 100644 --- a/packages/core/__mocks__/MockAdapter.ts +++ b/packages/core/__mocks__/MockAdapter.ts @@ -43,19 +43,23 @@ export class MockAdapter implements Sentry.IAdapter { return Promise.resolve(event); } - public setUserContext(user?: Sentry.IUser) { + public async setUserContext(user?: Sentry.IUser) { return this; } - public setTagsContext(tags?: { [key: string]: any }) { + public async setTagsContext(tags?: { [key: string]: any }) { return this; } - public setExtraContext(extra?: { [key: string]: any }) { + public async setExtraContext(extra?: { [key: string]: any }) { return this; } - public clearContext() { + public async clearContext() { + return this; + } + + public async setRelease(release: string) { return this; } } diff --git a/packages/core/__tests__/client.ts b/packages/core/__tests__/client.ts index 79c71ea39909..007494fd425a 100644 --- a/packages/core/__tests__/client.ts +++ b/packages/core/__tests__/client.ts @@ -29,6 +29,9 @@ describe('Sentry.Client', () => { expect(() => { new Sentry.Client('//username:password@domain'); }).toThrow(); + expect(() => { + new Sentry.Client('https://username:@domain'); + }).toThrow(); expect(() => { new Sentry.Client('123'); }).toThrow(); @@ -58,6 +61,18 @@ describe('Sentry.Client', () => { expect(spy2).toHaveBeenCalledTimes(1); }); + test('multiple install calls on Adapter should only call once', async () => { + expect.assertions(2); + const sentry = new Sentry.Client(dsn); + sentry.use(MockAdapter, { testOption: true }); + const spy1 = jest.spyOn(sentry, 'install'); + const spy2 = jest.spyOn(sentry.getAdapter(), 'install'); + await sentry.install(); + await sentry.install(); + expect(spy1).toHaveBeenCalledTimes(2); + expect(spy2).toHaveBeenCalledTimes(1); + }); + test('no registered Adapter', async () => { expect.assertions(1); const sentry = new Sentry.Client(dsn); @@ -147,4 +162,23 @@ describe('Sentry.Client', () => { sentry.log('This is fine'); expect(spy).toBeCalled(); }); + + test('should throw error without calling install', async () => { + expect.assertions(1); + const sentry = new Sentry.Client(dsn).use(MockAdapter); + return expect(sentry.captureException(new Error('oops'))).rejects.toEqual({ + message: 'Please call install() before calling other methods on Sentry', + name: 'SentryError', + }); + }); + + test('call setRelease on Adapter', async () => { + expect.assertions(2); + const sentry = await new Sentry.Client(dsn).use(MockAdapter).install(); + const spy = jest.spyOn(sentry, 'setRelease'); + const spy2 = jest.spyOn(sentry.getAdapter(), 'setRelease'); + await sentry.setRelease('#oops'); + expect(spy).toBeCalled(); + expect(spy2).toBeCalled(); + }); }); diff --git a/packages/core/__tests__/context.ts b/packages/core/__tests__/context.ts index 9814999bb630..7ac1661595c9 100644 --- a/packages/core/__tests__/context.ts +++ b/packages/core/__tests__/context.ts @@ -1,6 +1,6 @@ /// +import { MockAdapter } from '../__mocks__/MockAdapter'; import * as Sentry from '../index'; -import {MockAdapter} from '../__mocks__/MockAdapter'; const dsn = 'https://username:password@domain/path'; @@ -9,60 +9,65 @@ beforeEach(() => { }); describe('Sentry.Client context', () => { - test('set tags', () => { - let sentry = new Sentry.Client('https://username:password@domain/path'); - let adapter = sentry.use(MockAdapter); - let spy1 = jest.spyOn(adapter, 'setTagsContext'); - sentry.setTagsContext({yo: 12}); - expect(sentry.getContext()).toEqual({tags: {yo: 12}}); + test('set tags', async () => { + expect.assertions(2); + const sentry = new Sentry.Client('https://username:password@domain/path'); + const adapter = await sentry.use(MockAdapter).install(); + const spy1 = jest.spyOn(adapter, 'setTagsContext'); + await sentry.setTagsContext({ yo: 12 }); + expect(sentry.getContext()).toEqual({ tags: { yo: 12 } }); expect(spy1).toHaveBeenCalledTimes(1); }); - test('set extra and tags', () => { - let sentry = new Sentry.Client('https://username:password@domain/path'); - let adapter = sentry.use(MockAdapter); - let spy1 = jest.spyOn(adapter, 'setExtraContext'); - sentry.setTagsContext({yo: 12}); - expect(sentry.getContext()).toEqual({tags: {yo: 12}}); - sentry.setExtraContext({foo: 13}); - expect(sentry.getContext()).toEqual({tags: {yo: 12}, extra: {foo: 13}}); + test('set extra and tags', async () => { + expect.assertions(3); + const sentry = new Sentry.Client('https://username:password@domain/path'); + const adapter = await sentry.use(MockAdapter).install(); + const spy1 = jest.spyOn(adapter, 'setExtraContext'); + await sentry.setTagsContext({ yo: 12 }); + expect(sentry.getContext()).toEqual({ tags: { yo: 12 } }); + await sentry.setExtraContext({ foo: 13 }); + expect(sentry.getContext()).toEqual({ tags: { yo: 12 }, extra: { foo: 13 } }); expect(spy1).toHaveBeenCalledTimes(1); }); - test('clear context', () => { - let sentry = new Sentry.Client('https://username:password@domain/path'); - let adapter = sentry.use(MockAdapter); - let spy1 = jest.spyOn(adapter, 'clearContext'); - sentry.setTagsContext({yo: 12}); - expect(sentry.getContext()).toEqual({tags: {yo: 12}}); - sentry.clearContext(); + test('clear context', async () => { + expect.assertions(3); + const sentry = new Sentry.Client('https://username:password@domain/path'); + const adapter = await sentry.use(MockAdapter).install(); + const spy1 = jest.spyOn(adapter, 'clearContext'); + await sentry.setTagsContext({ yo: 12 }); + expect(sentry.getContext()).toEqual({ tags: { yo: 12 } }); + await sentry.clearContext(); expect(sentry.getContext()).toEqual({}); expect(spy1).toHaveBeenCalledTimes(1); }); - test('set undefined', () => { - let sentry = new Sentry.Client('https://username:password@domain/path'); - let adapter = sentry.use(MockAdapter); - sentry.setTagsContext(undefined); + test('set undefined', async () => { + expect.assertions(5); + const sentry = new Sentry.Client('https://username:password@domain/path'); + const adapter = await sentry.use(MockAdapter).install(); + await sentry.setTagsContext(undefined); expect(sentry.getContext()).toEqual({}); - sentry.setTagsContext({yo: 12}); - expect(sentry.getContext()).toEqual({tags: {yo: 12}}); - sentry.setTagsContext(undefined); + await sentry.setTagsContext({ yo: 12 }); + expect(sentry.getContext()).toEqual({ tags: { yo: 12 } }); + await sentry.setTagsContext(undefined); expect(sentry.getContext()).toEqual({}); - sentry.setExtraContext(undefined); + await sentry.setExtraContext(undefined); expect(sentry.getContext()).toEqual({}); - sentry.clearContext(); + await sentry.clearContext(); expect(sentry.getContext()).toEqual({}); }); - test('set user', () => { - let sentry = new Sentry.Client('https://username:password@domain/path'); - let adapter = sentry.use(MockAdapter); - sentry.setUserContext({ - id: 'test' + test('set user', async () => { + expect.assertions(2); + const sentry = new Sentry.Client('https://username:password@domain/path'); + const adapter = await sentry.use(MockAdapter).install(); + await sentry.setUserContext({ + id: 'test', }); - expect(sentry.getContext()).toEqual({user: {id: 'test'}}); - sentry.clearContext(); + expect(sentry.getContext()).toEqual({ user: { id: 'test' } }); + await sentry.clearContext(); expect(sentry.getContext()).toEqual({}); }); }); diff --git a/packages/core/lib/Adapter.ts b/packages/core/lib/Adapter.ts index eead6802a4ef..45eb55cda196 100644 --- a/packages/core/lib/Adapter.ts +++ b/packages/core/lib/Adapter.ts @@ -9,10 +9,10 @@ export interface IAdapter { captureMessage(message: string): Promise; captureBreadcrumb(crumb: IBreadcrumb): Promise; - // These should be removed at some point in the future - // only the client should handle global stuff - setUserContext?(user?: IUser): IAdapter; - setTagsContext?(tags?: { [key: string]: any }): IAdapter; - setExtraContext?(extra?: { [key: string]: any }): IAdapter; - clearContext?(): IAdapter; + setRelease(release: string): Promise; + + setUserContext(user?: IUser): Promise; + setTagsContext(tags?: { [key: string]: any }): Promise; + setExtraContext(extra?: { [key: string]: any }): Promise; + clearContext(): Promise; } diff --git a/packages/core/lib/Client.ts b/packages/core/lib/Client.ts index 49b01fb04ab1..d99cbda94dcf 100644 --- a/packages/core/lib/Client.ts +++ b/packages/core/lib/Client.ts @@ -23,11 +23,6 @@ export class Client { return this; } - public getContext() { - // TODO: check for cyclic objects - return JSON.parse(JSON.stringify(this._context)); - } - public getAdapter(): A { if (!this._adapter) { throw new SentryError('No adapter in use, please call .use()'); @@ -87,49 +82,44 @@ export class Client { // ----------------------- + public async setRelease(release: string) { + const adapter = await this.awaitAdapter(); + await adapter.setRelease(release); + return this; + } + // ---------------- CONTEXT - public setUserContext(user?: IUser) { + public getContext() { + // TODO: check for cyclic objects + return JSON.parse(JSON.stringify(this._context)); + } + + public async setUserContext(user?: IUser) { Context.set(this._context, 'user', user); - // TODO: Remove this once we moved code away from adapters - const adapter = this.getAdapter(); - if (adapter.setUserContext) { - adapter.setUserContext(user); - } - // ------------------------------------------------------- + const adapter = await this.awaitAdapter(); + await adapter.setUserContext(user); return this; } - public setTagsContext(tags?: { [key: string]: any }) { + public async setTagsContext(tags?: { [key: string]: any }) { Context.mergeIn(this._context, 'tags', tags); - // TODO: Remove this once we moved code away from adapters - const adapter = this.getAdapter(); - if (adapter.setTagsContext) { - adapter.setTagsContext(tags); - } - // ------------------------------------------------------- + const adapter = await this.awaitAdapter(); + await adapter.setTagsContext(tags); return this; } - public setExtraContext(extra?: { [key: string]: any }) { + public async setExtraContext(extra?: { [key: string]: any }) { Context.mergeIn(this._context, 'extra', extra); - // TODO: Remove this once we moved code away from adapters - const adapter = this.getAdapter(); - if (adapter.setExtraContext) { - adapter.setExtraContext(extra); - } - // ------------------------------------------------------- + const adapter = await this.awaitAdapter(); + await adapter.setExtraContext(extra); return this; } - public clearContext() { + public async clearContext() { this._context = Context.getDefaultContext(); - // TODO: Remove this once we moved code away from adapters - const adapter = this.getAdapter(); - if (adapter.clearContext) { - adapter.clearContext(); - } - // ------------------------------------------------------- + const adapter = await this.awaitAdapter(); + await adapter.clearContext(); return this; } diff --git a/packages/core/package.json b/packages/core/package.json index 7d324fc9a3c1..1ce16324cf69 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -9,17 +9,17 @@ }, "dependencies": {}, "devDependencies": { - "@types/jest": "^21.1.2", - "@types/node": "^8.0.32", + "@types/jest": "^21.1.8", + "@types/node": "^8.5.1", "jest": "^21.2.1", "npm-run-all": "^4.1.2", - "prettier": "^1.8.0", - "ts-jest": "21.2.2", - "ts-node": "^3.3.0", + "prettier": "^1.9.2", + "ts-jest": "^21.2.4", + "ts-node": "^4.0.2", "tslint": "^5.8.0", "tslint-config-prettier": "^1.6.0", "tslint-eslint-rules": "^4.1.1", - "typescript": "2.6.1", + "typescript": "2.6.2", "vrsource-tslint-rules": "^5.8.0" }, "engines": { @@ -36,12 +36,18 @@ "test": "npm-run-all dist test:browser test:node" }, "jest": { + "globals": { + "ts-jest": { + "tsConfigFile": "./tsconfig.json" + } + }, + "mapCoverage": true, "collectCoverage": true, "coveragePathIgnorePatterns": [ "dist" ], "transform": { - "^.+\\.tsx?$": "/node_modules/ts-jest/preprocessor.js" + "^.+\\.tsx?$": "ts-jest" }, "testRegex": "(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$", "moduleFileExtensions": [ diff --git a/packages/core/yarn.lock b/packages/core/yarn.lock index 8cd069916934..709582d0056c 100644 --- a/packages/core/yarn.lock +++ b/packages/core/yarn.lock @@ -2,13 +2,21 @@ # yarn lockfile v1 -"@types/jest@^21.1.2": - version "21.1.6" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-21.1.6.tgz#9467945ce33261e4fdd14276576951aa130515aa" +"@types/jest@^21.1.8": + version "21.1.8" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-21.1.8.tgz#d497213725684f1e5a37900b17a47c9c018f1a97" -"@types/node@^8.0.32": - version "8.0.51" - resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.51.tgz#b31d716fb8d58eeb95c068a039b9b6292817d5fb" +"@types/node@^8.5.1": + version "8.5.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.5.1.tgz#4ec3020bcdfe2abffeef9ba3fbf26fca097514b5" + +"@types/strip-bom@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/strip-bom/-/strip-bom-3.0.0.tgz#14a8ec3956c2e81edb7520790aecf21c290aebd2" + +"@types/strip-json-comments@0.0.30": + version "0.0.30" + resolved "https://registry.yarnpkg.com/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz#9aa30c04db212a9a0649d6ae6fd50accc40748a1" abab@^1.0.3: version "1.0.4" @@ -158,6 +166,10 @@ astral-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" +async-each@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" + async@^1.4.0: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" @@ -300,7 +312,7 @@ babel-register@^6.26.0: mkdirp "^0.5.1" source-map-support "^0.4.15" -babel-runtime@^6.22.0, babel-runtime@^6.26.0: +babel-runtime@^6.22.0, babel-runtime@^6.26.0, babel-runtime@^6.9.2: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" dependencies: @@ -354,6 +366,10 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" +binary-extensions@^1.0.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205" + block-stream@*: version "0.0.9" resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" @@ -442,7 +458,7 @@ chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0: +chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba" dependencies: @@ -450,6 +466,21 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0: escape-string-regexp "^1.0.5" supports-color "^4.0.0" +chokidar@^1.6.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" + dependencies: + anymatch "^1.3.0" + async-each "^1.0.0" + glob-parent "^2.0.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^2.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + optionalDependencies: + fsevents "^1.0.0" + ci-info@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.1.1.tgz#47b44df118c48d2597b56d342e7e25791060171a" @@ -522,6 +553,22 @@ core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" +cpx@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/cpx/-/cpx-1.5.0.tgz#185be018511d87270dedccc293171e37655ab88f" + dependencies: + babel-runtime "^6.9.2" + chokidar "^1.6.0" + duplexer "^0.1.1" + glob "^7.0.5" + glob2base "^0.0.12" + minimatch "^3.0.2" + mkdirp "^0.5.1" + resolve "^1.1.7" + safe-buffer "^5.0.1" + shell-quote "^1.6.1" + subarg "^1.0.0" + cross-spawn@^5.0.1, cross-spawn@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" @@ -624,7 +671,7 @@ doctrine@^0.7.2: esutils "^1.1.6" isarray "0.0.1" -duplexer@~0.1.1: +duplexer@^0.1.1, duplexer@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" @@ -805,6 +852,10 @@ fill-range@^2.1.0: repeat-element "^1.1.2" repeat-string "^1.5.2" +find-index@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz#675d358b2ca3892d795a1ab47232f8b6e2e0dde4" + find-up@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" @@ -856,9 +907,9 @@ from@~0: version "0.1.7" resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" -fs-extra@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.2.tgz#f91704c53d1b461f893452b0c307d9997647ab6b" +fs-extra@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" dependencies: graceful-fs "^4.1.2" jsonfile "^4.0.0" @@ -868,7 +919,7 @@ fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" -fsevents@^1.1.1: +fsevents@^1.0.0, fsevents@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.3.tgz#11f82318f5fe7bb2cd22965a108e9306208216d8" dependencies: @@ -936,6 +987,12 @@ glob-parent@^2.0.0: dependencies: is-glob "^2.0.0" +glob2base@^0.0.12: + version "0.0.12" + resolved "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56" + dependencies: + find-index "^0.1.1" + glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" @@ -1095,7 +1152,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@~2.0.0, inherits@~2.0.3: +inherits@2, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" @@ -1117,6 +1174,12 @@ is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + dependencies: + binary-extensions "^1.0.0" + is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" @@ -1780,7 +1843,7 @@ minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" -minimist@^1.1.1, minimist@^1.2.0: +minimist@^1.1.0, minimist@^1.1.1, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" @@ -2096,9 +2159,9 @@ preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" -prettier@^1.8.0: - version "1.8.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.8.2.tgz#bff83e7fd573933c607875e5ba3abbdffb96aeb8" +prettier@^1.9.2: + version "1.9.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.9.2.tgz#96bc2132f7a32338e6078aeb29727178c6335827" pretty-format@^21.2.1: version "21.2.1" @@ -2195,7 +2258,7 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" -readable-stream@^2.0.6, readable-stream@^2.1.4: +readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.4: version "2.3.3" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" dependencies: @@ -2207,6 +2270,15 @@ readable-stream@^2.0.6, readable-stream@^2.1.4: string_decoder "~1.0.3" util-deprecate "~1.0.1" +readdirp@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" + dependencies: + graceful-fs "^4.1.2" + minimatch "^3.0.2" + readable-stream "^2.0.2" + set-immediate-shim "^1.0.1" + regenerator-runtime@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1" @@ -2301,7 +2373,7 @@ resolve@1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" -resolve@^1.3.2: +resolve@^1.1.7, resolve@^1.3.2: version "1.5.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36" dependencies: @@ -2349,6 +2421,10 @@ set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" +set-immediate-shim@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -2392,7 +2468,7 @@ sntp@2.x.x: dependencies: hoek "4.x.x" -source-map-support@^0.4.0, source-map-support@^0.4.15: +source-map-support@^0.4.15: version "0.4.18" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" dependencies: @@ -2532,6 +2608,12 @@ strip-json-comments@^2.0.0, strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" +subarg@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" + dependencies: + minimist "^1.1.0" + supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" @@ -2613,40 +2695,42 @@ trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" -ts-jest@21.2.2: - version "21.2.2" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-21.2.2.tgz#60bd8a6bc599cf746bfa054600ba5694d3f39ebc" +ts-jest@^21.2.4: + version "21.2.4" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-21.2.4.tgz#8fbcfbfbf0c58cced10dcc34a5190acc8c5312ef" dependencies: babel-core "^6.24.1" babel-plugin-istanbul "^4.1.4" babel-plugin-transform-es2015-modules-commonjs "^6.24.1" babel-preset-jest "^21.2.0" - fs-extra "^4.0.0" + cpx "^1.5.0" + fs-extra "^4.0.2" jest-config "^21.2.1" - jest-util "^21.2.1" pkg-dir "^2.0.0" source-map-support "^0.5.0" yargs "^10.0.3" -ts-node@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-3.3.0.tgz#c13c6a3024e30be1180dd53038fc209289d4bf69" +ts-node@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-4.0.2.tgz#cb3d039b9898fdc79ad09ab7e69c84564c8c41ee" dependencies: arrify "^1.0.0" - chalk "^2.0.0" + chalk "^2.3.0" diff "^3.1.0" make-error "^1.1.1" minimist "^1.2.0" mkdirp "^0.5.1" - source-map-support "^0.4.0" - tsconfig "^6.0.0" + source-map-support "^0.5.0" + tsconfig "^7.0.0" v8flags "^3.0.0" yn "^2.0.0" -tsconfig@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-6.0.0.tgz#6b0e8376003d7af1864f8df8f89dd0059ffcd032" +tsconfig@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-7.0.0.tgz#84538875a4dc216e5c4a5432b3a4dec3d54e91b7" dependencies: + "@types/strip-bom" "^3.0.0" + "@types/strip-json-comments" "0.0.30" strip-bom "^3.0.0" strip-json-comments "^2.0.0" @@ -2708,9 +2792,9 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" -typescript@2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.6.1.tgz#ef39cdea27abac0b500242d6726ab90e0c846631" +typescript@2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.6.2.tgz#3c5b6fd7f6de0914269027f03c0946758f7673a4" uglify-js@^2.6: version "2.8.29" From b9fbadd706a592f8c2421ab48292cbd3a2ccc430 Mon Sep 17 00:00:00 2001 From: Daniel Griesser Date: Fri, 15 Dec 2017 11:36:40 +0100 Subject: [PATCH 3/7] fix: tests for fetch api --- packages/browser/__tests__/index.ts | 2 +- packages/browser/lib/SentryBrowser.ts | 2 +- packages/core/__mocks__/MockAdapter.ts | 2 +- packages/core/lib/Adapter.ts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/browser/__tests__/index.ts b/packages/browser/__tests__/index.ts index 1c15b747a40a..a1a34966f967 100644 --- a/packages/browser/__tests__/index.ts +++ b/packages/browser/__tests__/index.ts @@ -34,7 +34,7 @@ describe('Browser Interface', () => { page.on('request', async request => { // @ts-ignore - if (request.resourceType === 'xhr') { + if (request.resourceType === 'other' || request.resourceType === 'xhr') { const data = JSON.parse(request.postData as any); if (data.exception) { expect(data.exception).not.toBeUndefined(); diff --git a/packages/browser/lib/SentryBrowser.ts b/packages/browser/lib/SentryBrowser.ts index 5f6851c0937d..68438f94d8b3 100644 --- a/packages/browser/lib/SentryBrowser.ts +++ b/packages/browser/lib/SentryBrowser.ts @@ -23,7 +23,7 @@ export class SentryBrowser implements IAdapter { return Raven; } - public setOptions(options: ISentryBrowserOptions) { + public async setOptions(options: ISentryBrowserOptions) { Object.assign(this.options, options); Object.assign(Raven._globalOptions, this.options); return this; diff --git a/packages/core/__mocks__/MockAdapter.ts b/packages/core/__mocks__/MockAdapter.ts index 09b50b921dc7..a6c061e26455 100644 --- a/packages/core/__mocks__/MockAdapter.ts +++ b/packages/core/__mocks__/MockAdapter.ts @@ -16,7 +16,7 @@ export class MockAdapter implements Sentry.IAdapter { return Promise.resolve(true); } - public setOptions(options: IMockAdapterOptions) { + public async setOptions(options: IMockAdapterOptions) { // We need nothing here return this; } diff --git a/packages/core/lib/Adapter.ts b/packages/core/lib/Adapter.ts index 45eb55cda196..c7542ce91130 100644 --- a/packages/core/lib/Adapter.ts +++ b/packages/core/lib/Adapter.ts @@ -3,7 +3,7 @@ import { Event, IBreadcrumb, IUser } from './Interfaces'; export interface IAdapter { readonly options: {}; install(): Promise; - setOptions(options: {}): IAdapter; + setOptions(options: {}): Promise; send(event: Event): Promise; captureException(exception: Error): Promise; captureMessage(message: string): Promise; From c1f8a79515a3c9cfec016efbf0fe42888d4ca3ca Mon Sep 17 00:00:00 2001 From: Daniel Griesser Date: Fri, 15 Dec 2017 11:58:28 +0100 Subject: [PATCH 4/7] ci: Reenable travis tests --- .travis.yml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/.travis.yml b/.travis.yml index 56f465b615bf..bc97ee5c90d9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -27,13 +27,13 @@ matrix: install: true script: - cd packages/core && yarn install && yarn test - # - env: NAME="@sentry/browser" - # install: true - # script: - # - yarn link - # - cd packages/core && yarn link && yarn install && yarn dist - # - cd ../browser - # - yarn remove @sentry/core # this has to be removed once we released the package - # - yarn link "@sentry/core" - # - yarn link "raven-js" - # - yarn install && yarn test + - env: NAME="@sentry/browser" + install: true + script: + - yarn link + - cd packages/core && yarn link && yarn install && yarn dist + - cd ../browser + - yarn remove @sentry/core # this has to be removed once we released the package + - yarn link "@sentry/core" + - yarn link "raven-js" + - yarn install && yarn test From 277513f37b306501b5ad455d1bfa0efde9b4004f Mon Sep 17 00:00:00 2001 From: Daniel Griesser Date: Fri, 15 Dec 2017 11:58:54 +0100 Subject: [PATCH 5/7] ci: Fix core dep --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index bc97ee5c90d9..06bab97c3f85 100644 --- a/.travis.yml +++ b/.travis.yml @@ -33,7 +33,6 @@ matrix: - yarn link - cd packages/core && yarn link && yarn install && yarn dist - cd ../browser - - yarn remove @sentry/core # this has to be removed once we released the package - yarn link "@sentry/core" - yarn link "raven-js" - yarn install && yarn test From 5e38fe2c4ebd178ecbeb58a117417b123c979f1e Mon Sep 17 00:00:00 2001 From: Daniel Griesser Date: Tue, 19 Dec 2017 15:24:24 +0100 Subject: [PATCH 6/7] test(core): Remove unnecessary asserts --- packages/browser/package.json | 2 +- packages/core/__tests__/client.ts | 14 +++++--------- packages/core/package.json | 2 +- 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/packages/browser/package.json b/packages/browser/package.json index 5888af48b841..e606c2eb6d01 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/browser", - "version": "0.1.0", + "version": "0.2.0", "description": "Offical Sentry SDK for browsers", "main": "dist/index.js", "typings": "dist/index.d.ts", diff --git a/packages/core/__tests__/client.ts b/packages/core/__tests__/client.ts index 007494fd425a..5ca9a0f54b61 100644 --- a/packages/core/__tests__/client.ts +++ b/packages/core/__tests__/client.ts @@ -62,15 +62,13 @@ describe('Sentry.Client', () => { }); test('multiple install calls on Adapter should only call once', async () => { - expect.assertions(2); + expect.assertions(1); const sentry = new Sentry.Client(dsn); sentry.use(MockAdapter, { testOption: true }); - const spy1 = jest.spyOn(sentry, 'install'); - const spy2 = jest.spyOn(sentry.getAdapter(), 'install'); + const spy1 = jest.spyOn(sentry.getAdapter(), 'install'); await sentry.install(); await sentry.install(); - expect(spy1).toHaveBeenCalledTimes(2); - expect(spy2).toHaveBeenCalledTimes(1); + expect(spy1).toHaveBeenCalledTimes(1); }); test('no registered Adapter', async () => { @@ -173,12 +171,10 @@ describe('Sentry.Client', () => { }); test('call setRelease on Adapter', async () => { - expect.assertions(2); + expect.assertions(1); const sentry = await new Sentry.Client(dsn).use(MockAdapter).install(); - const spy = jest.spyOn(sentry, 'setRelease'); - const spy2 = jest.spyOn(sentry.getAdapter(), 'setRelease'); + const spy = jest.spyOn(sentry.getAdapter(), 'setRelease'); await sentry.setRelease('#oops'); expect(spy).toBeCalled(); - expect(spy2).toBeCalled(); }); }); diff --git a/packages/core/package.json b/packages/core/package.json index 1ce16324cf69..e14107f773f9 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/core", - "version": "0.1.0", + "version": "0.2.0", "description": "Sentry core implementation for all JavaScript related SDKs", "main": "dist/index.js", "typings": "dist/index.d.ts", From 420443190d48263870bd1436443447a67ebc5412 Mon Sep 17 00:00:00 2001 From: Daniel Griesser Date: Tue, 19 Dec 2017 16:52:10 +0100 Subject: [PATCH 7/7] meta: Bump core/browser --- packages/browser/package.json | 4 ++-- packages/browser/yarn.lock | 6 +++--- packages/core/package.json | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/browser/package.json b/packages/browser/package.json index e606c2eb6d01..b088d4747dc5 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/browser", - "version": "0.2.0", + "version": "0.2.1", "description": "Offical Sentry SDK for browsers", "main": "dist/index.js", "typings": "dist/index.d.ts", @@ -8,7 +8,7 @@ "definition": "dist/index.d.ts" }, "dependencies": { - "@sentry/core": "^0.1.0", + "@sentry/core": "^0.2.1", "raven-js": "^3.21.0" }, "devDependencies": { diff --git a/packages/browser/yarn.lock b/packages/browser/yarn.lock index 9d5c30d51808..7e09a352fb18 100644 --- a/packages/browser/yarn.lock +++ b/packages/browser/yarn.lock @@ -2,9 +2,9 @@ # yarn lockfile v1 -"@sentry/core@^0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-0.1.0.tgz#9d9cdbedc1013de21a6143c92dbc357c60242682" +"@sentry/core@^0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-0.2.1.tgz#4ab771ef370397eb24ac03b5686fe805d5ab523a" "@types/events@*": version "1.1.0" diff --git a/packages/core/package.json b/packages/core/package.json index e14107f773f9..db85f1f9a77a 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/core", - "version": "0.2.0", + "version": "0.2.1", "description": "Sentry core implementation for all JavaScript related SDKs", "main": "dist/index.js", "typings": "dist/index.d.ts",