mirror of
https://github.com/denoland/deno.git
synced 2024-11-23 15:16:54 -05:00
de34c7ed29
This PR adds a new `--unstable-node-globals` flag to expose Node globals by default. Fixes https://github.com/denoland/deno/issues/26611 --------- Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
316 lines
12 KiB
JavaScript
316 lines
12 KiB
JavaScript
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
|
|
|
import { core } from "ext:core/mod.js";
|
|
|
|
import * as event from "ext:deno_web/02_event.js";
|
|
import * as timers from "ext:deno_web/02_timers.js";
|
|
import * as base64 from "ext:deno_web/05_base64.js";
|
|
import * as encoding from "ext:deno_web/08_text_encoding.js";
|
|
import * as console from "ext:deno_console/01_console.js";
|
|
import * as caches from "ext:deno_cache/01_cache.js";
|
|
import * as compression from "ext:deno_web/14_compression.js";
|
|
import * as worker from "ext:runtime/11_workers.js";
|
|
import * as performance from "ext:deno_web/15_performance.js";
|
|
import * as crypto from "ext:deno_crypto/00_crypto.js";
|
|
import * as url from "ext:deno_url/00_url.js";
|
|
import * as urlPattern from "ext:deno_url/01_urlpattern.js";
|
|
import * as headers from "ext:deno_fetch/20_headers.js";
|
|
import * as streams from "ext:deno_web/06_streams.js";
|
|
import * as fileReader from "ext:deno_web/10_filereader.js";
|
|
import * as webSocket from "ext:deno_websocket/01_websocket.js";
|
|
import * as webSocketStream from "ext:deno_websocket/02_websocketstream.js";
|
|
import * as broadcastChannel from "ext:deno_broadcast_channel/01_broadcast_channel.js";
|
|
import * as file from "ext:deno_web/09_file.js";
|
|
import * as formData from "ext:deno_fetch/21_formdata.js";
|
|
import * as request from "ext:deno_fetch/23_request.js";
|
|
import * as response from "ext:deno_fetch/23_response.js";
|
|
import * as fetch from "ext:deno_fetch/26_fetch.js";
|
|
import * as eventSource from "ext:deno_fetch/27_eventsource.js";
|
|
import * as messagePort from "ext:deno_web/13_message_port.js";
|
|
import * as webidl from "ext:deno_webidl/00_webidl.js";
|
|
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";
|
|
|
|
const loadImage = core.createLazyLoader("ext:deno_canvas/01_image.js");
|
|
|
|
// https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope
|
|
const windowOrWorkerGlobalScope = {
|
|
AbortController: core.propNonEnumerable(abortSignal.AbortController),
|
|
AbortSignal: core.propNonEnumerable(abortSignal.AbortSignal),
|
|
Blob: core.propNonEnumerable(file.Blob),
|
|
ByteLengthQueuingStrategy: core.propNonEnumerable(
|
|
streams.ByteLengthQueuingStrategy,
|
|
),
|
|
CloseEvent: core.propNonEnumerable(event.CloseEvent),
|
|
CompressionStream: core.propNonEnumerable(compression.CompressionStream),
|
|
CountQueuingStrategy: core.propNonEnumerable(
|
|
streams.CountQueuingStrategy,
|
|
),
|
|
CryptoKey: core.propNonEnumerable(crypto.CryptoKey),
|
|
CustomEvent: core.propNonEnumerable(event.CustomEvent),
|
|
DecompressionStream: core.propNonEnumerable(compression.DecompressionStream),
|
|
DOMException: core.propNonEnumerable(DOMException),
|
|
ErrorEvent: core.propNonEnumerable(event.ErrorEvent),
|
|
Event: core.propNonEnumerable(event.Event),
|
|
EventTarget: core.propNonEnumerable(event.EventTarget),
|
|
File: core.propNonEnumerable(file.File),
|
|
FileReader: core.propNonEnumerable(fileReader.FileReader),
|
|
FormData: core.propNonEnumerable(formData.FormData),
|
|
Headers: core.propNonEnumerable(headers.Headers),
|
|
ImageData: core.propNonEnumerable(imageData.ImageData),
|
|
ImageBitmap: core.propNonEnumerableLazyLoaded(
|
|
(image) => image.ImageBitmap,
|
|
loadImage,
|
|
),
|
|
MessageEvent: core.propNonEnumerable(event.MessageEvent),
|
|
Performance: core.propNonEnumerable(performance.Performance),
|
|
PerformanceEntry: core.propNonEnumerable(performance.PerformanceEntry),
|
|
PerformanceMark: core.propNonEnumerable(performance.PerformanceMark),
|
|
PerformanceMeasure: core.propNonEnumerable(performance.PerformanceMeasure),
|
|
PromiseRejectionEvent: core.propNonEnumerable(event.PromiseRejectionEvent),
|
|
ProgressEvent: core.propNonEnumerable(event.ProgressEvent),
|
|
ReadableStream: core.propNonEnumerable(streams.ReadableStream),
|
|
ReadableStreamDefaultReader: core.propNonEnumerable(
|
|
streams.ReadableStreamDefaultReader,
|
|
),
|
|
Request: core.propNonEnumerable(request.Request),
|
|
Response: core.propNonEnumerable(response.Response),
|
|
TextDecoder: core.propNonEnumerable(encoding.TextDecoder),
|
|
TextEncoder: core.propNonEnumerable(encoding.TextEncoder),
|
|
TextDecoderStream: core.propNonEnumerable(encoding.TextDecoderStream),
|
|
TextEncoderStream: core.propNonEnumerable(encoding.TextEncoderStream),
|
|
TransformStream: core.propNonEnumerable(streams.TransformStream),
|
|
URL: core.propNonEnumerable(url.URL),
|
|
URLPattern: core.propNonEnumerable(urlPattern.URLPattern),
|
|
URLSearchParams: core.propNonEnumerable(url.URLSearchParams),
|
|
WebSocket: core.propNonEnumerable(webSocket.WebSocket),
|
|
MessageChannel: core.propNonEnumerable(messagePort.MessageChannel),
|
|
MessagePort: core.propNonEnumerable(messagePort.MessagePort),
|
|
Worker: core.propNonEnumerable(worker.Worker),
|
|
WritableStream: core.propNonEnumerable(streams.WritableStream),
|
|
WritableStreamDefaultWriter: core.propNonEnumerable(
|
|
streams.WritableStreamDefaultWriter,
|
|
),
|
|
WritableStreamDefaultController: core.propNonEnumerable(
|
|
streams.WritableStreamDefaultController,
|
|
),
|
|
ReadableByteStreamController: core.propNonEnumerable(
|
|
streams.ReadableByteStreamController,
|
|
),
|
|
ReadableStreamBYOBReader: core.propNonEnumerable(
|
|
streams.ReadableStreamBYOBReader,
|
|
),
|
|
ReadableStreamBYOBRequest: core.propNonEnumerable(
|
|
streams.ReadableStreamBYOBRequest,
|
|
),
|
|
ReadableStreamDefaultController: core.propNonEnumerable(
|
|
streams.ReadableStreamDefaultController,
|
|
),
|
|
TransformStreamDefaultController: core.propNonEnumerable(
|
|
streams.TransformStreamDefaultController,
|
|
),
|
|
atob: core.propWritable(base64.atob),
|
|
btoa: core.propWritable(base64.btoa),
|
|
createImageBitmap: core.propWritableLazyLoaded(
|
|
(image) => image.createImageBitmap,
|
|
loadImage,
|
|
),
|
|
clearInterval: core.propWritable(timers.clearInterval),
|
|
clearTimeout: core.propWritable(timers.clearTimeout),
|
|
caches: {
|
|
enumerable: true,
|
|
configurable: true,
|
|
get: caches.cacheStorage,
|
|
},
|
|
CacheStorage: core.propNonEnumerable(caches.CacheStorage),
|
|
Cache: core.propNonEnumerable(caches.Cache),
|
|
console: core.propNonEnumerable(
|
|
new console.Console((msg, level) => core.print(msg, level > 1)),
|
|
),
|
|
crypto: core.propReadOnly(crypto.crypto),
|
|
Crypto: core.propNonEnumerable(crypto.Crypto),
|
|
SubtleCrypto: core.propNonEnumerable(crypto.SubtleCrypto),
|
|
fetch: core.propWritable(fetch.fetch),
|
|
EventSource: core.propWritable(eventSource.EventSource),
|
|
performance: core.propWritable(performance.performance),
|
|
process: core.propWritable(process),
|
|
reportError: core.propWritable(event.reportError),
|
|
setInterval: core.propWritable(timers.setInterval),
|
|
setTimeout: core.propWritable(timers.setTimeout),
|
|
structuredClone: core.propWritable(messagePort.structuredClone),
|
|
// Branding as a WebIDL object
|
|
[webidl.brand]: core.propNonEnumerable(webidl.brand),
|
|
GPU: core.propNonEnumerableLazyLoaded((webgpu) => webgpu.GPU, loadWebGPU),
|
|
GPUAdapter: core.propNonEnumerableLazyLoaded(
|
|
(webgpu) => webgpu.GPUAdapter,
|
|
loadWebGPU,
|
|
),
|
|
GPUAdapterInfo: core.propNonEnumerableLazyLoaded(
|
|
(webgpu) => webgpu.GPUAdapterInfo,
|
|
loadWebGPU,
|
|
),
|
|
GPUBuffer: core.propNonEnumerableLazyLoaded(
|
|
(webgpu) => webgpu.GPUBuffer,
|
|
loadWebGPU,
|
|
),
|
|
GPUBufferUsage: core.propNonEnumerableLazyLoaded(
|
|
(webgpu) => webgpu.GPUBufferUsage,
|
|
loadWebGPU,
|
|
),
|
|
GPUCanvasContext: core.propNonEnumerable(webgpuSurface.GPUCanvasContext),
|
|
GPUColorWrite: core.propNonEnumerableLazyLoaded(
|
|
(webgpu) => webgpu.GPUColorWrite,
|
|
loadWebGPU,
|
|
),
|
|
GPUCommandBuffer: core.propNonEnumerableLazyLoaded(
|
|
(webgpu) => webgpu.GPUCommandBuffer,
|
|
loadWebGPU,
|
|
),
|
|
GPUCommandEncoder: core.propNonEnumerableLazyLoaded(
|
|
(webgpu) => webgpu.GPUCommandEncoder,
|
|
loadWebGPU,
|
|
),
|
|
GPUComputePassEncoder: core.propNonEnumerableLazyLoaded(
|
|
(webgpu) => webgpu.GPUComputePassEncoder,
|
|
loadWebGPU,
|
|
),
|
|
GPUComputePipeline: core.propNonEnumerableLazyLoaded(
|
|
(webgpu) => webgpu.GPUComputePipeline,
|
|
loadWebGPU,
|
|
),
|
|
GPUDevice: core.propNonEnumerableLazyLoaded(
|
|
(webgpu) => webgpu.GPUDevice,
|
|
loadWebGPU,
|
|
),
|
|
GPUDeviceLostInfo: core.propNonEnumerableLazyLoaded(
|
|
(webgpu) => webgpu.GPUDeviceLostInfo,
|
|
loadWebGPU,
|
|
),
|
|
GPUError: core.propNonEnumerableLazyLoaded(
|
|
(webgpu) => webgpu.GPUError,
|
|
loadWebGPU,
|
|
),
|
|
GPUBindGroup: core.propNonEnumerableLazyLoaded(
|
|
(webgpu) => webgpu.GPUBindGroup,
|
|
loadWebGPU,
|
|
),
|
|
GPUBindGroupLayout: core.propNonEnumerableLazyLoaded(
|
|
(webgpu) => webgpu.GPUBindGroupLayout,
|
|
loadWebGPU,
|
|
),
|
|
GPUInternalError: core.propNonEnumerableLazyLoaded(
|
|
(webgpu) => webgpu.GPUInternalError,
|
|
loadWebGPU,
|
|
),
|
|
GPUPipelineError: core.propNonEnumerableLazyLoaded(
|
|
(webgpu) => webgpu.GPUPipelineError,
|
|
loadWebGPU,
|
|
),
|
|
GPUUncapturedErrorEvent: core.propNonEnumerableLazyLoaded(
|
|
(webgpu) => webgpu.GPUUncapturedErrorEvent,
|
|
loadWebGPU,
|
|
),
|
|
GPUPipelineLayout: core.propNonEnumerableLazyLoaded(
|
|
(webgpu) => webgpu.GPUPipelineLayout,
|
|
loadWebGPU,
|
|
),
|
|
GPUQueue: core.propNonEnumerableLazyLoaded(
|
|
(webgpu) => webgpu.GPUQueue,
|
|
loadWebGPU,
|
|
),
|
|
GPUQuerySet: core.propNonEnumerableLazyLoaded(
|
|
(webgpu) => webgpu.GPUQuerySet,
|
|
loadWebGPU,
|
|
),
|
|
GPUMapMode: core.propNonEnumerableLazyLoaded(
|
|
(webgpu) => webgpu.GPUMapMode,
|
|
loadWebGPU,
|
|
),
|
|
GPUOutOfMemoryError: core.propNonEnumerableLazyLoaded(
|
|
(webgpu) => webgpu.GPUOutOfMemoryError,
|
|
loadWebGPU,
|
|
),
|
|
GPURenderBundle: core.propNonEnumerableLazyLoaded(
|
|
(webgpu) => webgpu.GPURenderBundle,
|
|
loadWebGPU,
|
|
),
|
|
GPURenderBundleEncoder: core.propNonEnumerableLazyLoaded(
|
|
(webgpu) => webgpu.GPURenderBundleEncoder,
|
|
loadWebGPU,
|
|
),
|
|
GPURenderPassEncoder: core.propNonEnumerableLazyLoaded(
|
|
(webgpu) => webgpu.GPURenderPassEncoder,
|
|
loadWebGPU,
|
|
),
|
|
GPURenderPipeline: core.propNonEnumerableLazyLoaded(
|
|
(webgpu) => webgpu.GPURenderPipeline,
|
|
loadWebGPU,
|
|
),
|
|
GPUSampler: core.propNonEnumerableLazyLoaded(
|
|
(webgpu) => webgpu.GPUSampler,
|
|
loadWebGPU,
|
|
),
|
|
GPUShaderModule: core.propNonEnumerableLazyLoaded(
|
|
(webgpu) => webgpu.GPUShaderModule,
|
|
loadWebGPU,
|
|
),
|
|
GPUShaderStage: core.propNonEnumerableLazyLoaded(
|
|
(webgpu) => webgpu.GPUShaderStage,
|
|
loadWebGPU,
|
|
),
|
|
GPUSupportedFeatures: core.propNonEnumerableLazyLoaded(
|
|
(webgpu) => webgpu.GPUSupportedFeatures,
|
|
loadWebGPU,
|
|
),
|
|
GPUSupportedLimits: core.propNonEnumerableLazyLoaded(
|
|
(webgpu) => webgpu.GPUSupportedLimits,
|
|
loadWebGPU,
|
|
),
|
|
GPUTexture: core.propNonEnumerableLazyLoaded(
|
|
(webgpu) => webgpu.GPUTexture,
|
|
loadWebGPU,
|
|
),
|
|
GPUTextureView: core.propNonEnumerableLazyLoaded(
|
|
(webgpu) => webgpu.GPUTextureView,
|
|
loadWebGPU,
|
|
),
|
|
GPUTextureUsage: core.propNonEnumerableLazyLoaded(
|
|
(webgpu) => webgpu.GPUTextureUsage,
|
|
loadWebGPU,
|
|
),
|
|
GPUValidationError: core.propNonEnumerableLazyLoaded(
|
|
(webgpu) => webgpu.GPUValidationError,
|
|
loadWebGPU,
|
|
),
|
|
};
|
|
|
|
const unstableForWindowOrWorkerGlobalScope = { __proto__: null };
|
|
unstableForWindowOrWorkerGlobalScope[unstableIds.broadcastChannel] = {
|
|
BroadcastChannel: core.propNonEnumerable(broadcastChannel.BroadcastChannel),
|
|
};
|
|
unstableForWindowOrWorkerGlobalScope[unstableIds.net] = {
|
|
WebSocketStream: core.propNonEnumerable(webSocketStream.WebSocketStream),
|
|
WebSocketError: core.propNonEnumerable(webSocketStream.WebSocketError),
|
|
};
|
|
|
|
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 };
|