9
9
defineOperation,
10
10
exposeInterface,
11
11
lazyDOMExceptionClass,
12
+ defineLazyProperties,
13
+ defineReplaceableLazyAttribute,
14
+ exposeLazyInterfaces,
12
15
} = require ( 'internal/util' ) ;
13
16
const config = internalBinding ( 'config' ) ;
14
17
@@ -28,61 +31,39 @@ exposeGetterAndSetter(globalThis,
28
31
exposeInterface ( globalThis , 'DOMException' , value ) ;
29
32
} ) ;
30
33
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
-
61
34
// https://html.spec.whatwg.org/multipage/webappapis.html#windoworworkerglobalscope
62
35
const timers = require ( 'timers' ) ;
63
36
defineOperation ( globalThis , 'clearInterval' , timers . clearInterval ) ;
64
37
defineOperation ( globalThis , 'clearTimeout' , timers . clearTimeout ) ;
65
38
defineOperation ( globalThis , 'setInterval' , timers . setInterval ) ;
66
39
defineOperation ( globalThis , 'setTimeout' , timers . setTimeout ) ;
67
40
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' ] ) ;
72
52
// https://www.w3.org/TR/FileAPI/#dfn-Blob
73
- exposeInterface ( globalThis , 'Blob' , buffer . Blob ) ;
74
-
53
+ exposeLazyInterfaces ( globalThis , 'internal/blob' , [ 'Blob' ] ) ;
75
54
// 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
- exposeInterface ( globalThis , 'PerformanceEntry' , perf_hooks . PerformanceEntry ) ;
79
- exposeInterface ( globalThis , 'PerformanceMark' , perf_hooks . PerformanceMark ) ;
80
- exposeInterface ( globalThis , 'PerformanceMeasure' , perf_hooks . PerformanceMeasure ) ;
81
- exposeInterface ( globalThis , 'PerformanceObserver' , perf_hooks . PerformanceObserver ) ;
82
- exposeInterface ( globalThis , 'PerformanceObserverEntryList' , perf_hooks . PerformanceObserverEntryList ) ;
83
- exposeInterface ( globalThis , 'PerformanceResourceTiming' , perf_hooks . PerformanceResourceTiming ) ;
84
- defineReplaceableAttribute ( globalThis , 'performance' ,
85
- perf_hooks . performance ) ;
55
+ exposeLazyInterfaces ( globalThis , 'perf_hooks' , [
56
+ 'Performance' , 'PerformanceEntry' , 'PerformanceMark' , 'PerformanceMeasure' ,
57
+ 'PerformanceObserver' , 'PerformanceObserverEntryList' , 'PerformanceResourceTiming' ,
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' ] ) ;
86
67
87
68
function createGlobalConsole ( ) {
88
69
const consoleFromNode =
@@ -120,86 +101,43 @@ function exposeGetterAndSetter(target, name, getter, setter = undefined) {
120
101
} ) ;
121
102
}
122
103
123
- // https://webidl.spec.whatwg.org/#Replaceable
124
- function defineReplaceableAttribute ( target , name , value ) {
125
- let slot = value ;
126
-
127
- // https://webidl.spec.whatwg.org/#dfn-attribute-getter
128
- function get ( ) {
129
- return slot ;
130
- }
131
- ObjectDefineProperty ( get , 'name' , {
132
- __proto__ : null ,
133
- value : `get ${ name } ` ,
134
- } ) ;
135
-
136
- function set ( value ) {
137
- slot = value ;
138
- }
139
- ObjectDefineProperty ( set , 'name' , {
140
- __proto__ : null ,
141
- value : `set ${ name } ` ,
142
- } ) ;
143
-
144
- ObjectDefineProperty ( target , name , {
145
- __proto__ : null ,
146
- enumerable : true ,
147
- configurable : true ,
148
- get,
149
- set,
150
- } ) ;
151
- }
152
-
153
104
// Web Streams API
154
- const {
155
- TransformStream,
156
- TransformStreamDefaultController,
157
- } = require ( 'internal/webstreams/transformstream' ) ;
158
-
159
- const {
160
- WritableStream,
161
- WritableStreamDefaultController,
162
- WritableStreamDefaultWriter,
163
- } = require ( 'internal/webstreams/writablestream' ) ;
105
+ exposeLazyInterfaces (
106
+ globalThis ,
107
+ 'internal/webstreams/transformstream' ,
108
+ [ 'TransformStream' , 'TransformStreamDefaultController' ] ) ;
164
109
165
- const {
166
- ReadableStream,
167
- ReadableStreamDefaultReader,
168
- ReadableStreamBYOBReader,
169
- ReadableStreamBYOBRequest,
170
- ReadableByteStreamController,
171
- ReadableStreamDefaultController,
172
- } = require ( 'internal/webstreams/readablestream' ) ;
110
+ exposeLazyInterfaces (
111
+ globalThis ,
112
+ 'internal/webstreams/writablestream' ,
113
+ [ 'WritableStream' , 'WritableStreamDefaultController' , 'WritableStreamDefaultWriter' ] ) ;
173
114
174
- const {
175
- ByteLengthQueuingStrategy,
176
- CountQueuingStrategy,
177
- } = 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
+ ] ) ;
178
130
179
- const {
180
- TextEncoderStream,
181
- TextDecoderStream,
182
- } = require ( 'internal/webstreams/encoding' ) ;
131
+ exposeLazyInterfaces (
132
+ globalThis ,
133
+ 'internal/webstreams/encoding' ,
134
+ [
135
+ 'TextEncoderStream' , 'TextDecoderStream' ,
136
+ ] ) ;
183
137
184
- const {
185
- CompressionStream,
186
- DecompressionStream,
187
- } = require ( 'internal/webstreams/compression' ) ;
188
-
189
- exposeInterface ( globalThis , 'ReadableStream' , ReadableStream ) ;
190
- exposeInterface ( globalThis , 'ReadableStreamDefaultReader' , ReadableStreamDefaultReader ) ;
191
- exposeInterface ( globalThis , 'ReadableStreamBYOBReader' , ReadableStreamBYOBReader ) ;
192
- exposeInterface ( globalThis , 'ReadableStreamBYOBRequest' , ReadableStreamBYOBRequest ) ;
193
- exposeInterface ( globalThis , 'ReadableByteStreamController' , ReadableByteStreamController ) ;
194
- exposeInterface ( globalThis , 'ReadableStreamDefaultController' , ReadableStreamDefaultController ) ;
195
- exposeInterface ( globalThis , 'TransformStream' , TransformStream ) ;
196
- exposeInterface ( globalThis , 'TransformStreamDefaultController' , TransformStreamDefaultController ) ;
197
- exposeInterface ( globalThis , 'WritableStream' , WritableStream ) ;
198
- exposeInterface ( globalThis , 'WritableStreamDefaultWriter' , WritableStreamDefaultWriter ) ;
199
- exposeInterface ( globalThis , 'WritableStreamDefaultController' , WritableStreamDefaultController ) ;
200
- exposeInterface ( globalThis , 'ByteLengthQueuingStrategy' , ByteLengthQueuingStrategy ) ;
201
- exposeInterface ( globalThis , 'CountQueuingStrategy' , CountQueuingStrategy ) ;
202
- exposeInterface ( globalThis , 'TextEncoderStream' , TextEncoderStream ) ;
203
- exposeInterface ( globalThis , 'TextDecoderStream' , TextDecoderStream ) ;
204
- exposeInterface ( globalThis , 'CompressionStream' , CompressionStream ) ;
205
- exposeInterface ( globalThis , 'DecompressionStream' , DecompressionStream ) ;
138
+ exposeLazyInterfaces (
139
+ globalThis ,
140
+ 'internal/webstreams/compression' ,
141
+ [
142
+ 'CompressionStream' , 'DecompressionStream' ,
143
+ ] ) ;
0 commit comments