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,56 +31,39 @@ exposeGetterAndSetter(globalThis,
28
31
exposeInterface ( globalThis , 'DOMException' , value ) ;
29
32
} ) ;
30
33
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
-
62
34
// https://html.spec.whatwg.org/multipage/webappapis.html#windoworworkerglobalscope
63
35
const timers = require ( 'timers' ) ;
64
36
defineOperation ( globalThis , 'clearInterval' , timers . clearInterval ) ;
65
37
defineOperation ( globalThis , 'clearTimeout' , timers . clearTimeout ) ;
66
38
defineOperation ( globalThis , 'setInterval' , timers . setInterval ) ;
67
39
defineOperation ( globalThis , 'setTimeout' , timers . setTimeout ) ;
68
40
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' ] ) ;
73
52
// https://www.w3.org/TR/FileAPI/#dfn-Blob
74
- exposeInterface ( globalThis , 'Blob' , buffer . Blob ) ;
75
-
53
+ exposeLazyInterfaces ( globalThis , 'internal/blob' , [ 'Blob' ] ) ;
76
54
// 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' ] ) ;
81
67
82
68
function createGlobalConsole ( ) {
83
69
const consoleFromNode =
@@ -115,67 +101,43 @@ function exposeGetterAndSetter(target, name, getter, setter = undefined) {
115
101
} ) ;
116
102
}
117
103
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
-
129
104
// 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' ] ) ;
140
109
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' ] ) ;
149
114
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
+ ] ) ;
154
130
155
- const {
156
- TextEncoderStream,
157
- TextDecoderStream,
158
- } = require ( 'internal/webstreams/encoding' ) ;
131
+ exposeLazyInterfaces (
132
+ globalThis ,
133
+ 'internal/webstreams/encoding' ,
134
+ [
135
+ 'TextEncoderStream' , 'TextDecoderStream' ,
136
+ ] ) ;
159
137
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