Skip to content

Commit 971b51d

Browse files
authored
Revert "Revert "ref: Move node & node-experimental folders" #11318" (#11321)
This re-adds the change to move the node & node-experimental folders.
1 parent 7e959c5 commit 971b51d

File tree

173 files changed

+1631
-1631
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

173 files changed

+1631
-1631
lines changed

packages/nextjs/test/integration/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
"resolutions": {
2828
"@sentry/browser": "file:../../../browser",
2929
"@sentry/core": "file:../../../core",
30-
"@sentry/node": "file:../../../node-experimental",
30+
"@sentry/node": "file:../../../node",
3131
"@sentry/opentelemetry": "file:../../../opentelemetry",
3232
"@sentry/react": "file:../../../react",
3333
"@sentry-internal/replay": "file:../../../replay-internal",

packages/node-experimental/LICENSE

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Copyright (c) 2023 Sentry (https://sentry.io) and individual contributors. All rights reserved.
1+
Copyright (c) 2019 Sentry (https://sentry.io) and individual contributors. All rights reserved.
22

33
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
44
documentation files (the "Software"), to deal in the Software without restriction, including without limitation the

packages/node-experimental/README.md

+44-35
Original file line numberDiff line numberDiff line change
@@ -4,56 +4,65 @@
44
</a>
55
</p>
66

7-
# Official Sentry SDK for Node
7+
# Legacy Sentry SDK for NodeJS
88

9-
[![npm version](https://img.shields.io/npm/v/@sentry/node.svg)](https://www.npmjs.com/package/@sentry/node)
10-
[![npm dm](https://img.shields.io/npm/dm/@sentry/node.svg)](https://www.npmjs.com/package/@sentry/node)
11-
[![npm dt](https://img.shields.io/npm/dt/@sentry/node.svg)](https://www.npmjs.com/package/@sentry/node)
9+
[![npm version](https://img.shields.io/npm/v/@sentry/node-experimental.svg)](https://www.npmjs.com/package/@sentry/node-experimental)
10+
[![npm dm](https://img.shields.io/npm/dm/@sentry/node-experimental.svg)](https://www.npmjs.com/package/@sentry/node-experimental)
11+
[![npm dt](https://img.shields.io/npm/dt/@sentry/node-experimental.svg)](https://www.npmjs.com/package/@sentry/node-experimental)
1212

13-
## Installation
13+
## Links
1414

15-
```bash
16-
npm install @sentry/node
15+
- [Official SDK Docs](https://docs.sentry.io/quickstart/)
16+
- [TypeDoc](http://getsentry.github.io/sentry-javascript/)
1717

18-
# Or yarn
19-
yarn add @sentry/node
20-
```
18+
## Status
19+
20+
Since v8, this is the _legacy_ SDK, and it will most likely be completely removed before v8 is fully stable. It only
21+
exists so that Meta-SDKs like `@sentry/nextjs` or `@sentry/sveltekit` can be migrated to the new `@sentry/node`
22+
step-by-step.
23+
24+
You should instead use [@sentry/node](./../node-experimental/).
2125

2226
## Usage
2327

24-
```js
25-
// CJS Syntax
26-
const Sentry = require('@sentry/node');
27-
// ESM Syntax
28-
import * as Sentry from '@sentry/node';
28+
To use this SDK, call `init(options)` as early as possible in the main entry module. This will initialize the SDK and
29+
hook into the environment. Note that you can turn off almost all side effects using the respective options. Minimum
30+
supported Node version is Node 14.
31+
32+
```javascript
33+
// CJS syntax
34+
const Sentry = require('@sentry/node-experimental');
35+
// ESM syntax
36+
import * as Sentry from '@sentry/node-experimental';
2937

3038
Sentry.init({
3139
dsn: '__DSN__',
3240
// ...
3341
});
3442
```
3543

36-
Note that it is necessary to initialize Sentry **before you import any package that may be instrumented by us**.
37-
38-
[More information on how to set up Sentry for Node in v8.](./../../docs/v8-node.md)
44+
To set context information or send manual events, use the exported functions of `@sentry/node-experimental`. Note that
45+
these functions will not perform any action before you have called `init()`:
3946

40-
### ESM Support
47+
```javascript
48+
// Set user information, as well as tags and further extras
49+
Sentry.setExtra('battery', 0.7);
50+
Sentry.setTag('user_mode', 'admin');
51+
Sentry.setUser({ id: '4711' });
4152

42-
Due to the way OpenTelemetry handles instrumentation, this only works out of the box for CommonJS (`require`)
43-
applications.
44-
45-
There is experimental support for running OpenTelemetry with ESM (`"type": "module"`):
53+
// Add a breadcrumb for future events
54+
Sentry.addBreadcrumb({
55+
message: 'My Breadcrumb',
56+
// ...
57+
});
4658

47-
```bash
48-
node --experimental-loader=@opentelemetry/instrumentation/hook.mjs ./app.js
59+
// Capture exceptions, messages or manual events
60+
Sentry.captureMessage('Hello, world!');
61+
Sentry.captureException(new Error('Good bye'));
62+
Sentry.captureEvent({
63+
message: 'Manual',
64+
stacktrace: [
65+
// ...
66+
],
67+
});
4968
```
50-
51-
You'll need to install `@opentelemetry/instrumentation` in your app to ensure this works.
52-
53-
See
54-
[OpenTelemetry Instrumentation Docs](https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation#instrumentation-for-es-modules-in-nodejs-experimental)
55-
for details on this - but note that this is a) experimental, and b) does not work with all integrations.
56-
57-
## Links
58-
59-
- [Official SDK Docs](https://docs.sentry.io/quickstart/)

packages/node-experimental/package.json

+22-29
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
2-
"name": "@sentry/node",
2+
"name": "@sentry/node-experimental",
33
"version": "8.0.0-alpha.7",
4-
"description": "Sentry Node SDK using OpenTelemetry for performance instrumentation",
4+
"description": "The old version of Sentry SDK for Node.js, without OpenTelemetry support.",
55
"repository": "git://github.com/getsentry/sentry-javascript.git",
66
"homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/node-experimental",
77
"author": "Sentry",
@@ -42,39 +42,22 @@
4242
"access": "public"
4343
},
4444
"dependencies": {
45-
"@opentelemetry/api": "1.7.0",
46-
"@opentelemetry/context-async-hooks": "1.21.0",
47-
"@opentelemetry/core": "1.21.0",
48-
"@opentelemetry/instrumentation": "0.48.0",
49-
"@opentelemetry/instrumentation-express": "0.35.0",
50-
"@opentelemetry/instrumentation-fastify": "0.33.0",
51-
"@opentelemetry/instrumentation-graphql": "0.37.0",
52-
"@opentelemetry/instrumentation-hapi": "0.34.0",
53-
"@opentelemetry/instrumentation-http": "0.48.0",
54-
"@opentelemetry/instrumentation-koa": "0.37.0",
55-
"@opentelemetry/instrumentation-mongodb": "0.39.0",
56-
"@opentelemetry/instrumentation-mongoose": "0.35.0",
57-
"@opentelemetry/instrumentation-mysql": "0.35.0",
58-
"@opentelemetry/instrumentation-mysql2": "0.35.0",
59-
"@opentelemetry/instrumentation-nestjs-core": "0.34.0",
60-
"@opentelemetry/instrumentation-pg": "0.38.0",
61-
"@opentelemetry/resources": "1.21.0",
62-
"@opentelemetry/sdk-trace-base": "1.21.0",
63-
"@opentelemetry/semantic-conventions": "1.21.0",
64-
"@prisma/instrumentation": "5.9.0",
45+
"@sentry-internal/tracing": "8.0.0-alpha.7",
6546
"@sentry/core": "8.0.0-alpha.7",
66-
"@sentry/opentelemetry": "8.0.0-alpha.7",
6747
"@sentry/types": "8.0.0-alpha.7",
6848
"@sentry/utils": "8.0.0-alpha.7"
6949
},
7050
"devDependencies": {
71-
"@types/node": "^14.18.0"
72-
},
73-
"optionalDependencies": {
74-
"opentelemetry-instrumentation-fetch-node": "1.1.2"
51+
"@types/cookie": "0.5.2",
52+
"@types/express": "^4.17.14",
53+
"@types/lru-cache": "^5.1.0",
54+
"@types/node": "14.18.63",
55+
"express": "^4.17.1",
56+
"nock": "^13.0.5",
57+
"undici": "^5.21.0"
7558
},
7659
"scripts": {
77-
"build": "run-p build:transpile build:types",
60+
"build": "run-s build:transpile build:types",
7861
"build:dev": "yarn build",
7962
"build:transpile": "rollup -c rollup.npm.config.mjs",
8063
"build:types": "run-s build:types:core build:types:downlevel",
@@ -89,13 +72,23 @@
8972
"clean": "rimraf build coverage sentry-node-experimental-*.tgz",
9073
"fix": "eslint . --format stylish --fix",
9174
"lint": "eslint . --format stylish",
92-
"test": "yarn test:jest",
75+
"test": "run-s test:jest test:express test:webpack test:release-health",
76+
"test:express": "node test/manual/express-scope-separation/start.js",
9377
"test:jest": "jest",
78+
"test:release-health": "node test/manual/release-health/runner.js",
79+
"test:webpack": "cd test/manual/webpack-async-context/ && yarn --silent --ignore-engines && node npm-build.js",
9480
"test:watch": "jest --watch",
9581
"yalc:publish": "ts-node ../../scripts/prepack.ts && yalc publish build --push --sig"
9682
},
9783
"volta": {
9884
"extends": "../../package.json"
9985
},
86+
"madge": {
87+
"detectiveOptions": {
88+
"ts": {
89+
"skipTypeImports": true
90+
}
91+
}
92+
},
10093
"sideEffects": false
10194
}
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,34 @@
11
import { makeBaseBundleConfig } from '@sentry-internal/rollup-utils';
22

3-
export function createAnrWorkerCode() {
4-
let base64Code;
5-
6-
return {
7-
workerRollupConfig: makeBaseBundleConfig({
8-
bundleType: 'node-worker',
9-
entrypoints: ['src/integrations/anr/worker.ts'],
10-
licenseTitle: '@sentry/node',
11-
outputFileBase: () => 'worker-script.js',
12-
packageSpecificConfig: {
13-
output: {
14-
dir: 'build/esm/integrations/anr',
15-
sourcemap: false,
16-
},
17-
plugins: [
18-
{
19-
name: 'output-base64-worker-script',
20-
renderChunk(code) {
21-
base64Code = Buffer.from(code).toString('base64');
22-
},
23-
},
24-
],
3+
function createAnrWorkerConfig(destDir, esm) {
4+
return makeBaseBundleConfig({
5+
bundleType: 'node-worker',
6+
entrypoints: ['src/integrations/anr/worker.ts'],
7+
licenseTitle: '@sentry/node',
8+
outputFileBase: () => 'worker-script.js',
9+
packageSpecificConfig: {
10+
output: {
11+
dir: destDir,
12+
sourcemap: false,
2513
},
26-
}),
27-
getBase64Code() {
28-
return base64Code;
14+
plugins: [
15+
{
16+
name: 'output-base64-worker-script',
17+
renderChunk(code) {
18+
const base64Code = Buffer.from(code).toString('base64');
19+
if (esm) {
20+
return `export const base64WorkerScript = '${base64Code}';`;
21+
} else {
22+
return `exports.base64WorkerScript = '${base64Code}';`;
23+
}
24+
},
25+
},
26+
],
2927
},
30-
};
28+
});
3129
}
30+
31+
export const anrWorkerConfigs = [
32+
createAnrWorkerConfig('build/esm/integrations/anr', true),
33+
createAnrWorkerConfig('build/cjs/integrations/anr', false),
34+
];
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,8 @@
1-
import replace from '@rollup/plugin-replace';
21
import { makeBaseNPMConfig, makeNPMConfigVariants } from '@sentry-internal/rollup-utils';
3-
import { createAnrWorkerCode } from './rollup.anr-worker.config.mjs';
4-
5-
const { workerRollupConfig, getBase64Code } = createAnrWorkerCode();
2+
import { anrWorkerConfigs } from './rollup.anr-worker.config.mjs';
63

74
export default [
8-
// The worker needs to be built first since it's output is used in the main bundle.
9-
workerRollupConfig,
10-
...makeNPMConfigVariants(
11-
makeBaseNPMConfig({
12-
packageSpecificConfig: {
13-
output: {
14-
// set exports to 'named' or 'auto' so that rollup doesn't warn
15-
exports: 'named',
16-
// set preserveModules to false because we want to bundle everything into one file.
17-
preserveModules: false,
18-
},
19-
plugins: [
20-
replace({
21-
delimiters: ['###', '###'],
22-
// removes some webpack warnings
23-
preventAssignment: true,
24-
values: {
25-
base64WorkerScript: () => getBase64Code(),
26-
},
27-
}),
28-
],
29-
},
30-
}),
31-
),
5+
...makeNPMConfigVariants(makeBaseNPMConfig()),
6+
// The ANR worker builds must come after the main build because they overwrite the worker-script.js file
7+
...anrWorkerConfigs,
328
];

0 commit comments

Comments
 (0)