99 defineOperation,
1010 exposeInterface,
1111 lazyDOMExceptionClass,
12+ defineLazyProperties,
13+ defineReplaceableLazyAttribute,
14+ exposeLazyInterfaces,
1215} = require ( 'internal/util' ) ;
1316const config = internalBinding ( 'config' ) ;
1417
@@ -28,55 +31,39 @@ exposeGetterAndSetter(globalThis,
2831 exposeInterface ( globalThis , 'DOMException' , value ) ;
2932 } ) ;
3033
31- const {
32- TextEncoder, TextDecoder
33- } = require ( 'internal/encoding' ) ;
34- // https://encoding.spec.whatwg.org/#textencoder
35- exposeInterface ( globalThis , 'TextEncoder' , TextEncoder ) ;
36- // https://encoding.spec.whatwg.org/#textdecoder
37- exposeInterface ( globalThis , 'TextDecoder' , TextDecoder ) ;
38-
39- const {
40- AbortController,
41- AbortSignal,
42- } = require ( 'internal/abort_controller' ) ;
43- exposeInterface ( globalThis , 'AbortController' , AbortController ) ;
44- exposeInterface ( globalThis , 'AbortSignal' , AbortSignal ) ;
45-
46- const {
47- EventTarget,
48- Event,
49- } = require ( 'internal/event_target' ) ;
50- exposeInterface ( globalThis , 'EventTarget' , EventTarget ) ;
51- exposeInterface ( globalThis , 'Event' , Event ) ;
52- const {
53- MessageChannel,
54- MessagePort,
55- MessageEvent,
56- } = require ( 'internal/worker/io' ) ;
57- exposeInterface ( globalThis , 'MessageChannel' , MessageChannel ) ;
58- exposeInterface ( globalThis , 'MessagePort' , MessagePort ) ;
59- exposeInterface ( globalThis , 'MessageEvent' , MessageEvent ) ;
60-
6134// https://html.spec.whatwg.org/multipage/webappapis.html#windoworworkerglobalscope
6235const timers = require ( 'timers' ) ;
6336defineOperation ( globalThis , 'clearInterval' , timers . clearInterval ) ;
6437defineOperation ( globalThis , 'clearTimeout' , timers . clearTimeout ) ;
6538defineOperation ( globalThis , 'setInterval' , timers . setInterval ) ;
6639defineOperation ( globalThis , 'setTimeout' , timers . setTimeout ) ;
6740
68- const buffer = require ( 'buffer' ) ;
69- defineOperation ( globalThis , 'atob' , buffer . atob ) ;
70- defineOperation ( globalThis , 'btoa' , buffer . btoa ) ;
71-
41+ // Lazy ones.
42+ exposeLazyInterfaces ( globalThis , 'internal/abort_controller' , [
43+ 'AbortController' , 'AbortSignal' ,
44+ ] ) ;
45+ exposeLazyInterfaces ( globalThis , 'internal/event_target' , [
46+ 'EventTarget' , 'Event' ,
47+ ] ) ;
48+ exposeLazyInterfaces ( globalThis , 'internal/worker/io' , [
49+ 'MessageChannel' , 'MessagePort' , 'MessageEvent' ,
50+ ] ) ;
51+ defineLazyProperties ( globalThis , 'buffer' , [ 'atob' , 'btoa' ] ) ;
7252// https://www.w3.org/TR/FileAPI/#dfn-Blob
73- exposeInterface ( globalThis , 'Blob' , buffer . Blob ) ;
74-
53+ exposeLazyInterfaces ( globalThis , 'internal/blob' , [ 'Blob' ] ) ;
7554// https://www.w3.org/TR/hr-time-2/#the-performance-attribute
76- const perf_hooks = require ( 'perf_hooks' ) ;
77- exposeInterface ( globalThis , 'Performance' , perf_hooks . Performance ) ;
78- defineReplacableAttribute ( globalThis , 'performance' ,
79- perf_hooks . performance ) ;
55+
56+ exposeLazyInterfaces ( globalThis , 'perf_hooks' , [
57+ 'Performance' ,
58+ ] ) ;
59+
60+ defineReplaceableLazyAttribute ( globalThis , 'perf_hooks' , [ 'performance' ] ) ;
61+
62+ // https://encoding.spec.whatwg.org/#textencoder
63+ // https://encoding.spec.whatwg.org/#textdecoder
64+ exposeLazyInterfaces ( globalThis ,
65+ 'internal/encoding' ,
66+ [ 'TextEncoder' , 'TextDecoder' ] ) ;
8067
8168function createGlobalConsole ( ) {
8269 const consoleFromNode =
@@ -114,67 +101,43 @@ function exposeGetterAndSetter(target, name, getter, setter = undefined) {
114101 } ) ;
115102}
116103
117- // https://heycam.github.io/webidl/#Replaceable
118- function defineReplacableAttribute ( target , name , value ) {
119- ObjectDefineProperty ( target , name , {
120- __proto__ : null ,
121- writable : true ,
122- enumerable : true ,
123- configurable : true ,
124- value,
125- } ) ;
126- }
127-
128104// Web Streams API
129- const {
130- TransformStream,
131- TransformStreamDefaultController,
132- } = require ( 'internal/webstreams/transformstream' ) ;
133-
134- const {
135- WritableStream,
136- WritableStreamDefaultController,
137- WritableStreamDefaultWriter,
138- } = require ( 'internal/webstreams/writablestream' ) ;
105+ exposeLazyInterfaces (
106+ globalThis ,
107+ 'internal/webstreams/transformstream' ,
108+ [ 'TransformStream' , 'TransformStreamDefaultController' ] ) ;
139109
140- const {
141- ReadableStream,
142- ReadableStreamDefaultReader,
143- ReadableStreamBYOBReader,
144- ReadableStreamBYOBRequest,
145- ReadableByteStreamController,
146- ReadableStreamDefaultController,
147- } = require ( 'internal/webstreams/readablestream' ) ;
110+ exposeLazyInterfaces (
111+ globalThis ,
112+ 'internal/webstreams/writablestream' ,
113+ [ 'WritableStream' , 'WritableStreamDefaultController' , 'WritableStreamDefaultWriter' ] ) ;
148114
149- const {
150- ByteLengthQueuingStrategy,
151- CountQueuingStrategy,
152- } = require ( 'internal/webstreams/queuingstrategies' ) ;
115+ exposeLazyInterfaces (
116+ globalThis ,
117+ 'internal/webstreams/readablestream' ,
118+ [
119+ 'ReadableStream' , 'ReadableStreamDefaultReader' ,
120+ 'ReadableStreamBYOBReader' , 'ReadableStreamBYOBRequest' ,
121+ 'ReadableByteStreamController' , 'ReadableStreamDefaultController' ,
122+ ] ) ;
123+
124+ exposeLazyInterfaces (
125+ globalThis ,
126+ 'internal/webstreams/queuingstrategies' ,
127+ [
128+ 'ByteLengthQueuingStrategy' , 'CountQueuingStrategy' ,
129+ ] ) ;
153130
154- const {
155- TextEncoderStream,
156- TextDecoderStream,
157- } = require ( 'internal/webstreams/encoding' ) ;
131+ exposeLazyInterfaces (
132+ globalThis ,
133+ 'internal/webstreams/encoding' ,
134+ [
135+ 'TextEncoderStream' , 'TextDecoderStream' ,
136+ ] ) ;
158137
159- const {
160- CompressionStream,
161- DecompressionStream,
162- } = require ( 'internal/webstreams/compression' ) ;
163-
164- exposeInterface ( globalThis , 'ReadableStream' , ReadableStream ) ;
165- exposeInterface ( globalThis , 'ReadableStreamDefaultReader' , ReadableStreamDefaultReader ) ;
166- exposeInterface ( globalThis , 'ReadableStreamBYOBReader' , ReadableStreamBYOBReader ) ;
167- exposeInterface ( globalThis , 'ReadableStreamBYOBRequest' , ReadableStreamBYOBRequest ) ;
168- exposeInterface ( globalThis , 'ReadableByteStreamController' , ReadableByteStreamController ) ;
169- exposeInterface ( globalThis , 'ReadableStreamDefaultController' , ReadableStreamDefaultController ) ;
170- exposeInterface ( globalThis , 'TransformStream' , TransformStream ) ;
171- exposeInterface ( globalThis , 'TransformStreamDefaultController' , TransformStreamDefaultController ) ;
172- exposeInterface ( globalThis , 'WritableStream' , WritableStream ) ;
173- exposeInterface ( globalThis , 'WritableStreamDefaultWriter' , WritableStreamDefaultWriter ) ;
174- exposeInterface ( globalThis , 'WritableStreamDefaultController' , WritableStreamDefaultController ) ;
175- exposeInterface ( globalThis , 'ByteLengthQueuingStrategy' , ByteLengthQueuingStrategy ) ;
176- exposeInterface ( globalThis , 'CountQueuingStrategy' , CountQueuingStrategy ) ;
177- exposeInterface ( globalThis , 'TextEncoderStream' , TextEncoderStream ) ;
178- exposeInterface ( globalThis , 'TextDecoderStream' , TextDecoderStream ) ;
179- exposeInterface ( globalThis , 'CompressionStream' , CompressionStream ) ;
180- exposeInterface ( globalThis , 'DecompressionStream' , DecompressionStream ) ;
138+ exposeLazyInterfaces (
139+ globalThis ,
140+ 'internal/webstreams/compression' ,
141+ [
142+ 'CompressionStream' , 'DecompressionStream' ,
143+ ] ) ;
0 commit comments