diff --git a/ext/node/lib.rs b/ext/node/lib.rs index 64a2e083ab29b6..65db6e45f473af 100644 --- a/ext/node/lib.rs +++ b/ext/node/lib.rs @@ -269,7 +269,6 @@ deno_core::extension!(deno_node, "00_globals.js", "01_require.js", "02_init.js", - "_core.ts", "_events.mjs", "_fs/_fs_access.ts", "_fs/_fs_appendFile.ts", diff --git a/ext/node/polyfills/_core.ts b/ext/node/polyfills/_core.ts deleted file mode 100644 index af619378f3b461..00000000000000 --- a/ext/node/polyfills/_core.ts +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license. - -// This module provides an interface to `Deno.core`. For environments -// that don't have access to `Deno.core` some APIs are polyfilled, while -// some are unavailble and throw on call. -// Note: deno_std shouldn't use Deno.core namespace. We should minimize these -// usages. - -import { TextEncoder } from "ext:deno_web/08_text_encoding.js"; - -// deno-lint-ignore no-explicit-any -let DenoCore: any; - -// deno-lint-ignore no-explicit-any -const { Deno } = globalThis as any; - -// @ts-ignore Deno.core is not defined in types -if (Deno?.[Deno.internal]?.core) { - // @ts-ignore Deno[Deno.internal].core is not defined in types - DenoCore = Deno[Deno.internal].core; -} else if (Deno?.core) { - // @ts-ignore Deno.core is not defined in types - DenoCore = Deno.core; -} else { - DenoCore = {}; -} - -export const core = { - runMicrotasks: DenoCore.runMicrotasks ?? function () { - throw new Error( - "Deno.core.runMicrotasks() is not supported in this environment", - ); - }, - setHasTickScheduled: DenoCore.setHasTickScheduled ?? function () { - throw new Error( - "Deno.core.setHasTickScheduled() is not supported in this environment", - ); - }, - hasTickScheduled: DenoCore.hasTickScheduled ?? function () { - throw new Error( - "Deno.core.hasTickScheduled() is not supported in this environment", - ); - }, - setNextTickCallback: DenoCore.setNextTickCallback ?? undefined, - setMacrotaskCallback: DenoCore.setMacrotaskCallback ?? function () { - throw new Error( - "Deno.core.setNextTickCallback() is not supported in this environment", - ); - }, - evalContext: DenoCore.evalContext ?? - function (_code: string, _filename: string) { - throw new Error( - "Deno.core.evalContext is not supported in this environment", - ); - }, - encode: DenoCore.encode ?? function (chunk: string): Uint8Array { - return new TextEncoder().encode(chunk); - }, - eventLoopHasMoreWork: DenoCore.eventLoopHasMoreWork ?? function (): boolean { - return false; - }, - isProxy: DenoCore.isProxy ?? function (): boolean { - return false; - }, - getPromiseDetails: DenoCore.getPromiseDetails ?? - function (_promise: Promise): [number, unknown] { - throw new Error( - "Deno.core.getPromiseDetails is not supported in this environment", - ); - }, - setPromiseHooks: DenoCore.setPromiseHooks ?? function () { - throw new Error( - "Deno.core.setPromiseHooks is not supported in this environment", - ); - }, - ops: DenoCore.ops ?? { - op_napi_open(_filename: string) { - throw new Error( - "Node API is not supported in this environment", - ); - }, - }, -}; diff --git a/ext/node/polyfills/_next_tick.ts b/ext/node/polyfills/_next_tick.ts index 45e972d6b5cc32..fe1b687421fe51 100644 --- a/ext/node/polyfills/_next_tick.ts +++ b/ext/node/polyfills/_next_tick.ts @@ -1,11 +1,12 @@ // Copyright 2018-2023 the Deno authors. All rights reserved. MIT license. // Copyright Joyent, Inc. and other Node contributors. -import { core } from "ext:deno_node/_core.ts"; import { validateFunction } from "ext:deno_node/internal/validators.mjs"; import { _exiting } from "ext:deno_node/_process/exiting.ts"; import { FixedQueue } from "ext:deno_node/internal/fixed_queue.ts"; +const { core } = globalThis.__bootstrap; + interface Tock { callback: (...args: Array) => void; args: Array; diff --git a/ext/node/polyfills/async_hooks.ts b/ext/node/polyfills/async_hooks.ts index 8111af73b24c56..d2c93900095829 100644 --- a/ext/node/polyfills/async_hooks.ts +++ b/ext/node/polyfills/async_hooks.ts @@ -5,7 +5,8 @@ // https://github.com/cloudflare/workerd/blob/77fd0ed6ddba184414f0216508fc62b06e716cab/src/workerd/api/node/async-hooks.c++#L9 import { validateFunction } from "ext:deno_node/internal/validators.mjs"; -import { core } from "ext:deno_node/_core.ts"; + +const { core } = globalThis.__bootstrap; function assert(cond: boolean) { if (!cond) throw new Error("Assertion failed"); diff --git a/ext/node/polyfills/child_process.ts b/ext/node/polyfills/child_process.ts index 5ca760ed034bb0..f731a0bf11da79 100644 --- a/ext/node/polyfills/child_process.ts +++ b/ext/node/polyfills/child_process.ts @@ -2,7 +2,6 @@ // This module implements 'child_process' module of Node.JS API. // ref: https://nodejs.org/api/child_process.html -import { core } from "ext:deno_node/_core.ts"; import { ChildProcess, ChildProcessOptions, @@ -44,6 +43,8 @@ import { kEmptyObject, } from "ext:deno_node/internal/util.mjs"; +const { core } = globalThis.__bootstrap; + const MAX_BUFFER = 1024 * 1024; type ForkOptions = ChildProcessOptions; diff --git a/ext/node/polyfills/internal_binding/types.ts b/ext/node/polyfills/internal_binding/types.ts index 943f5e31dc67ba..d03c342ad97932 100644 --- a/ext/node/polyfills/internal_binding/types.ts +++ b/ext/node/polyfills/internal_binding/types.ts @@ -21,7 +21,7 @@ // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE // USE OR OTHER DEALINGS IN THE SOFTWARE. -import { core } from "ext:deno_node/_core.ts"; +const { core } = globalThis.__bootstrap; // https://tc39.es/ecma262/#sec-object.prototype.tostring const _toString = Object.prototype.toString; diff --git a/ext/node/polyfills/process.ts b/ext/node/polyfills/process.ts index eb5a491ae081ab..5e45fecfda87ca 100644 --- a/ext/node/polyfills/process.ts +++ b/ext/node/polyfills/process.ts @@ -2,7 +2,7 @@ // Copyright Joyent, Inc. and Node.js contributors. All rights reserved. MIT license. const internals = globalThis.__bootstrap.internals; -import { core } from "ext:deno_node/_core.ts"; +const { core } = globalThis.__bootstrap; import { notImplemented, warnNotImplemented } from "ext:deno_node/_utils.ts"; import { EventEmitter } from "ext:deno_node/events.ts"; import { validateString } from "ext:deno_node/internal/validators.mjs";