1+ /* 
2+ This file is copied from https://github.com/nodejs/node/blob/v14.19.3/lib/internal/per_context/primordials.js 
3+ under the following license: 
4+ 
5+ Copyright Node.js contributors. All rights reserved. 
6+ 
7+ Permission is hereby granted, free of charge, to any person obtaining a copy 
8+ of this software and associated documentation files (the "Software"), to 
9+ deal in the Software without restriction, including without limitation the 
10+ rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 
11+ sell copies of the Software, and to permit persons to whom the Software is 
12+ furnished to do so, subject to the following conditions: 
13+ 
14+ The above copyright notice and this permission notice shall be included in 
15+ all copies or substantial portions of the Software. 
16+ 
17+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
18+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
19+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
20+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
21+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
22+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 
23+ IN THE SOFTWARE. 
24+ */ 
25+ 
126'use strict' ; 
227
328/* eslint-disable node-core/prefer-primordials */ 
@@ -169,7 +194,6 @@ function copyPrototype(src, dest, prefix) {
169194
170195// Create copies of intrinsic objects 
171196[ 
172-   'AggregateError' , 
173197  'Array' , 
174198  'ArrayBuffer' , 
175199  'BigInt' , 
@@ -180,7 +204,6 @@ function copyPrototype(src, dest, prefix) {
180204  'Date' , 
181205  'Error' , 
182206  'EvalError' , 
183-   'FinalizationRegistry' , 
184207  'Float32Array' , 
185208  'Float64Array' , 
186209  'Function' , 
@@ -204,7 +227,6 @@ function copyPrototype(src, dest, prefix) {
204227  'Uint8Array' , 
205228  'Uint8ClampedArray' , 
206229  'WeakMap' , 
207-   'WeakRef' , 
208230  'WeakSet' , 
209231] . forEach ( ( name )  =>  { 
210232  // eslint-disable-next-line no-restricted-globals 
@@ -232,16 +254,12 @@ function copyPrototype(src, dest, prefix) {
232254// Refs: https://tc39.es/ecma262/#sec-%typedarray%-intrinsic-object 
233255[ 
234256  {  name : 'TypedArray' ,  original : Reflect . getPrototypeOf ( Uint8Array )  } , 
235-   { 
236-     name : 'ArrayIterator' ,  original : { 
237-       prototype : Reflect . getPrototypeOf ( Array . prototype [ Symbol . iterator ] ( ) ) , 
238-     } 
239-   } , 
240-   { 
241-     name : 'StringIterator' ,  original : { 
242-       prototype : Reflect . getPrototypeOf ( String . prototype [ Symbol . iterator ] ( ) ) , 
243-     } 
244-   } , 
257+   {  name : 'ArrayIterator' ,  original : { 
258+     prototype : Reflect . getPrototypeOf ( Array . prototype [ Symbol . iterator ] ( ) ) , 
259+   }  } , 
260+   {  name : 'StringIterator' ,  original : { 
261+     prototype : Reflect . getPrototypeOf ( String . prototype [ Symbol . iterator ] ( ) ) , 
262+   }  } , 
245263] . forEach ( ( {  name,  original } )  =>  { 
246264  primordials [ name ]  =  original ; 
247265  // The static %TypedArray% methods require a valid `this`, but can't be bound, 
@@ -254,17 +272,13 @@ function copyPrototype(src, dest, prefix) {
254272
255273const  { 
256274  ArrayPrototypeForEach, 
257-   FinalizationRegistry, 
258275  FunctionPrototypeCall, 
259276  Map, 
260277  ObjectFreeze, 
261278  ObjectSetPrototypeOf, 
262-   Promise, 
263-   PromisePrototypeThen, 
264279  Set, 
265280  SymbolIterator, 
266281  WeakMap, 
267-   WeakRef, 
268282  WeakSet, 
269283}  =  primordials ; 
270284
@@ -309,9 +323,6 @@ const copyProps = (src, dest) => {
309323  } ) ; 
310324} ; 
311325
312- /** 
313-  * @type  {typeof primordials.makeSafe } 
314-  */ 
315326const  makeSafe  =  ( unsafe ,  safe )  =>  { 
316327  if  ( SymbolIterator  in  unsafe . prototype )  { 
317328    const  dummy  =  new  unsafe ( ) ; 
@@ -326,7 +337,7 @@ const makeSafe = (unsafe, safe) => {
326337          SymbolIterator  in  ( FunctionPrototypeCall ( desc . value ,  dummy )  ??  { } ) 
327338        )  { 
328339          const  createIterator  =  uncurryThis ( desc . value ) ; 
329-           next  ??=  uncurryThis ( createIterator ( dummy ) . next ) ; 
340+           next  =   next   ??  uncurryThis ( createIterator ( dummy ) . next ) ; 
330341          const  SafeIterator  =  createSafeIterator ( createIterator ,  next ) ; 
331342          desc . value  =  function ( )  { 
332343            return  new  SafeIterator ( this ) ; 
@@ -363,7 +374,6 @@ primordials.SafeWeakMap = makeSafe(
363374    constructor ( i )  {  super ( i ) ;  }  // eslint-disable-line no-useless-constructor 
364375  } 
365376) ; 
366- 
367377primordials . SafeSet  =  makeSafe ( 
368378  Set , 
369379  class  SafeSet  extends  Set  { 
@@ -377,55 +387,6 @@ primordials.SafeWeakSet = makeSafe(
377387  } 
378388) ; 
379389
380- primordials . SafeFinalizationRegistry  =  makeSafe ( 
381-   FinalizationRegistry , 
382-   class  SafeFinalizationRegistry  extends  FinalizationRegistry  { 
383-     // eslint-disable-next-line no-useless-constructor 
384-     constructor ( cleanupCallback )  {  super ( cleanupCallback ) ;  } 
385-   } 
386- ) ; 
387- primordials . SafeWeakRef  =  makeSafe ( 
388-   WeakRef , 
389-   class  SafeWeakRef  extends  WeakRef  { 
390-     // eslint-disable-next-line no-useless-constructor 
391-     constructor ( target )  {  super ( target ) ;  } 
392-   } 
393- ) ; 
394- 
395- const  SafePromise  =  makeSafe ( 
396-   Promise , 
397-   class  SafePromise  extends  Promise  { 
398-     // eslint-disable-next-line no-useless-constructor 
399-     constructor ( executor )  {  super ( executor ) ;  } 
400-   } 
401- ) ; 
402- 
403- primordials . PromisePrototypeCatch  =  ( thisPromise ,  onRejected )  => 
404-   PromisePrototypeThen ( thisPromise ,  undefined ,  onRejected ) ; 
405- 
406- /** 
407-  * Attaches a callback that is invoked when the Promise is settled (fulfilled or 
408-  * rejected). The resolved value cannot be modified from the callback. 
409-  * Prefer using async functions when possible. 
410-  * @param  {Promise<any> } thisPromise 
411-  * @param  {() => void) | undefined | null } onFinally The callback to execute 
412-  *        when the Promise is settled (fulfilled or rejected). 
413-  * @returns  {Promise } A Promise for the completion of the callback. 
414-  */ 
415- primordials . SafePromisePrototypeFinally  =  ( thisPromise ,  onFinally )  => 
416-   // Wrapping on a new Promise is necessary to not expose the SafePromise 
417-   // prototype to user-land. 
418-   new  Promise ( ( a ,  b )  => 
419-     new  SafePromise ( ( a ,  b )  =>  PromisePrototypeThen ( thisPromise ,  a ,  b ) ) 
420-       . finally ( onFinally ) 
421-       . then ( a ,  b ) 
422-   ) ; 
423- 
424- primordials . AsyncIteratorPrototype  = 
425-   primordials . ReflectGetPrototypeOf ( 
426-     primordials . ReflectGetPrototypeOf ( 
427-       async  function *  ( )  {  } ) . prototype ) ; 
428- 
429390ObjectSetPrototypeOf ( primordials ,  null ) ; 
430391ObjectFreeze ( primordials ) ; 
431392
0 commit comments