From 5cd19253bee498997034a320508bf5e5dc666599 Mon Sep 17 00:00:00 2001 From: Abhijeet Prasad Date: Thu, 20 Oct 2022 15:56:11 +0200 Subject: [PATCH 1/4] feat(otel): Add initial package for otel --- package.json | 1 + .../e2e-tests/verdaccio-config/config.yaml | 6 +++ packages/opentelemetry-node/.eslintrc.js | 9 ++++ packages/opentelemetry-node/LICENSE | 14 ++++++ packages/opentelemetry-node/README.md | 20 ++++++++ packages/opentelemetry-node/jest.config.js | 1 + packages/opentelemetry-node/package.json | 50 +++++++++++++++++++ .../opentelemetry-node/rollup.npm.config.js | 3 ++ packages/opentelemetry-node/src/index.ts | 6 +++ .../opentelemetry-node/test/index.test.ts | 7 +++ packages/opentelemetry-node/tsconfig.json | 9 ++++ .../opentelemetry-node/tsconfig.test.json | 12 +++++ .../opentelemetry-node/tsconfig.types.json | 10 ++++ packages/opentelemetry-node/yarn.lock | 30 +++++++++++ 14 files changed, 178 insertions(+) create mode 100644 packages/opentelemetry-node/.eslintrc.js create mode 100644 packages/opentelemetry-node/LICENSE create mode 100644 packages/opentelemetry-node/README.md create mode 100644 packages/opentelemetry-node/jest.config.js create mode 100644 packages/opentelemetry-node/package.json create mode 100644 packages/opentelemetry-node/rollup.npm.config.js create mode 100644 packages/opentelemetry-node/src/index.ts create mode 100644 packages/opentelemetry-node/test/index.test.ts create mode 100644 packages/opentelemetry-node/tsconfig.json create mode 100644 packages/opentelemetry-node/tsconfig.test.json create mode 100644 packages/opentelemetry-node/tsconfig.types.json create mode 100644 packages/opentelemetry-node/yarn.lock diff --git a/package.json b/package.json index b83d13febc0a..d0512db843b8 100644 --- a/package.json +++ b/package.json @@ -46,6 +46,7 @@ "packages/nextjs", "packages/node", "packages/node-integration-tests", + "packages/opentelemetry-node", "packages/react", "packages/remix", "packages/serverless", diff --git a/packages/e2e-tests/verdaccio-config/config.yaml b/packages/e2e-tests/verdaccio-config/config.yaml index d0e5eab87ddf..ce7c847562c3 100644 --- a/packages/e2e-tests/verdaccio-config/config.yaml +++ b/packages/e2e-tests/verdaccio-config/config.yaml @@ -86,6 +86,12 @@ packages: unpublish: $all # proxy: npmjs # Don't proxy for E2E tests! + '@sentry/opentelemetry-node': + access: $all + publish: $all + unpublish: $all + # proxy: npmjs # Don't proxy for E2E tests! + '@sentry/react': access: $all publish: $all diff --git a/packages/opentelemetry-node/.eslintrc.js b/packages/opentelemetry-node/.eslintrc.js new file mode 100644 index 000000000000..ce28fd3a0514 --- /dev/null +++ b/packages/opentelemetry-node/.eslintrc.js @@ -0,0 +1,9 @@ +module.exports = { + env: { + node: true, + }, + extends: ['../../.eslintrc.js'], + rules: { + '@sentry-internal/sdk/no-async-await': 'off', + }, +}; diff --git a/packages/opentelemetry-node/LICENSE b/packages/opentelemetry-node/LICENSE new file mode 100644 index 000000000000..4ac873d49f33 --- /dev/null +++ b/packages/opentelemetry-node/LICENSE @@ -0,0 +1,14 @@ +Copyright (c) 2022 Sentry (https://sentry.io) and individual contributors. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit +persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the +Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/packages/opentelemetry-node/README.md b/packages/opentelemetry-node/README.md new file mode 100644 index 000000000000..f14f1c347e9c --- /dev/null +++ b/packages/opentelemetry-node/README.md @@ -0,0 +1,20 @@ +

+ + Sentry + +

