@@ -160,45 +160,7 @@ class WritableStream {
160160 if ( type !== undefined )
161161 throw new ERR_INVALID_ARG_VALUE . RangeError ( 'type' , type ) ;
162162
163- this [ kState ] = {
164- close : createDeferredPromise ( ) ,
165- closeRequest : {
166- promise : undefined ,
167- resolve : undefined ,
168- reject : undefined ,
169- } ,
170- inFlightWriteRequest : {
171- promise : undefined ,
172- resolve : undefined ,
173- reject : undefined ,
174- } ,
175- inFlightCloseRequest : {
176- promise : undefined ,
177- resolve : undefined ,
178- reject : undefined ,
179- } ,
180- pendingAbortRequest : {
181- abort : {
182- promise : undefined ,
183- resolve : undefined ,
184- reject : undefined ,
185- } ,
186- reason : undefined ,
187- wasAlreadyErroring : false ,
188- } ,
189- backpressure : false ,
190- controller : undefined ,
191- state : 'writable' ,
192- storedError : undefined ,
193- writeRequests : [ ] ,
194- writer : undefined ,
195- transfer : {
196- readable : undefined ,
197- port1 : undefined ,
198- port2 : undefined ,
199- promise : undefined ,
200- } ,
201- } ;
163+ this [ kState ] = createWritableStreamState ( ) ;
202164
203165 this [ kIsClosedPromise ] = createDeferredPromise ( ) ;
204166 this [ kControllerErrorFunction ] = ( ) => { } ;
@@ -330,45 +292,7 @@ ObjectDefineProperties(WritableStream.prototype, {
330292function InternalTransferredWritableStream ( ) {
331293 markTransferMode ( this , false , true ) ;
332294 this [ kType ] = 'WritableStream' ;
333- this [ kState ] = {
334- close : createDeferredPromise ( ) ,
335- closeRequest : {
336- promise : undefined ,
337- resolve : undefined ,
338- reject : undefined ,
339- } ,
340- inFlightWriteRequest : {
341- promise : undefined ,
342- resolve : undefined ,
343- reject : undefined ,
344- } ,
345- inFlightCloseRequest : {
346- promise : undefined ,
347- resolve : undefined ,
348- reject : undefined ,
349- } ,
350- pendingAbortRequest : {
351- abort : {
352- promise : undefined ,
353- resolve : undefined ,
354- reject : undefined ,
355- } ,
356- reason : undefined ,
357- wasAlreadyErroring : false ,
358- } ,
359- backpressure : false ,
360- controller : undefined ,
361- state : 'writable' ,
362- storedError : undefined ,
363- writeRequests : [ ] ,
364- writer : undefined ,
365- transfer : {
366- readable : undefined ,
367- port1 : undefined ,
368- port2 : undefined ,
369- promise : undefined ,
370- } ,
371- } ;
295+ this [ kState ] = createWritableStreamState ( ) ;
372296
373297 this [ kIsClosedPromise ] = createDeferredPromise ( ) ;
374298}
@@ -584,7 +508,42 @@ ObjectDefineProperties(WritableStreamDefaultController.prototype, {
584508function InternalWritableStream ( start , write , close , abort , highWaterMark , size ) {
585509 markTransferMode ( this , false , true ) ;
586510 this [ kType ] = 'WritableStream' ;
587- this [ kState ] = {
511+ this [ kState ] = createWritableStreamState ( ) ;
512+ this [ kIsClosedPromise ] = createDeferredPromise ( ) ;
513+
514+ const controller = new WritableStreamDefaultController ( kSkipThrow ) ;
515+ setupWritableStreamDefaultController (
516+ this ,
517+ controller ,
518+ start ,
519+ write ,
520+ close ,
521+ abort ,
522+ highWaterMark ,
523+ size
524+ )
525+ }
526+
527+ ObjectSetPrototypeOf ( InternalWritableStream . prototype , WritableStream . prototype ) ;
528+ ObjectSetPrototypeOf ( InternalWritableStream , WritableStream ) ;
529+
530+ function createWritableStream ( start , write , close , abort , highWaterMark = 1 , size = ( ) => 1 ) {
531+ const stream = new InternalWritableStream ( start , write , close , abort , highWaterMark , size ) ;
532+
533+ // For spec compliance the InternalWritableStream must be a WritableStream
534+ stream . constructor = WritableStream ;
535+ return stream ;
536+ }
537+
538+ const isWritableStream =
539+ isBrandCheck ( 'WritableStream' ) ;
540+ const isWritableStreamDefaultWriter =
541+ isBrandCheck ( 'WritableStreamDefaultWriter' ) ;
542+ const isWritableStreamDefaultController =
543+ isBrandCheck ( 'WritableStreamDefaultController' ) ;
544+
545+ function createWritableStreamState ( ) {
546+ return {
588547 close : createDeferredPromise ( ) ,
589548 closeRequest : {
590549 promise : undefined ,
@@ -623,39 +582,8 @@ function InternalWritableStream(start, write, close, abort, highWaterMark, size)
623582 promise : undefined ,
624583 } ,
625584 } ;
626- this [ kIsClosedPromise ] = createDeferredPromise ( ) ;
627-
628- const controller = new WritableStreamDefaultController ( kSkipThrow ) ;
629- setupWritableStreamDefaultController (
630- this ,
631- controller ,
632- start ,
633- write ,
634- close ,
635- abort ,
636- highWaterMark ,
637- size
638- )
639585}
640586
641- ObjectSetPrototypeOf ( InternalWritableStream . prototype , WritableStream . prototype ) ;
642- ObjectSetPrototypeOf ( InternalWritableStream , WritableStream ) ;
643-
644- function createWritableStream ( start , write , close , abort , highWaterMark , size ) {
645- const stream = new InternalWritableStream ( start , write , close , abort , highWaterMark , size ) ;
646-
647- // For spec compliance the InternalWritableStream must be a WritableStream
648- stream . constructor = WritableStream ;
649- return stream ;
650- }
651-
652- const isWritableStream =
653- isBrandCheck ( 'WritableStream' ) ;
654- const isWritableStreamDefaultWriter =
655- isBrandCheck ( 'WritableStreamDefaultWriter' ) ;
656- const isWritableStreamDefaultController =
657- isBrandCheck ( 'WritableStreamDefaultController' ) ;
658-
659587function isWritableStreamLocked ( stream ) {
660588 return stream [ kState ] . writer !== undefined ;
661589}
0 commit comments