diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2023-05-16 05:16:24 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-16 05:16:24 +0200 |
commit | 78fbc3f3f695610083d07a55ef2a116e0bf04a10 (patch) | |
tree | 8c09614e023aa9f46a16b591dced4446f484b9eb | |
parent | ab9a17eeee01a3b04fac2bf583c812179f410c91 (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.rs | 3 | ||||
-rw-r--r-- | ext/node/polyfills/01_require.js | 2 | ||||
-rw-r--r-- | ext/node/polyfills/02_init.js | 1 | ||||
-rw-r--r-- | ext/node/polyfills/perf_hooks.ts | 3 |
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(), |