diff options
Diffstat (limited to 'runtime')
-rw-r--r-- | runtime/fmt_errors.rs | 20 | ||||
-rw-r--r-- | runtime/js/90_deno_ns.js | 13 | ||||
-rw-r--r-- | runtime/js/98_global_scope_shared.js | 13 | ||||
-rw-r--r-- | runtime/lib.rs | 18 |
4 files changed, 48 insertions, 16 deletions
diff --git a/runtime/fmt_errors.rs b/runtime/fmt_errors.rs index 28cd70296..6c05fbc63 100644 --- a/runtime/fmt_errors.rs +++ b/runtime/fmt_errors.rs @@ -339,28 +339,40 @@ fn get_suggestions_for_terminal_errors(e: &JsError) -> Vec<FixSuggestion> { FixSuggestion::info(cstr!( "<u>Buffer</> is not available in the global scope in Deno." )), - FixSuggestion::hint(cstr!("Import it explicitly with <u>import { Buffer } from \"node:buffer\";</>.")), + FixSuggestion::hint_multiline(&[ + cstr!("Import it explicitly with <u>import { Buffer } from \"node:buffer\";</>,"), + cstr!("or run again with <u>--unstable-node-globals</> flag to add this global."), + ]), ]; } else if msg.contains("clearImmediate is not defined") { return vec![ FixSuggestion::info(cstr!( "<u>clearImmediate</> is not available in the global scope in Deno." )), - FixSuggestion::hint(cstr!("Import it explicitly with <u>import { clearImmediate } from \"node:timers\";</>.")), + FixSuggestion::hint_multiline(&[ + cstr!("Import it explicitly with <u>import { clearImmediate } from \"node:timers\";</>,"), + cstr!("or run again with <u>--unstable-node-globals</> flag to add this global."), + ]), ]; } else if msg.contains("setImmediate is not defined") { return vec![ FixSuggestion::info(cstr!( "<u>setImmediate</> is not available in the global scope in Deno." )), - FixSuggestion::hint(cstr!("Import it explicitly with <u>import { setImmediate } from \"node:timers\";</>.")), + FixSuggestion::hint_multiline( + &[cstr!("Import it explicitly with <u>import { setImmediate } from \"node:timers\";</>,"), + cstr!("or run again with <u>--unstable-node-globals</> flag to add this global."), + ]), ]; } else if msg.contains("global is not defined") { return vec![ FixSuggestion::info(cstr!( "<u>global</> is not available in the global scope in Deno." )), - FixSuggestion::hint(cstr!("Use <u>globalThis</> instead, or assign <u>globalThis.global = globalThis</>.")), + FixSuggestion::hint_multiline(&[ + cstr!("Use <u>globalThis</> instead, or assign <u>globalThis.global = globalThis</>,"), + cstr!("or run again with <u>--unstable-node-globals</> flag to add this global."), + ]), ]; } else if msg.contains("openKv is not a function") { return vec![ diff --git a/runtime/js/90_deno_ns.js b/runtime/js/90_deno_ns.js index 11f618ce2..079338510 100644 --- a/runtime/js/90_deno_ns.js +++ b/runtime/js/90_deno_ns.js @@ -144,12 +144,13 @@ const unstableIds = { http: 5, kv: 6, net: 7, - otel: 8, - process: 9, - temporal: 10, - unsafeProto: 11, - webgpu: 12, - workerOptions: 13, + nodeGlobals: 8, + otel: 9, + process: 10, + temporal: 11, + unsafeProto: 12, + webgpu: 13, + workerOptions: 14, }; const denoNsUnstableById = { __proto__: null }; diff --git a/runtime/js/98_global_scope_shared.js b/runtime/js/98_global_scope_shared.js index 7a2723899..f8e76b7ce 100644 --- a/runtime/js/98_global_scope_shared.js +++ b/runtime/js/98_global_scope_shared.js @@ -32,6 +32,8 @@ import { DOMException } from "ext:deno_web/01_dom_exception.js"; import * as abortSignal from "ext:deno_web/03_abort_signal.js"; import * as imageData from "ext:deno_web/16_image_data.js"; import process from "node:process"; +import Buffer from "node:buffer"; +import { clearImmediate, setImmediate } from "node:timers"; import { loadWebGPU } from "ext:deno_webgpu/00_init.js"; import * as webgpuSurface from "ext:deno_webgpu/02_surface.js"; import { unstableIds } from "ext:runtime/90_deno_ns.js"; @@ -300,4 +302,15 @@ unstableForWindowOrWorkerGlobalScope[unstableIds.net] = { unstableForWindowOrWorkerGlobalScope[unstableIds.webgpu] = {}; +unstableForWindowOrWorkerGlobalScope[unstableIds.nodeGlobals] = { + Buffer: core.propWritable(Buffer), + setImmediate: core.propWritable(setImmediate), + clearImmediate: core.propWritable(clearImmediate), + global: { + enumerable: true, + configurable: true, + get: () => globalThis, + }, +}; + export { unstableForWindowOrWorkerGlobalScope, windowOrWorkerGlobalScope }; diff --git a/runtime/lib.rs b/runtime/lib.rs index 6fb8c5f3d..8a228c5b5 100644 --- a/runtime/lib.rs +++ b/runtime/lib.rs @@ -100,23 +100,29 @@ pub static UNSTABLE_GRANULAR_FLAGS: &[UnstableGranularFlag] = &[ id: 7, }, UnstableGranularFlag { + name: "node-globals", + help_text: "Expose Node globals everywhere", + show_in_help: true, + id: 8, + }, + UnstableGranularFlag { name: "otel", help_text: "Enable unstable OpenTelemetry features", show_in_help: false, - id: 8, + id: 9, }, // TODO(bartlomieju): consider removing it UnstableGranularFlag { name: ops::process::UNSTABLE_FEATURE_NAME, help_text: "Enable unstable process APIs", show_in_help: false, - id: 9, + id: 10, }, UnstableGranularFlag { name: "temporal", help_text: "Enable unstable Temporal API", show_in_help: true, - id: 10, + id: 11, }, UnstableGranularFlag { name: "unsafe-proto", @@ -124,19 +130,19 @@ pub static UNSTABLE_GRANULAR_FLAGS: &[UnstableGranularFlag] = &[ show_in_help: true, // This number is used directly in the JS code. Search // for "unstableIds" to see where it's used. - id: 11, + id: 12, }, UnstableGranularFlag { name: deno_webgpu::UNSTABLE_FEATURE_NAME, help_text: "Enable unstable `WebGPU` APIs", show_in_help: true, - id: 12, + id: 13, }, UnstableGranularFlag { name: ops::worker_host::UNSTABLE_FEATURE_NAME, help_text: "Enable unstable Web Worker APIs", show_in_help: true, - id: 13, + id: 14, }, ]; |