0
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2025-03-03 17:34:47 -05:00

simplify global properties (#7502)

This commit is contained in:
Ryan Dahl 2020-09-16 12:41:01 -04:00 committed by GitHub
parent 81ca7096c5
commit f58b10ec64
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -206,66 +206,56 @@ delete Object.prototype.__proto__;
} }
// https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope // https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope
const windowOrWorkerGlobalScopeMethods = { const windowOrWorkerGlobalScope = {
atob: util.writable(atob),
btoa: util.writable(btoa),
clearInterval: util.writable(timers.clearInterval),
clearTimeout: util.writable(timers.clearTimeout),
fetch: util.writable(fetch.fetch),
// queueMicrotask is bound in Rust
setInterval: util.writable(timers.setInterval),
setTimeout: util.writable(timers.setTimeout),
};
// Other properties shared between WindowScope and WorkerGlobalScope
const windowOrWorkerGlobalScopeProperties = {
console: util.writable(new Console(core.print)),
Blob: util.nonEnumerable(blob.Blob), Blob: util.nonEnumerable(blob.Blob),
ByteLengthQueuingStrategy: util.nonEnumerable( ByteLengthQueuingStrategy: util.nonEnumerable(
queuingStrategy.ByteLengthQueuingStrategy, queuingStrategy.ByteLengthQueuingStrategy,
), ),
CloseEvent: util.nonEnumerable(CloseEvent),
CountQueuingStrategy: util.nonEnumerable( CountQueuingStrategy: util.nonEnumerable(
queuingStrategy.CountQueuingStrategy, queuingStrategy.CountQueuingStrategy,
), ),
crypto: util.readOnly(crypto),
File: util.nonEnumerable(domFile.DomFile),
FileReader: util.nonEnumerable(fileReader.FileReader),
CustomEvent: util.nonEnumerable(CustomEvent), CustomEvent: util.nonEnumerable(CustomEvent),
DOMException: util.nonEnumerable(DOMException), DOMException: util.nonEnumerable(DOMException),
ErrorEvent: util.nonEnumerable(ErrorEvent), ErrorEvent: util.nonEnumerable(ErrorEvent),
CloseEvent: util.nonEnumerable(CloseEvent),
MessageEvent: util.nonEnumerable(MessageEvent),
Event: util.nonEnumerable(Event), Event: util.nonEnumerable(Event),
EventTarget: util.nonEnumerable(EventTarget), EventTarget: util.nonEnumerable(EventTarget),
Headers: util.nonEnumerable(headers.Headers), File: util.nonEnumerable(domFile.DomFile),
FileReader: util.nonEnumerable(fileReader.FileReader),
FormData: util.nonEnumerable(formData.FormData), FormData: util.nonEnumerable(formData.FormData),
WebSocket: util.nonEnumerable(webSocket.WebSocket), Headers: util.nonEnumerable(headers.Headers),
ReadableStream: util.nonEnumerable(streams.ReadableStream), MessageEvent: util.nonEnumerable(MessageEvent),
Request: util.nonEnumerable(request.Request),
Response: util.nonEnumerable(fetch.Response),
performance: util.writable(new performance.Performance()),
Performance: util.nonEnumerable(performance.Performance), Performance: util.nonEnumerable(performance.Performance),
PerformanceEntry: util.nonEnumerable(performance.PerformanceEntry), PerformanceEntry: util.nonEnumerable(performance.PerformanceEntry),
PerformanceMark: util.nonEnumerable(performance.PerformanceMark), PerformanceMark: util.nonEnumerable(performance.PerformanceMark),
PerformanceMeasure: util.nonEnumerable(performance.PerformanceMeasure), PerformanceMeasure: util.nonEnumerable(performance.PerformanceMeasure),
ProgressEvent: util.nonEnumerable(progressEvent.ProgressEvent), ProgressEvent: util.nonEnumerable(progressEvent.ProgressEvent),
ReadableStream: util.nonEnumerable(streams.ReadableStream),
Request: util.nonEnumerable(request.Request),
Response: util.nonEnumerable(fetch.Response),
TextDecoder: util.nonEnumerable(TextDecoder), TextDecoder: util.nonEnumerable(TextDecoder),
TextEncoder: util.nonEnumerable(TextEncoder), TextEncoder: util.nonEnumerable(TextEncoder),
TransformStream: util.nonEnumerable(streams.TransformStream), TransformStream: util.nonEnumerable(streams.TransformStream),
URL: util.nonEnumerable(url.URL), URL: util.nonEnumerable(url.URL),
URLSearchParams: util.nonEnumerable(url.URLSearchParams), URLSearchParams: util.nonEnumerable(url.URLSearchParams),
WebSocket: util.nonEnumerable(webSocket.WebSocket),
Worker: util.nonEnumerable(worker.Worker), Worker: util.nonEnumerable(worker.Worker),
WritableStream: util.nonEnumerable(streams.WritableStream), WritableStream: util.nonEnumerable(streams.WritableStream),
}; addEventListener: util.readOnly(EventTarget.prototype.addEventListener),
atob: util.writable(atob),
const eventTargetProperties = { btoa: util.writable(btoa),
addEventListener: util.readOnly( clearInterval: util.writable(timers.clearInterval),
EventTarget.prototype.addEventListener, clearTimeout: util.writable(timers.clearTimeout),
), console: util.writable(new Console(core.print)),
crypto: util.readOnly(crypto),
dispatchEvent: util.readOnly(EventTarget.prototype.dispatchEvent), dispatchEvent: util.readOnly(EventTarget.prototype.dispatchEvent),
fetch: util.writable(fetch.fetch),
performance: util.writable(new performance.Performance()),
removeEventListener: util.readOnly( removeEventListener: util.readOnly(
EventTarget.prototype.removeEventListener, EventTarget.prototype.removeEventListener,
), ),
setInterval: util.writable(timers.setInterval),
setTimeout: util.writable(timers.setTimeout),
}; };
const mainRuntimeGlobalProperties = { const mainRuntimeGlobalProperties = {
@ -300,9 +290,7 @@ delete Object.prototype.__proto__;
delete globalThis.bootstrap; delete globalThis.bootstrap;
util.log("bootstrapMainRuntime"); util.log("bootstrapMainRuntime");
hasBootstrapped = true; hasBootstrapped = true;
Object.defineProperties(globalThis, windowOrWorkerGlobalScopeMethods); Object.defineProperties(globalThis, windowOrWorkerGlobalScope);
Object.defineProperties(globalThis, windowOrWorkerGlobalScopeProperties);
Object.defineProperties(globalThis, eventTargetProperties);
Object.defineProperties(globalThis, mainRuntimeGlobalProperties); Object.defineProperties(globalThis, mainRuntimeGlobalProperties);
eventTarget.setEventTargetData(globalThis); eventTarget.setEventTargetData(globalThis);
// Registers the handler for window.onload function. // Registers the handler for window.onload function.
@ -368,10 +356,8 @@ delete Object.prototype.__proto__;
delete globalThis.bootstrap; delete globalThis.bootstrap;
util.log("bootstrapWorkerRuntime"); util.log("bootstrapWorkerRuntime");
hasBootstrapped = true; hasBootstrapped = true;
Object.defineProperties(globalThis, windowOrWorkerGlobalScopeMethods); Object.defineProperties(globalThis, windowOrWorkerGlobalScope);
Object.defineProperties(globalThis, windowOrWorkerGlobalScopeProperties);
Object.defineProperties(globalThis, workerRuntimeGlobalProperties); Object.defineProperties(globalThis, workerRuntimeGlobalProperties);
Object.defineProperties(globalThis, eventTargetProperties);
Object.defineProperties(globalThis, { name: util.readOnly(name) }); Object.defineProperties(globalThis, { name: util.readOnly(name) });
eventTarget.setEventTargetData(globalThis); eventTarget.setEventTargetData(globalThis);
const { unstableFlag, pid, noColor, args } = runtimeStart( const { unstableFlag, pid, noColor, args } = runtimeStart(