Skip to content

Commit dbe7ddf

Browse files
committed
Try polyfilling nodejs util
1 parent 871c4cb commit dbe7ddf

File tree

2 files changed

+22
-4
lines changed

2 files changed

+22
-4
lines changed

packages/vercel-edge/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,14 @@
4040
},
4141
"dependencies": {
4242
"@opentelemetry/api": "^1.9.0",
43-
"@opentelemetry/core": "^2.0.0",
4443
"@opentelemetry/resources": "^2.0.0",
45-
"@opentelemetry/semantic-conventions": "^1.34.0",
4644
"@sentry/core": "9.38.0"
4745
},
4846
"devDependencies": {
4947
"@edge-runtime/types": "3.0.1",
48+
"@opentelemetry/core": "^2.0.0",
5049
"@opentelemetry/sdk-trace-base": "^2.0.0",
50+
"@opentelemetry/semantic-conventions": "^1.34.0",
5151
"@sentry/opentelemetry": "9.38.0"
5252
},
5353
"scripts": {

packages/vercel-edge/rollup.npm.config.mjs

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { makeBaseNPMConfig, makeNPMConfigVariants, plugins } from '@sentry-inter
44
export default makeNPMConfigVariants(
55
makeBaseNPMConfig({
66
entrypoints: ['src/index.ts'],
7-
bundledBuiltins: ['perf_hooks'],
7+
bundledBuiltins: ['perf_hooks', 'util'],
88
packageSpecificConfig: {
99
context: 'globalThis',
1010
output: {
@@ -23,7 +23,7 @@ export default makeNPMConfigVariants(
2323
// This plugin is needed because otel imports `performance` from `perf_hooks` and also uses it via the `performance` global.
2424
// Both of these APIs are not available in the edge runtime so we need to define a polyfill.
2525
// Vercel does something similar in the `@vercel/otel` package: https://github.com/vercel/otel/blob/087601ae585cb116bb2b46c211d014520de76c71/packages/otel/build.ts#L62
26-
name: 'perf-hooks-performance-polyfill',
26+
name: 'edge-runtime-polyfills',
2727
banner: `
2828
{
2929
if (globalThis.performance === undefined) {
@@ -37,6 +37,8 @@ export default makeNPMConfigVariants(
3737
resolveId: source => {
3838
if (source === 'perf_hooks') {
3939
return '\0perf_hooks_sentry_shim';
40+
} else if (source === 'util') {
41+
return '\0util_sentry_shim';
4042
} else {
4143
return null;
4244
}
@@ -49,6 +51,22 @@ export default makeNPMConfigVariants(
4951
now: () => Date.now()
5052
}
5153
`;
54+
} else if (id === '\0util_sentry_shim') {
55+
return `
56+
export const inspect = (object) =>
57+
JSON.stringify(object, null, 2);
58+
59+
export const promisify = (fn) => {
60+
return (...args) => {
61+
return new Promise((resolve, reject) => {
62+
fn(...args, (err, result) => {
63+
if (err) reject(err);
64+
else resolve(result);
65+
});
66+
});
67+
};
68+
};
69+
`;
5270
} else {
5371
return null;
5472
}

0 commit comments

Comments
 (0)