Skip to content

Commit

Permalink
feat(node-profiling): Output ESM and remove Sentry deps from output (g…
Browse files Browse the repository at this point in the history
…etsentry#11135)

- Moves Sentry deps to `dependencies` rather than `devDependencies`
- Updated `package.json` exports
- Updated the rollup config to mirror our other modules with the
addition of the commonJs plugin
- I couldn't use `createRequire` myself because Jest can't handle
`import.meta` so instead I used `@rollup/plugin-esm-shim` which shims
both `require` and `__dirname` in `cpu_profiler.ts` in the ESM output!
  • Loading branch information
timfish authored and cadesalaberry committed Apr 19, 2024
1 parent ed61ca6 commit 22eb7ce
Show file tree
Hide file tree
Showing 6 changed files with 50 additions and 39 deletions.
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@
"devDependencies": {
"@biomejs/biome": "^1.4.0",
"@rollup/plugin-commonjs": "^25.0.7",
"@rollup/plugin-esm-shim": "^0.1.5",
"@rollup/plugin-json": "^6.1.0",
"@rollup/plugin-node-resolve": "^15.2.3",
"@rollup/plugin-replace": "^5.0.5",
Expand Down
16 changes: 10 additions & 6 deletions packages/profiling-node/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,18 @@
"homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/profiling-node",
"author": "Sentry",
"license": "MIT",
"main": "lib/index.js",
"main": "lib/cjs/index.js",
"types": "lib/types/index.d.ts",
"exports": {
"./package.json": "./package.json",
".": {
"import": {
"types": "./lib/types/index.d.ts",
"default": "./lib/esm/index.js"
},
"require": {
"types": "./lib/types/index.d.ts",
"default": "./lib/index.js"
"default": "./lib/cjs/index.js"
}
}
},
Expand Down Expand Up @@ -73,14 +77,14 @@
"test": "cross-env SENTRY_PROFILER_BINARY_DIR=lib jest --config jest.config.js"
},
"dependencies": {
"detect-libc": "^2.0.2",
"node-abi": "^3.52.0"
},
"devDependencies": {
"@sentry/core": "8.0.0-alpha.2",
"@sentry/node-experimental": "8.0.0-alpha.2",
"@sentry/types": "8.0.0-alpha.2",
"@sentry/utils": "8.0.0-alpha.2",
"detect-libc": "^2.0.2",
"node-abi": "^3.52.0"
},
"devDependencies": {
"@types/node": "16.18.70",
"@types/node-abi": "^3.0.0",
"clang-format": "^1.8.0",
Expand Down
20 changes: 10 additions & 10 deletions packages/profiling-node/rollup.npm.config.mjs
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import commonjs from '@rollup/plugin-commonjs';
import resolve from '@rollup/plugin-node-resolve';
import typescript from '@rollup/plugin-typescript';
import { makeBaseNPMConfig } from '@sentry-internal/rollup-utils';
import esmshim from '@rollup/plugin-esm-shim';
import { makeBaseNPMConfig, makeNPMConfigVariants } from '@sentry-internal/rollup-utils';

export default makeBaseNPMConfig({
packageSpecificConfig: {
input: 'src/index.ts',
output: { file: 'lib/index.js', format: 'cjs', dir: undefined, preserveModules: false },
plugins: [resolve(), commonjs(), typescript({ tsconfig: './tsconfig.json' })],
},
});
export default makeNPMConfigVariants(
makeBaseNPMConfig({
packageSpecificConfig: {
output: { dir: 'lib', preserveModules: false },
plugins: [commonjs(), esmshim()],
},
}),
);
44 changes: 22 additions & 22 deletions packages/profiling-node/src/cpu_profiler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ const arch = process.env['BUILD_ARCH'] || _arch();
const abi = getAbi(versions.node, 'node');
const identifier = [platform, arch, stdlib, abi].filter(c => c !== undefined && c !== null).join('-');

const built_from_source_path = resolve(__dirname, `./sentry_cpu_profiler-${identifier}`);
const built_from_source_path = resolve(__dirname, '..', `./sentry_cpu_profiler-${identifier}`);

/**
* Imports cpp bindings based on the current platform and architecture.
Expand All @@ -39,39 +39,39 @@ export function importCppBindingsModule(): PrivateV8CpuProfilerBindings {
if (platform === 'darwin') {
if (arch === 'x64') {
if (abi === '93') {
return require('./sentry_cpu_profiler-darwin-x64-93.node');
return require('../sentry_cpu_profiler-darwin-x64-93.node');
}
if (abi === '108') {
return require('./sentry_cpu_profiler-darwin-x64-108.node');
return require('../sentry_cpu_profiler-darwin-x64-108.node');
}
if (abi === '115') {
return require('./sentry_cpu_profiler-darwin-x64-115.node');
return require('../sentry_cpu_profiler-darwin-x64-115.node');
}
}

if (arch === 'arm64') {
if (abi === '93') {
return require('./sentry_cpu_profiler-darwin-arm64-93.node');
return require('../sentry_cpu_profiler-darwin-arm64-93.node');
}
if (abi === '108') {
return require('./sentry_cpu_profiler-darwin-arm64-108.node');
return require('../sentry_cpu_profiler-darwin-arm64-108.node');
}
if (abi === '115') {
return require('./sentry_cpu_profiler-darwin-arm64-115.node');
return require('../sentry_cpu_profiler-darwin-arm64-115.node');
}
}
}

if (platform === 'win32') {
if (arch === 'x64') {
if (abi === '93') {
return require('./sentry_cpu_profiler-win32-x64-93.node');
return require('../sentry_cpu_profiler-win32-x64-93.node');
}
if (abi === '108') {
return require('./sentry_cpu_profiler-win32-x64-108.node');
return require('../sentry_cpu_profiler-win32-x64-108.node');
}
if (abi === '115') {
return require('./sentry_cpu_profiler-win32-x64-115.node');
return require('../sentry_cpu_profiler-win32-x64-115.node');
}
}
}
Expand All @@ -80,48 +80,48 @@ export function importCppBindingsModule(): PrivateV8CpuProfilerBindings {
if (arch === 'x64') {
if (stdlib === 'musl') {
if (abi === '93') {
return require('./sentry_cpu_profiler-linux-x64-musl-93.node');
return require('../sentry_cpu_profiler-linux-x64-musl-93.node');
}
if (abi === '108') {
return require('./sentry_cpu_profiler-linux-x64-musl-108.node');
return require('../sentry_cpu_profiler-linux-x64-musl-108.node');
}
if (abi === '115') {
return require('./sentry_cpu_profiler-linux-x64-musl-115.node');
return require('../sentry_cpu_profiler-linux-x64-musl-115.node');
}
}
if (stdlib === 'glibc') {
if (abi === '93') {
return require('./sentry_cpu_profiler-linux-x64-glibc-93.node');
return require('../sentry_cpu_profiler-linux-x64-glibc-93.node');
}
if (abi === '108') {
return require('./sentry_cpu_profiler-linux-x64-glibc-108.node');
return require('../sentry_cpu_profiler-linux-x64-glibc-108.node');
}
if (abi === '115') {
return require('./sentry_cpu_profiler-linux-x64-glibc-115.node');
return require('../sentry_cpu_profiler-linux-x64-glibc-115.node');
}
}
}
if (arch === 'arm64') {
if (stdlib === 'musl') {
if (abi === '93') {
return require('./sentry_cpu_profiler-linux-arm64-musl-93.node');
return require('../sentry_cpu_profiler-linux-arm64-musl-93.node');
}
if (abi === '108') {
return require('./sentry_cpu_profiler-linux-arm64-musl-108.node');
return require('../sentry_cpu_profiler-linux-arm64-musl-108.node');
}
if (abi === '115') {
return require('./sentry_cpu_profiler-linux-arm64-musl-115.node');
return require('../sentry_cpu_profiler-linux-arm64-musl-115.node');
}
}
if (stdlib === 'glibc') {
if (abi === '93') {
return require('./sentry_cpu_profiler-linux-arm64-glibc-93.node');
return require('../sentry_cpu_profiler-linux-arm64-glibc-93.node');
}
if (abi === '108') {
return require('./sentry_cpu_profiler-linux-arm64-glibc-108.node');
return require('../sentry_cpu_profiler-linux-arm64-glibc-108.node');
}
if (abi === '115') {
return require('./sentry_cpu_profiler-linux-arm64-glibc-115.node');
return require('../sentry_cpu_profiler-linux-arm64-glibc-115.node');
}
}
}
Expand Down
1 change: 0 additions & 1 deletion packages/sveltekit/src/index.types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,6 @@ export declare const getClient: typeof clientSdk.getClient;
// eslint-disable-next-line deprecation/deprecation
export declare const getCurrentHub: typeof clientSdk.getCurrentHub;
// eslint-disable-next-line deprecation/deprecation
export declare const makeMain: typeof clientSdk.makeMain;
export declare function close(timeout?: number | undefined): PromiseLike<boolean>;
export declare function flush(timeout?: number | undefined): PromiseLike<boolean>;

Expand Down
7 changes: 7 additions & 0 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -5831,6 +5831,13 @@
is-reference "1.2.1"
magic-string "^0.30.3"

"@rollup/plugin-esm-shim@^0.1.5":
version "0.1.5"
resolved "https://registry.yarnpkg.com/@rollup/plugin-esm-shim/-/plugin-esm-shim-0.1.5.tgz#74464e9a8a7e664557aae65592c8a3e317802220"
integrity sha512-xnIjDm/0EbqAw0/rR1UE7eAo9db0ftGPqT8RUCFtkFxtCuspbbmj+wutoyxm32jBytyO3SgkxSG17OR893fV7A==
dependencies:
magic-string "^0.30.3"

"@rollup/plugin-json@^4.0.0", "@rollup/plugin-json@^4.1.0":
version "4.1.0"
resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3"
Expand Down

0 comments on commit 22eb7ce

Please sign in to comment.