diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2024-01-06 14:40:26 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-06 14:40:26 +0100 |
commit | d1706c2ac99eb82a937dff1c6a4c861aa24b1210 (patch) | |
tree | bdb517ef7770af12de1cf9be081be560b4ec0870 /runtime/js | |
parent | bfd5f1598cc462b460791fdfca9bb6c2c69fec9b (diff) |
refactor: split runtime/98_global_scope.js (#21785)
Diffstat (limited to 'runtime/js')
-rw-r--r-- | runtime/js/98_global_scope_shared.js (renamed from runtime/js/98_global_scope.js) | 205 | ||||
-rw-r--r-- | runtime/js/98_global_scope_window.js | 119 | ||||
-rw-r--r-- | runtime/js/98_global_scope_worker.js | 112 | ||||
-rw-r--r-- | runtime/js/99_main.js | 10 |
4 files changed, 241 insertions, 205 deletions
diff --git a/runtime/js/98_global_scope.js b/runtime/js/98_global_scope_shared.js index de8319528..04a6e4bd3 100644 --- a/runtime/js/98_global_scope.js +++ b/runtime/js/98_global_scope_shared.js @@ -1,15 +1,8 @@ // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. -import { core, primordials } from "ext:core/mod.js"; -const ops = core.ops; -const { - ObjectDefineProperties, - ObjectPrototypeIsPrototypeOf, - SymbolFor, -} = primordials; +import { core } from "ext:core/mod.js"; import * as util from "ext:runtime/06_util.js"; -import * as location from "ext:deno_web/12_location.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"; @@ -38,15 +31,8 @@ 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 globalInterfaces from "ext:deno_web/04_global_interfaces.js"; -import * as webStorage from "ext:deno_webstorage/01_webstorage.js"; -import * as prompt from "ext:runtime/41_prompt.js"; import * as imageData from "ext:deno_web/16_image_data.js"; -import { - loadWebGPU, - webgpu, - webGPUNonEnumerable, -} from "ext:deno_webgpu/00_init.js"; +import { webgpu, webGPUNonEnumerable } 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"; @@ -198,189 +184,4 @@ unstableForWindowOrWorkerGlobalScope[unstableIds.webgpu] = { GPUCanvasContext: webGPUNonEnumerable(() => webgpuSurface.GPUCanvasContext), }; -class Navigator { - constructor() { - webidl.illegalConstructor(); - } - - [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - console.createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(NavigatorPrototype, this), - keys: [ - "hardwareConcurrency", - "userAgent", - "language", - "languages", - ], - }), - inspectOptions, - ); - } -} - -const navigator = webidl.createBranded(Navigator); - -function memoizeLazy(f) { - let v_ = null; - return () => { - if (v_ === null) { - v_ = f(); - } - return v_; - }; -} - -const numCpus = memoizeLazy(() => ops.op_bootstrap_numcpus()); -const userAgent = memoizeLazy(() => ops.op_bootstrap_user_agent()); -const language = memoizeLazy(() => ops.op_bootstrap_language()); - -ObjectDefineProperties(Navigator.prototype, { - gpu: { - configurable: true, - enumerable: true, - get() { - webidl.assertBranded(this, NavigatorPrototype); - loadWebGPU(); - return webgpu.gpu; - }, - }, - hardwareConcurrency: { - configurable: true, - enumerable: true, - get() { - webidl.assertBranded(this, NavigatorPrototype); - return numCpus(); - }, - }, - userAgent: { - configurable: true, - enumerable: true, - get() { - webidl.assertBranded(this, NavigatorPrototype); - return userAgent(); - }, - }, - language: { - configurable: true, - enumerable: true, - get() { - webidl.assertBranded(this, NavigatorPrototype); - return language(); - }, - }, - languages: { - configurable: true, - enumerable: true, - get() { - webidl.assertBranded(this, NavigatorPrototype); - return [language()]; - }, - }, -}); -const NavigatorPrototype = Navigator.prototype; - -class WorkerNavigator { - constructor() { - webidl.illegalConstructor(); - } - - [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - console.createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(WorkerNavigatorPrototype, this), - keys: [ - "hardwareConcurrency", - "userAgent", - "language", - "languages", - ], - }), - inspectOptions, - ); - } -} - -const workerNavigator = webidl.createBranded(WorkerNavigator); - -ObjectDefineProperties(WorkerNavigator.prototype, { - gpu: { - configurable: true, - enumerable: true, - get() { - webidl.assertBranded(this, WorkerNavigatorPrototype); - loadWebGPU(); - return webgpu.gpu; - }, - }, - hardwareConcurrency: { - configurable: true, - enumerable: true, - get() { - webidl.assertBranded(this, WorkerNavigatorPrototype); - return numCpus(); - }, - }, - userAgent: { - configurable: true, - enumerable: true, - get() { - webidl.assertBranded(this, WorkerNavigatorPrototype); - return userAgent(); - }, - }, - language: { - configurable: true, - enumerable: true, - get() { - webidl.assertBranded(this, WorkerNavigatorPrototype); - return language(); - }, - }, - languages: { - configurable: true, - enumerable: true, - get() { - webidl.assertBranded(this, WorkerNavigatorPrototype); - return [language()]; - }, - }, -}); -const WorkerNavigatorPrototype = WorkerNavigator.prototype; - -const mainRuntimeGlobalProperties = { - Location: location.locationConstructorDescriptor, - location: location.locationDescriptor, - Window: globalInterfaces.windowConstructorDescriptor, - window: util.getterOnly(() => globalThis), - self: util.getterOnly(() => globalThis), - Navigator: util.nonEnumerable(Navigator), - navigator: util.getterOnly(() => navigator), - alert: util.writable(prompt.alert), - confirm: util.writable(prompt.confirm), - prompt: util.writable(prompt.prompt), - localStorage: util.getterOnly(webStorage.localStorage), - sessionStorage: util.getterOnly(webStorage.sessionStorage), - Storage: util.nonEnumerable(webStorage.Storage), -}; - -const workerRuntimeGlobalProperties = { - WorkerLocation: location.workerLocationConstructorDescriptor, - location: location.workerLocationDescriptor, - WorkerGlobalScope: globalInterfaces.workerGlobalScopeConstructorDescriptor, - DedicatedWorkerGlobalScope: - globalInterfaces.dedicatedWorkerGlobalScopeConstructorDescriptor, - WorkerNavigator: util.nonEnumerable(WorkerNavigator), - navigator: util.getterOnly(() => workerNavigator), - self: util.getterOnly(() => globalThis), -}; - -export { - mainRuntimeGlobalProperties, - memoizeLazy, - unstableForWindowOrWorkerGlobalScope, - windowOrWorkerGlobalScope, - workerRuntimeGlobalProperties, -}; +export { unstableForWindowOrWorkerGlobalScope, windowOrWorkerGlobalScope }; diff --git a/runtime/js/98_global_scope_window.js b/runtime/js/98_global_scope_window.js new file mode 100644 index 000000000..42cefdfb0 --- /dev/null +++ b/runtime/js/98_global_scope_window.js @@ -0,0 +1,119 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. + +import { core, primordials } from "ext:core/mod.js"; +const ops = core.ops; +const { + ObjectDefineProperties, + ObjectPrototypeIsPrototypeOf, + SymbolFor, +} = primordials; + +import * as util from "ext:runtime/06_util.js"; +import * as location from "ext:deno_web/12_location.js"; +import * as console from "ext:deno_console/01_console.js"; +import * as webidl from "ext:deno_webidl/00_webidl.js"; +import * as globalInterfaces from "ext:deno_web/04_global_interfaces.js"; +import * as webStorage from "ext:deno_webstorage/01_webstorage.js"; +import * as prompt from "ext:runtime/41_prompt.js"; +import { loadWebGPU, webgpu } from "ext:deno_webgpu/00_init.js"; + +class Navigator { + constructor() { + webidl.illegalConstructor(); + } + + [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { + return inspect( + console.createFilteredInspectProxy({ + object: this, + evaluate: ObjectPrototypeIsPrototypeOf(NavigatorPrototype, this), + keys: [ + "hardwareConcurrency", + "userAgent", + "language", + "languages", + ], + }), + inspectOptions, + ); + } +} + +const navigator = webidl.createBranded(Navigator); + +function memoizeLazy(f) { + let v_ = null; + return () => { + if (v_ === null) { + v_ = f(); + } + return v_; + }; +} + +const numCpus = memoizeLazy(() => ops.op_bootstrap_numcpus()); +const userAgent = memoizeLazy(() => ops.op_bootstrap_user_agent()); +const language = memoizeLazy(() => ops.op_bootstrap_language()); + +ObjectDefineProperties(Navigator.prototype, { + gpu: { + configurable: true, + enumerable: true, + get() { + webidl.assertBranded(this, NavigatorPrototype); + loadWebGPU(); + return webgpu.gpu; + }, + }, + hardwareConcurrency: { + configurable: true, + enumerable: true, + get() { + webidl.assertBranded(this, NavigatorPrototype); + return numCpus(); + }, + }, + userAgent: { + configurable: true, + enumerable: true, + get() { + webidl.assertBranded(this, NavigatorPrototype); + return userAgent(); + }, + }, + language: { + configurable: true, + enumerable: true, + get() { + webidl.assertBranded(this, NavigatorPrototype); + return language(); + }, + }, + languages: { + configurable: true, + enumerable: true, + get() { + webidl.assertBranded(this, NavigatorPrototype); + return [language()]; + }, + }, +}); +const NavigatorPrototype = Navigator.prototype; + +const mainRuntimeGlobalProperties = { + Location: location.locationConstructorDescriptor, + location: location.locationDescriptor, + Window: globalInterfaces.windowConstructorDescriptor, + window: util.getterOnly(() => globalThis), + self: util.getterOnly(() => globalThis), + Navigator: util.nonEnumerable(Navigator), + navigator: util.getterOnly(() => navigator), + alert: util.writable(prompt.alert), + confirm: util.writable(prompt.confirm), + prompt: util.writable(prompt.prompt), + localStorage: util.getterOnly(webStorage.localStorage), + sessionStorage: util.getterOnly(webStorage.sessionStorage), + Storage: util.nonEnumerable(webStorage.Storage), +}; + +export { mainRuntimeGlobalProperties, memoizeLazy }; diff --git a/runtime/js/98_global_scope_worker.js b/runtime/js/98_global_scope_worker.js new file mode 100644 index 000000000..6b0ad480c --- /dev/null +++ b/runtime/js/98_global_scope_worker.js @@ -0,0 +1,112 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. + +import { core, primordials } from "ext:core/mod.js"; +const ops = core.ops; +const { + ObjectDefineProperties, + ObjectPrototypeIsPrototypeOf, + SymbolFor, +} = primordials; + +import * as util from "ext:runtime/06_util.js"; +import * as location from "ext:deno_web/12_location.js"; +import * as console from "ext:deno_console/01_console.js"; +import * as webidl from "ext:deno_webidl/00_webidl.js"; +import * as globalInterfaces from "ext:deno_web/04_global_interfaces.js"; +import { loadWebGPU, webgpu } from "ext:deno_webgpu/00_init.js"; + +function memoizeLazy(f) { + let v_ = null; + return () => { + if (v_ === null) { + v_ = f(); + } + return v_; + }; +} + +const numCpus = memoizeLazy(() => ops.op_bootstrap_numcpus()); +const userAgent = memoizeLazy(() => ops.op_bootstrap_user_agent()); +const language = memoizeLazy(() => ops.op_bootstrap_language()); + +class WorkerNavigator { + constructor() { + webidl.illegalConstructor(); + } + + [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { + return inspect( + console.createFilteredInspectProxy({ + object: this, + evaluate: ObjectPrototypeIsPrototypeOf(WorkerNavigatorPrototype, this), + keys: [ + "hardwareConcurrency", + "userAgent", + "language", + "languages", + ], + }), + inspectOptions, + ); + } +} + +const workerNavigator = webidl.createBranded(WorkerNavigator); + +ObjectDefineProperties(WorkerNavigator.prototype, { + gpu: { + configurable: true, + enumerable: true, + get() { + webidl.assertBranded(this, WorkerNavigatorPrototype); + loadWebGPU(); + return webgpu.gpu; + }, + }, + hardwareConcurrency: { + configurable: true, + enumerable: true, + get() { + webidl.assertBranded(this, WorkerNavigatorPrototype); + return numCpus(); + }, + }, + userAgent: { + configurable: true, + enumerable: true, + get() { + webidl.assertBranded(this, WorkerNavigatorPrototype); + return userAgent(); + }, + }, + language: { + configurable: true, + enumerable: true, + get() { + webidl.assertBranded(this, WorkerNavigatorPrototype); + return language(); + }, + }, + languages: { + configurable: true, + enumerable: true, + get() { + webidl.assertBranded(this, WorkerNavigatorPrototype); + return [language()]; + }, + }, +}); +const WorkerNavigatorPrototype = WorkerNavigator.prototype; + +const workerRuntimeGlobalProperties = { + WorkerLocation: location.workerLocationConstructorDescriptor, + location: location.workerLocationDescriptor, + WorkerGlobalScope: globalInterfaces.workerGlobalScopeConstructorDescriptor, + DedicatedWorkerGlobalScope: + globalInterfaces.dedicatedWorkerGlobalScopeConstructorDescriptor, + WorkerNavigator: util.nonEnumerable(WorkerNavigator), + navigator: util.getterOnly(() => workerNavigator), + self: util.getterOnly(() => globalThis), +}; + +export { workerRuntimeGlobalProperties }; diff --git a/runtime/js/99_main.js b/runtime/js/99_main.js index 625d77f40..4644d2d08 100644 --- a/runtime/js/99_main.js +++ b/runtime/js/99_main.js @@ -57,12 +57,16 @@ import { errors } from "ext:runtime/01_errors.js"; import * as webidl from "ext:deno_webidl/00_webidl.js"; import { DOMException } from "ext:deno_web/01_dom_exception.js"; import { - mainRuntimeGlobalProperties, - memoizeLazy, unstableForWindowOrWorkerGlobalScope, windowOrWorkerGlobalScope, +} from "ext:runtime/98_global_scope_shared.js"; +import { + mainRuntimeGlobalProperties, + memoizeLazy, +} from "ext:runtime/98_global_scope_window.js"; +import { workerRuntimeGlobalProperties, -} from "ext:runtime/98_global_scope.js"; +} from "ext:runtime/98_global_scope_worker.js"; import { SymbolAsyncDispose, SymbolDispose } from "ext:deno_web/00_infra.js"; // deno-lint-ignore prefer-primordials |