+ +# Official Sentry SDK for OpenTelemetry Node + +[![npm version](https://img.shields.io/npm/v/@sentry/opentelemetry-node.svg)](https://www.npmjs.com/package/@sentry/opentelemetry-node) +[![npm dm](https://img.shields.io/npm/dm/@sentry/opentelemetry-node.svg)](https://www.npmjs.com/package/@sentry/opentelemetry-node) +[![npm dt](https://img.shields.io/npm/dt/@sentry/opentelemetry-node.svg)](https://www.npmjs.com/package/@sentry/opentelemetry-node) + +## Links + +- [Official SDK Docs](https://docs.sentry.io/quickstart/) +- [TypeDoc](http://getsentry.github.io/sentry-javascript/) + +## Usage + +TODO diff --git a/packages/opentelemetry-node/jest.config.js b/packages/opentelemetry-node/jest.config.js new file mode 100644 index 000000000000..24f49ab59a4c --- /dev/null +++ b/packages/opentelemetry-node/jest.config.js @@ -0,0 +1 @@ +module.exports = require('../../jest/jest.config.js'); diff --git a/packages/opentelemetry-node/package.json b/packages/opentelemetry-node/package.json new file mode 100644 index 000000000000..ac44a83df75d --- /dev/null +++ b/packages/opentelemetry-node/package.json @@ -0,0 +1,50 @@ +{ + "name": "@sentry/opentelemetry-node", + "version": "7.16.0", + "description": "Official Sentry SDK for OpenTelemetry Node.js", + "private": true, + "repository": "git://github.com/getsentry/sentry-javascript.git", + "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/opentelemetry-node", + "author": "Sentry", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "main": "build/cjs/index.js", + "module": "build/esm/index.js", + "types": "build/types/index.d.ts", + "publishConfig": { + "access": "public" + }, + "dependencies": { + "@sentry/core": "7.16.0", + "@sentry/types": "7.16.0", + "@sentry/utils": "7.16.0" + }, + "devDependencies": {}, + "scripts": { + "build": "run-p build:rollup build:types", + "build:dev": "run-s build", + "build:rollup": "rollup -c rollup.npm.config.js", + "build:types": "tsc -p tsconfig.types.json", + "build:watch": "run-p build:rollup:watch build:types:watch", + "build:dev:watch": "run-s build:watch", + "build:rollup:watch": "rollup -c rollup.npm.config.js --watch", + "build:types:watch": "tsc -p tsconfig.types.json --watch", + "build:npm": "ts-node ../../scripts/prepack.ts && npm pack ./build", + "circularDepCheck": "madge --circular src/index.ts", + "clean": "rimraf build coverage sentry-node-*.tgz", + "fix": "run-s fix:eslint fix:prettier", + "fix:eslint": "eslint . --format stylish --fix", + "fix:prettier": "prettier --write \"{src,test,scripts}/**/*.ts\"", + "lint": "run-s lint:prettier lint:eslint", + "lint:eslint": "eslint . --cache --cache-location '../../eslintcache/' --format stylish", + "lint:prettier": "prettier --check \"{src,test,scripts}/**/*.ts\"", + "test": "run-s test:jest", + "test:jest": "jest", + "test:watch": "jest --watch" + }, + "volta": { + "extends": "../../package.json" + } +} diff --git a/packages/opentelemetry-node/rollup.npm.config.js b/packages/opentelemetry-node/rollup.npm.config.js new file mode 100644 index 000000000000..5a62b528ef44 --- /dev/null +++ b/packages/opentelemetry-node/rollup.npm.config.js @@ -0,0 +1,3 @@ +import { makeBaseNPMConfig, makeNPMConfigVariants } from '../../rollup/index.js'; + +export default makeNPMConfigVariants(makeBaseNPMConfig()); diff --git a/packages/opentelemetry-node/src/index.ts b/packages/opentelemetry-node/src/index.ts new file mode 100644 index 000000000000..11c68582d535 --- /dev/null +++ b/packages/opentelemetry-node/src/index.ts @@ -0,0 +1,6 @@ +/** + * Test function + */ +export function test(): void { + // no-op +} diff --git a/packages/opentelemetry-node/test/index.test.ts b/packages/opentelemetry-node/test/index.test.ts new file mode 100644 index 000000000000..13c12febdc85 --- /dev/null +++ b/packages/opentelemetry-node/test/index.test.ts @@ -0,0 +1,7 @@ +import { test } from '../src'; + +describe('index', () => { + it('runs', () => { + test(); + }); +}); diff --git a/packages/opentelemetry-node/tsconfig.json b/packages/opentelemetry-node/tsconfig.json new file mode 100644 index 000000000000..bf45a09f2d71 --- /dev/null +++ b/packages/opentelemetry-node/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + + "include": ["src/**/*"], + + "compilerOptions": { + // package-specific options + } +} diff --git a/packages/opentelemetry-node/tsconfig.test.json b/packages/opentelemetry-node/tsconfig.test.json new file mode 100644 index 000000000000..87f6afa06b86 --- /dev/null +++ b/packages/opentelemetry-node/tsconfig.test.json @@ -0,0 +1,12 @@ +{ + "extends": "./tsconfig.json", + + "include": ["test/**/*"], + + "compilerOptions": { + // should include all types from `./tsconfig.json` plus types for all test frameworks used + "types": ["node", "jest"] + + // other package-specific, test-specific options + } +} diff --git a/packages/opentelemetry-node/tsconfig.types.json b/packages/opentelemetry-node/tsconfig.types.json new file mode 100644 index 000000000000..65455f66bd75 --- /dev/null +++ b/packages/opentelemetry-node/tsconfig.types.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "build/types" + } +} diff --git a/packages/opentelemetry-node/yarn.lock b/packages/opentelemetry-node/yarn.lock new file mode 100644 index 000000000000..6c3196f04890 --- /dev/null +++ b/packages/opentelemetry-node/yarn.lock @@ -0,0 +1,30 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@sentry/core@7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.16.0.tgz#60f9b54ef2ec524176b329e1d15be39c36da5953" + integrity sha512-vq6H1b/IPTvzDD9coQ3wIudvSjkAYuUlXb1dv69dRlq4v3st9dcKBps1Zf0lQ1i4TVlDLoe1iGMmNFglMF1Q5w== + dependencies: + "@sentry/types" "7.16.0" + "@sentry/utils" "7.16.0" + tslib "^1.9.3" + +"@sentry/types@7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.16.0.tgz#79c06ada153a84feb949fa49b1c9d15f91decd79" + integrity sha512-i6D+OK6d0l/k+VQvRp/Pt21WkDEgVBUIZq+sOkEZJczbcfexVdXKeXXoYTD2vYuFq8Yy28fzlsZaKI+NoH94yQ== + +"@sentry/utils@7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.16.0.tgz#b832520c661d4435808969ee04814ff8e20497b1" + integrity sha512-3Zh1txg7IRp4kZAdG27YF7K6lD1IZyuAo9KjoPg1Xzqa4DOZyASJuEkbf+rK2a9T4HrtVHHXJUsNbKg8WM3VHg== + dependencies: + "@sentry/types" "7.16.0" + tslib "^1.9.3" + +tslib@^1.9.3: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== From cad7a54fbb4d65467120e87e6c325a4db6de6db8 Mon Sep 17 00:00:00 2001 From: Abhijeet Prasad Date: Fri, 21 Oct 2022 16:41:00 +0200 Subject: [PATCH 2/4] delete yarn.lock --- packages/opentelemetry-node/README.md | 1 - packages/opentelemetry-node/package.json | 5 ++++ packages/opentelemetry-node/yarn.lock | 30 ------------------------ 3 files changed, 5 insertions(+), 31 deletions(-) delete mode 100644 packages/opentelemetry-node/yarn.lock diff --git a/packages/opentelemetry-node/README.md b/packages/opentelemetry-node/README.md index f14f1c347e9c..18d393c767d1 100644 --- a/packages/opentelemetry-node/README.md +++ b/packages/opentelemetry-node/README.md @@ -13,7 +13,6 @@ ## Links - [Official SDK Docs](https://docs.sentry.io/quickstart/) -- [TypeDoc](http://getsentry.github.io/sentry-javascript/) ## Usage diff --git a/packages/opentelemetry-node/package.json b/packages/opentelemetry-node/package.json index ac44a83df75d..d821aaf12718 100644 --- a/packages/opentelemetry-node/package.json +++ b/packages/opentelemetry-node/package.json @@ -18,9 +18,14 @@ }, "dependencies": { "@sentry/core": "7.16.0", + "@sentry/tracing": "7.16.0", "@sentry/types": "7.16.0", "@sentry/utils": "7.16.0" }, + "peerDependencies": { + "@opentelemetry/api": "^1.2.0", + "@opentelemetry/sdk-trace-base": "^1.7.0" + }, "devDependencies": {}, "scripts": { "build": "run-p build:rollup build:types", diff --git a/packages/opentelemetry-node/yarn.lock b/packages/opentelemetry-node/yarn.lock deleted file mode 100644 index 6c3196f04890..000000000000 --- a/packages/opentelemetry-node/yarn.lock +++ /dev/null @@ -1,30 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@sentry/core@7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.16.0.tgz#60f9b54ef2ec524176b329e1d15be39c36da5953" - integrity sha512-vq6H1b/IPTvzDD9coQ3wIudvSjkAYuUlXb1dv69dRlq4v3st9dcKBps1Zf0lQ1i4TVlDLoe1iGMmNFglMF1Q5w== - dependencies: - "@sentry/types" "7.16.0" - "@sentry/utils" "7.16.0" - tslib "^1.9.3" - -"@sentry/types@7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.16.0.tgz#79c06ada153a84feb949fa49b1c9d15f91decd79" - integrity sha512-i6D+OK6d0l/k+VQvRp/Pt21WkDEgVBUIZq+sOkEZJczbcfexVdXKeXXoYTD2vYuFq8Yy28fzlsZaKI+NoH94yQ== - -"@sentry/utils@7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.16.0.tgz#b832520c661d4435808969ee04814ff8e20497b1" - integrity sha512-3Zh1txg7IRp4kZAdG27YF7K6lD1IZyuAo9KjoPg1Xzqa4DOZyASJuEkbf+rK2a9T4HrtVHHXJUsNbKg8WM3VHg== - dependencies: - "@sentry/types" "7.16.0" - tslib "^1.9.3" - -tslib@^1.9.3: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== From 7dee626e89047ae3d78db78f77249885f0a26081 Mon Sep 17 00:00:00 2001 From: Abhijeet Prasad Date: Fri, 21 Oct 2022 16:43:19 +0200 Subject: [PATCH 3/4] update deps --- packages/opentelemetry-node/package.json | 5 +++- yarn.lock | 34 ++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/packages/opentelemetry-node/package.json b/packages/opentelemetry-node/package.json index d821aaf12718..4bf1f6bae01e 100644 --- a/packages/opentelemetry-node/package.json +++ b/packages/opentelemetry-node/package.json @@ -23,10 +23,13 @@ "@sentry/utils": "7.16.0" }, "peerDependencies": { + "@opentelemetry/api": "1.x", + "@opentelemetry/sdk-trace-base": "1.x" + }, + "devDependencies": { "@opentelemetry/api": "^1.2.0", "@opentelemetry/sdk-trace-base": "^1.7.0" }, - "devDependencies": {}, "scripts": { "build": "run-p build:rollup build:types", "build:dev": "run-s build", diff --git a/yarn.lock b/yarn.lock index 2f3d6c5b0b7b..acf1ee5d06cd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3013,6 +3013,11 @@ dependencies: "@opentelemetry/context-base" "^0.12.0" +"@opentelemetry/api@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.2.0.tgz#89ef99401cde6208cff98760b67663726ef26686" + integrity sha512-0nBr+VZNKm9tvNDZFstI3Pq1fCTEDK5OZTnVKNvBNAKgd0yIvmwsP4m61rEv7ZP+tOUjWJhROpxK5MsnlF911g== + "@opentelemetry/context-base@^0.12.0": version "0.12.0" resolved "https://registry.yarnpkg.com/@opentelemetry/context-base/-/context-base-0.12.0.tgz#4906ae27359d3311e3dea1b63770a16f60848550" @@ -3023,6 +3028,13 @@ resolved "https://registry.yarnpkg.com/@opentelemetry/context-base/-/context-base-0.14.0.tgz#c67fc20a4d891447ca1a855d7d70fa79a3533001" integrity sha512-sDOAZcYwynHFTbLo6n8kIbLiVF3a3BLkrmehJUyEbT9F+Smbi47kLGS2gG2g0fjBLR/Lr1InPD7kXL7FaTqEkw== +"@opentelemetry/core@1.7.0": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-1.7.0.tgz#83bdd1b7a4ceafcdffd6590420657caec5f7b34c" + integrity sha512-AVqAi5uc8DrKJBimCTFUT4iFI+5eXpo4sYmGbQ0CypG0piOTHE2g9c5aSoTGYXu3CzOmJZf7pT6Xh+nwm5d6yQ== + dependencies: + "@opentelemetry/semantic-conventions" "1.7.0" + "@opentelemetry/core@^0.12.0": version "0.12.0" resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-0.12.0.tgz#a888badc9a408fa1f13976a574e69d14be32488e" @@ -3032,6 +3044,14 @@ "@opentelemetry/context-base" "^0.12.0" semver "^7.1.3" +"@opentelemetry/resources@1.7.0": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-1.7.0.tgz#90ccd3a6a86b4dfba4e833e73944bd64958d78c5" + integrity sha512-u1M0yZotkjyKx8dj+46Sg5thwtOTBmtRieNXqdCRiWUp6SfFiIP0bI+1XK3LhuXqXkBXA1awJZaTqKduNMStRg== + dependencies: + "@opentelemetry/core" "1.7.0" + "@opentelemetry/semantic-conventions" "1.7.0" + "@opentelemetry/resources@^0.12.0": version "0.12.0" resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-0.12.0.tgz#5eb287c3032a2bebb2bb9f69b44bd160d2a7d591" @@ -3040,6 +3060,20 @@ "@opentelemetry/api" "^0.12.0" "@opentelemetry/core" "^0.12.0" +"@opentelemetry/sdk-trace-base@^1.7.0": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.7.0.tgz#b498424e0c6340a9d80de63fd408c5c2130a60a5" + integrity sha512-Iz84C+FVOskmauh9FNnj4+VrA+hG5o+tkMzXuoesvSfunVSioXib0syVFeNXwOm4+M5GdWCuW632LVjqEXStIg== + dependencies: + "@opentelemetry/core" "1.7.0" + "@opentelemetry/resources" "1.7.0" + "@opentelemetry/semantic-conventions" "1.7.0" + +"@opentelemetry/semantic-conventions@1.7.0": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.7.0.tgz#af80a1ef7cf110ea3a68242acd95648991bcd763" + integrity sha512-FGBx/Qd09lMaqQcogCHyYrFEpTx4cAjeS+48lMIR12z7LdH+zofGDVQSubN59nL6IpubfKqTeIDu9rNO28iHVA== + "@opentelemetry/semantic-conventions@^0.12.0": version "0.12.0" resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-0.12.0.tgz#7e392aecdbdbd5d737d3995998b120dc17589ab0" From 76f3a495fe7b6f871b51690699bc44fdf7587688 Mon Sep 17 00:00:00 2001 From: Abhijeet Prasad Date: Fri, 21 Oct 2022 17:15:53 +0200 Subject: [PATCH 4/4] make sure to not publish otel package in e2e tests --- packages/e2e-tests/publish-packages.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/e2e-tests/publish-packages.ts b/packages/e2e-tests/publish-packages.ts index 38a034d7e9eb..22341b7aec6c 100644 --- a/packages/e2e-tests/publish-packages.ts +++ b/packages/e2e-tests/publish-packages.ts @@ -16,6 +16,11 @@ const packageTarballPaths = glob.sync('packages/*/sentry-*.tgz', { // Publish built packages to the fake registry packageTarballPaths.forEach(tarballPath => { + // Don't run publish opentelemetry-node package because it is private. + if (tarballPath.includes('sentry-opentelemetry-node')) { + return; + } + // `--userconfig` flag needs to be before `publish` childProcess.execSync(`npm --userconfig ${__dirname}/test-registry.npmrc publish ${tarballPath}`, { cwd: repositoryRoot, // Can't use __dirname here because npm would try to publish `@sentry-internal/e2e-tests`