99 defineOperation,
1010 exposeInterface,
1111 lazyDOMExceptionClass,
12+ defineLazyProperties,
13+ defineReplaceableLazyAttribute,
14+ exposeLazyInterfaces,
1215} = require ( 'internal/util' ) ;
1316const config = internalBinding ( 'config' ) ;
1417
@@ -28,56 +31,39 @@ exposeGetterAndSetter(globalThis,
2831 exposeInterface ( globalThis , 'DOMException' , value ) ;
2932 } ) ;
3033
31- const {
32- TextEncoder,
33- TextDecoder,
34- } = require ( 'internal/encoding' ) ;
35- // https://encoding.spec.whatwg.org/#textencoder
36- exposeInterface ( globalThis , 'TextEncoder' , TextEncoder ) ;
37- // https://encoding.spec.whatwg.org/#textdecoder
38- exposeInterface ( globalThis , 'TextDecoder' , TextDecoder ) ;
39-
40- const {
41- AbortController,
42- AbortSignal,
43- } = require ( 'internal/abort_controller' ) ;
44- exposeInterface ( globalThis , 'AbortController' , AbortController ) ;
45- exposeInterface ( globalThis , 'AbortSignal' , AbortSignal ) ;
46-
47- const {
48- EventTarget,
49- Event,
50- } = require ( 'internal/event_target' ) ;
51- exposeInterface ( globalThis , 'EventTarget' , EventTarget ) ;
52- exposeInterface ( globalThis , 'Event' , Event ) ;
53- const {
54- MessageChannel,
55- MessagePort,
56- MessageEvent,
57- } = require ( 'internal/worker/io' ) ;
58- exposeInterface ( globalThis , 'MessageChannel' , MessageChannel ) ;
59- exposeInterface ( globalThis , 'MessagePort' , MessagePort ) ;
60- exposeInterface ( globalThis , 'MessageEvent' , MessageEvent ) ;
61-
6234// https://html.spec.whatwg.org/multipage/webappapis.html#windoworworkerglobalscope
6335const timers = require ( 'timers' ) ;
6436defineOperation ( globalThis , 'clearInterval' , timers . clearInterval ) ;
6537defineOperation ( globalThis , 'clearTimeout' , timers . clearTimeout ) ;
6638defineOperation ( globalThis , 'setInterval' , timers . setInterval ) ;
6739defineOperation ( globalThis , 'setTimeout' , timers . setTimeout ) ;
6840
69- const buffer = require ( 'buffer' ) ;
70- defineOperation ( globalThis , 'atob' , buffer . atob ) ;
71- defineOperation ( globalThis , 'btoa' , buffer . btoa ) ;
72-
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' ] ) ;
7352// https://www.w3.org/TR/FileAPI/#dfn-Blob
74- exposeInterface ( globalThis , 'Blob' , buffer . Blob ) ;
75-
53+ exposeLazyInterfaces ( globalThis , 'internal/blob' , [ 'Blob' ] ) ;
7654// https://www.w3.org/TR/hr-time-2/#the-performance-attribute
77- const perf_hooks = require ( 'perf_hooks' ) ;
78- exposeInterface ( globalThis , 'Performance' , perf_hooks . Performance ) ;
79- defineReplacableAttribute ( globalThis , 'performance' ,
80- 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' ] ) ;
8167
8268function createGlobalConsole ( ) {
8369 const consoleFromNode =
@@ -115,67 +101,43 @@ function exposeGetterAndSetter(target, name, getter, setter = undefined) {
115101 } ) ;
116102}
117103
118- // https://heycam.github.io/webidl/#Replaceable
119- function defineReplacableAttribute ( target , name , value ) {
120- ObjectDefineProperty ( target , name , {
121- __proto__ : null ,
122- writable : true ,
123- enumerable : true ,
124- configurable : true ,
125- value,
126- } ) ;
127- }
128-
129104// Web Streams API
130- const {
131- TransformStream,
132- TransformStreamDefaultController,
133- } = require ( 'internal/webstreams/transformstream' ) ;
134-
135- const {
136- WritableStream,
137- WritableStreamDefaultController,
138- WritableStreamDefaultWriter,
139- } = require ( 'internal/webstreams/writablestream' ) ;
105+ exposeLazyInterfaces (
106+ globalThis ,
107+ 'internal/webstreams/transformstream' ,
108+ [ 'TransformStream' , 'TransformStreamDefaultController' ] ) ;
140109
141- const {
142- ReadableStream,
143- ReadableStreamDefaultReader,
144- ReadableStreamBYOBReader,
145- ReadableStreamBYOBRequest,
146- ReadableByteStreamController,
147- ReadableStreamDefaultController,
148- } = require ( 'internal/webstreams/readablestream' ) ;
110+ exposeLazyInterfaces (
111+ globalThis ,
112+ 'internal/webstreams/writablestream' ,
113+ [ 'WritableStream' , 'WritableStreamDefaultController' , 'WritableStreamDefaultWriter' ] ) ;
149114
150- const {
151- ByteLengthQueuingStrategy,
152- CountQueuingStrategy,
153- } = 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+ ] ) ;
154130
155- const {
156- TextEncoderStream,
157- TextDecoderStream,
158- } = require ( 'internal/webstreams/encoding' ) ;
131+ exposeLazyInterfaces (
132+ globalThis ,
133+ 'internal/webstreams/encoding' ,
134+ [
135+ 'TextEncoderStream' , 'TextDecoderStream' ,
136+ ] ) ;
159137
160- const {
161- CompressionStream,
162- DecompressionStream,
163- } = require ( 'internal/webstreams/compression' ) ;
164-
165- exposeInterface ( globalThis , 'ReadableStream' , ReadableStream ) ;
166- exposeInterface ( globalThis , 'ReadableStreamDefaultReader' , ReadableStreamDefaultReader ) ;
167- exposeInterface ( globalThis , 'ReadableStreamBYOBReader' , ReadableStreamBYOBReader ) ;
168- exposeInterface ( globalThis , 'ReadableStreamBYOBRequest' , ReadableStreamBYOBRequest ) ;
169- exposeInterface ( globalThis , 'ReadableByteStreamController' , ReadableByteStreamController ) ;
170- exposeInterface ( globalThis , 'ReadableStreamDefaultController' , ReadableStreamDefaultController ) ;
171- exposeInterface ( globalThis , 'TransformStream' , TransformStream ) ;
172- exposeInterface ( globalThis , 'TransformStreamDefaultController' , TransformStreamDefaultController ) ;
173- exposeInterface ( globalThis , 'WritableStream' , WritableStream ) ;
174- exposeInterface ( globalThis , 'WritableStreamDefaultWriter' , WritableStreamDefaultWriter ) ;
175- exposeInterface ( globalThis , 'WritableStreamDefaultController' , WritableStreamDefaultController ) ;
176- exposeInterface ( globalThis , 'ByteLengthQueuingStrategy' , ByteLengthQueuingStrategy ) ;
177- exposeInterface ( globalThis , 'CountQueuingStrategy' , CountQueuingStrategy ) ;
178- exposeInterface ( globalThis , 'TextEncoderStream' , TextEncoderStream ) ;
179- exposeInterface ( globalThis , 'TextDecoderStream' , TextDecoderStream ) ;
180- exposeInterface ( globalThis , 'CompressionStream' , CompressionStream ) ;
181- exposeInterface ( globalThis , 'DecompressionStream' , DecompressionStream ) ;
138+ exposeLazyInterfaces (
139+ globalThis ,
140+ 'internal/webstreams/compression' ,
141+ [
142+ 'CompressionStream' , 'DecompressionStream' ,
143+ ] ) ;
0 commit comments