summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2023-05-16 05:16:24 +0200
committerGitHub <noreply@github.com>2023-05-16 05:16:24 +0200
commit78fbc3f3f695610083d07a55ef2a116e0bf04a10 (patch)
tree8c09614e023aa9f46a16b591dced4446f484b9eb
parentab9a17eeee01a3b04fac2bf583c812179f410c91 (diff)
fix(npm): add performance.markResourceTiming sham (#19123)
This commit shams "performance.markResourceTiming" API by using a noop function. It is done to provide compatibility with "npm:undici" package. We should look into actually implementing this API properly, but I wanted to unblock support for "undici" and "astro" for now. Ref https://github.com/denoland/deno/issues/19065
-rw-r--r--ext/node/analyze.rs3
-rw-r--r--ext/node/polyfills/01_require.js2
-rw-r--r--ext/node/polyfills/02_init.js1
-rw-r--r--ext/node/polyfills/perf_hooks.ts3
4 files changed, 7 insertions, 2 deletions
diff --git a/ext/node/analyze.rs b/ext/node/analyze.rs
index 6d32c68be..2e5c2d15f 100644
--- a/ext/node/analyze.rs
+++ b/ext/node/analyze.rs
@@ -32,6 +32,7 @@ static NODE_GLOBALS: &[&str] = &[
"setImmediate",
"setInterval",
"setTimeout",
+ "performance",
];
#[derive(Debug, Clone)]
@@ -528,7 +529,7 @@ mod tests {
"var clearTimeout = globalThis.clearTimeout;var console = globalThis.console;",
"var global = globalThis.global;var process = globalThis.process;",
"var setImmediate = globalThis.setImmediate;var setInterval = globalThis.setInterval;",
- "var setTimeout = globalThis.setTimeout;\n",
+ "var setTimeout = globalThis.setTimeout;var performance = globalThis.performance;\n",
"export const x = 1;"
),
NODE_GLOBAL_THIS_NAME,
diff --git a/ext/node/polyfills/01_require.js b/ext/node/polyfills/01_require.js
index a8a70c2fc..7b91d12aa 100644
--- a/ext/node/polyfills/01_require.js
+++ b/ext/node/polyfills/01_require.js
@@ -907,7 +907,7 @@ Module.prototype.require = function (id) {
Module.wrapper = [
// We provide the non-standard APIs in the CommonJS wrapper
// to avoid exposing them in global namespace.
- "(function (exports, require, module, __filename, __dirname, globalThis) { const { Buffer, clearImmediate, clearInterval, clearTimeout, console, global, process, setImmediate, setInterval, setTimeout} = globalThis; var window = undefined; (function () {",
+ "(function (exports, require, module, __filename, __dirname, globalThis) { const { Buffer, clearImmediate, clearInterval, clearTimeout, console, global, process, setImmediate, setInterval, setTimeout, performance} = globalThis; var window = undefined; (function () {",
"\n}).call(this); })",
];
Module.wrap = function (script) {
diff --git a/ext/node/polyfills/02_init.js b/ext/node/polyfills/02_init.js
index b8070d50f..3aef00060 100644
--- a/ext/node/polyfills/02_init.js
+++ b/ext/node/polyfills/02_init.js
@@ -34,6 +34,7 @@ function initialize(
nodeGlobals.setImmediate = nativeModuleExports["timers"].setImmediate;
nodeGlobals.setInterval = nativeModuleExports["timers"].setInterval;
nodeGlobals.setTimeout = nativeModuleExports["timers"].setTimeout;
+ nodeGlobals.performance = nativeModuleExports["perf_hooks"].performance;
// add a hidden global for the esm code to use in order to reliably
// get node's globalThis
diff --git a/ext/node/polyfills/perf_hooks.ts b/ext/node/polyfills/perf_hooks.ts
index ac74c10f8..30c50d363 100644
--- a/ext/node/polyfills/perf_hooks.ts
+++ b/ext/node/polyfills/perf_hooks.ts
@@ -22,6 +22,8 @@ const performance:
timerify: any;
// deno-lint-ignore no-explicit-any
timeOrigin: any;
+ // deno-lint-ignore no-explicit-any
+ markResourceTiming: any;
} = {
clearMarks: (markName: string) => shimPerformance.clearMarks(markName),
eventLoopUtilization: () =>
@@ -50,6 +52,7 @@ const performance:
timerify: () => notImplemented("timerify from performance"),
// deno-lint-ignore no-explicit-any
timeOrigin: (shimPerformance as any).timeOrigin,
+ markResourceTiming: () => {},
// @ts-ignore waiting on update in `deno`, but currently this is
// a circular dependency
toJSON: () => shimPerformance.toJSON(),