From 8912120d911e6446a3331626c374f6197f8c3962 Mon Sep 17 00:00:00 2001 From: Jihyeok Park Date: Wed, 22 Nov 2023 19:30:48 -0800 Subject: [PATCH 01/69] Meta: Upgrade ESMeta to v0.3.3 (#3219) --- .github/workflows/esmeta-typecheck.yml | 2 +- esmeta-ignore.json | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/esmeta-typecheck.yml b/.github/workflows/esmeta-typecheck.yml index a66fec023e..5a0c236a67 100644 --- a/.github/workflows/esmeta-typecheck.yml +++ b/.github/workflows/esmeta-typecheck.yml @@ -24,7 +24,7 @@ jobs: cd "${ESMETA_HOME}" git init git remote add origin https://github.com/es-meta/esmeta.git - git fetch --depth 1 origin af37f8a694d749bb9a624de71407eed2fa71b1dc ;# v0.3.2 + git fetch --depth 1 origin 38ca7770e6c64861735c6a02c902cf58f533bc73 ;# v0.3.3 git checkout FETCH_HEAD - name: build esmeta run: | diff --git a/esmeta-ignore.json b/esmeta-ignore.json index 07419aa2be..c596c05023 100644 --- a/esmeta-ignore.json +++ b/esmeta-ignore.json @@ -28,7 +28,6 @@ "GetGlobalObject", "GetMethod", "GetPromiseResolve", - "GetPrototypeFromConstructor", "GetThisValue", "InnerModuleEvaluation", "IntegerIndexedObjectCreate", @@ -41,7 +40,6 @@ "OrdinaryObject.OwnPropertyKeys", "ProxyCreate", "SerializeJSONObject", - "SetDefaultGlobalBindings", "SetFunctionLength", "SourceTextModuleRecord.ExecuteModule", "SourceTextModuleRecord.ResolveExport", From fe7ae0660c993e7e16215f9939cddfa48f4635dd Mon Sep 17 00:00:00 2001 From: Michael Dyck Date: Wed, 22 Nov 2023 19:34:51 -0800 Subject: [PATCH 02/69] Editorial: Rename `TypedArrayCreate` to `TypedArrayCreateFromConstructor` (#3194) ... to prevent a future name collision. --- spec.html | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/spec.html b/spec.html index 504dbfdee8..515fa1dd19 100644 --- a/spec.html +++ b/spec.html @@ -40316,7 +40316,7 @@

%TypedArray%.from ( _source_ [ , _mapfn_ [ , _thisArg_ ] ] )

1. If _usingIterator_ is not *undefined*, then 1. Let _values_ be ? IteratorToList(? GetIteratorFromMethod(_source_, _usingIterator_)). 1. Let _len_ be the number of elements in _values_. - 1. Let _targetObj_ be ? TypedArrayCreate(_C_, « 𝔽(_len_) »). + 1. Let _targetObj_ be ? TypedArrayCreateFromConstructor(_C_, « 𝔽(_len_) »). 1. Let _k_ be 0. 1. Repeat, while _k_ < _len_, 1. Let _Pk_ be ! ToString(𝔽(_k_)). @@ -40333,7 +40333,7 @@

%TypedArray%.from ( _source_ [ , _mapfn_ [ , _thisArg_ ] ] )

1. NOTE: _source_ is not an Iterable so assume it is already an array-like object. 1. Let _arrayLike_ be ! ToObject(_source_). 1. Let _len_ be ? LengthOfArrayLike(_arrayLike_). - 1. Let _targetObj_ be ? TypedArrayCreate(_C_, « 𝔽(_len_) »). + 1. Let _targetObj_ be ? TypedArrayCreateFromConstructor(_C_, « 𝔽(_len_) »). 1. Let _k_ be 0. 1. Repeat, while _k_ < _len_, 1. Let _Pk_ be ! ToString(𝔽(_k_)). @@ -40355,7 +40355,7 @@

%TypedArray%.of ( ..._items_ )

1. Let _len_ be the number of elements in _items_. 1. Let _C_ be the *this* value. 1. If IsConstructor(_C_) is *false*, throw a *TypeError* exception. - 1. Let _newObj_ be ? TypedArrayCreate(_C_, « 𝔽(_len_) »). + 1. Let _newObj_ be ? TypedArrayCreateFromConstructor(_C_, « 𝔽(_len_) »). 1. Let _k_ be 0. 1. Repeat, while _k_ < _len_, 1. Let _kValue_ be _items_[_k_]. @@ -41272,16 +41272,16 @@

1. Let _defaultConstructor_ be the intrinsic object associated with the constructor name _exemplar_.[[TypedArrayName]] in . 1. Let _constructor_ be ? SpeciesConstructor(_exemplar_, _defaultConstructor_). - 1. Let _result_ be ? TypedArrayCreate(_constructor_, _argumentList_). + 1. Let _result_ be ? TypedArrayCreateFromConstructor(_constructor_, _argumentList_). 1. Assert: _result_ has [[TypedArrayName]] and [[ContentType]] internal slots. 1. If _result_.[[ContentType]] is not _exemplar_.[[ContentType]], throw a *TypeError* exception. 1. Return _result_. - +

- TypedArrayCreate ( + TypedArrayCreateFromConstructor ( _constructor_: a constructor, _argumentList_: a List of ECMAScript language values, ): either a normal completion containing a TypedArray or a throw completion @@ -41314,7 +41314,7 @@

1. Let _constructor_ be the intrinsic object associated with the constructor name _exemplar_.[[TypedArrayName]] in . - 1. Let _result_ be ? TypedArrayCreate(_constructor_, _argumentList_). + 1. Let _result_ be ? TypedArrayCreateFromConstructor(_constructor_, _argumentList_). 1. Assert: _result_ has [[TypedArrayName]] and [[ContentType]] internal slots. 1. Assert: _result_.[[ContentType]] is _exemplar_.[[ContentType]]. 1. Return _result_. From 03e44104d41bb64c29fa5cf0937b5e62de94f98a Mon Sep 17 00:00:00 2001 From: Michael Dyck Date: Wed, 22 Nov 2023 19:51:56 -0800 Subject: [PATCH 03/69] Editorial: Rename "Integer-Indexed exotic object" as "TypedArray" (#3194) ... in prose, AO names, ids, alias names. --- esmeta-ignore.json | 2 - spec.html | 378 ++++++++++++++++++++++----------------------- 2 files changed, 189 insertions(+), 191 deletions(-) diff --git a/esmeta-ignore.json b/esmeta-ignore.json index c596c05023..90673a02eb 100644 --- a/esmeta-ignore.json +++ b/esmeta-ignore.json @@ -30,10 +30,8 @@ "GetPromiseResolve", "GetThisValue", "InnerModuleEvaluation", - "IntegerIndexedObjectCreate", "LabelledItem[1,0].LabelledEvaluation", "LengthOfArrayLike", - "MakeIntegerIndexedObjectWithBufferWitnessRecord", "MethodDefinition[0,0].DefineMethod", "ModuleNamespaceCreate", "ModuleNamespaceExoticObject.OwnPropertyKeys", diff --git a/spec.html b/spec.html index 515fa1dd19..d035a9845a 100644 --- a/spec.html +++ b/spec.html @@ -14492,13 +14492,13 @@

- -

Integer-Indexed Exotic Objects

-

An Integer-Indexed exotic object is an exotic object that performs special handling of integer index property keys.

-

Integer-Indexed exotic objects have the same internal slots as ordinary objects and additionally [[ViewedArrayBuffer]], [[ArrayLength]], [[ByteOffset]], [[ContentType]], and [[TypedArrayName]] internal slots.

-

An object is an Integer-Indexed exotic object if its [[GetOwnProperty]], [[HasProperty]], [[DefineOwnProperty]], [[Get]], [[Set]], [[Delete]], and [[OwnPropertyKeys]] internal methods use the definitions in this section, and its other essential internal methods use the definitions found in . These methods are installed by IntegerIndexedObjectCreate.

+ +

TypedArray Exotic Objects

+

A TypedArray is an exotic object that performs special handling of integer index property keys.

+

TypedArrays have the same internal slots as ordinary objects and additionally [[ViewedArrayBuffer]], [[ArrayLength]], [[ByteOffset]], [[ContentType]], and [[TypedArrayName]] internal slots.

+

An object is a TypedArray if its [[GetOwnProperty]], [[HasProperty]], [[DefineOwnProperty]], [[Get]], [[Set]], [[Delete]], and [[OwnPropertyKeys]] internal methods use the definitions in this section, and its other essential internal methods use the definitions found in . These methods are installed by TypedArrayCreate.

- +

[[GetOwnProperty]] ( _P_: a property key, @@ -14506,20 +14506,20 @@

for
-
an Integer-Indexed exotic object _O_
+
a TypedArray _O_
1. If _P_ is a String, then 1. Let _numericIndex_ be CanonicalNumericIndexString(_P_). 1. If _numericIndex_ is not *undefined*, then - 1. Let _value_ be IntegerIndexedElementGet(_O_, _numericIndex_). + 1. Let _value_ be TypedArrayGetElement(_O_, _numericIndex_). 1. If _value_ is *undefined*, return *undefined*. 1. Return the PropertyDescriptor { [[Value]]: _value_, [[Writable]]: *true*, [[Enumerable]]: *true*, [[Configurable]]: *true* }. 1. Return OrdinaryGetOwnProperty(_O_, _P_).
- +

[[HasProperty]] ( _P_: a property key, @@ -14527,7 +14527,7 @@

for
-
an Integer-Indexed exotic object _O_
+
a TypedArray _O_
1. If _P_ is a String, then @@ -14537,7 +14537,7 @@

- +

[[DefineOwnProperty]] ( _P_: a property key, @@ -14546,7 +14546,7 @@

for
-
an Integer-Indexed exotic object _O_
+
a TypedArray _O_
1. If _P_ is a String, then @@ -14557,13 +14557,13 @@

1. If _Desc_ has an [[Enumerable]] field and _Desc_.[[Enumerable]] is *false*, return *false*. 1. If IsAccessorDescriptor(_Desc_) is *true*, return *false*. 1. If _Desc_ has a [[Writable]] field and _Desc_.[[Writable]] is *false*, return *false*. - 1. If _Desc_ has a [[Value]] field, perform ? IntegerIndexedElementSet(_O_, _numericIndex_, _Desc_.[[Value]]). + 1. If _Desc_ has a [[Value]] field, perform ? TypedArraySetElement(_O_, _numericIndex_, _Desc_.[[Value]]). 1. Return *true*. 1. Return ! OrdinaryDefineOwnProperty(_O_, _P_, _Desc_). - +

[[Get]] ( _P_: a property key, @@ -14572,18 +14572,18 @@

for
-
an Integer-Indexed exotic object _O_
+
a TypedArray _O_
1. If _P_ is a String, then 1. Let _numericIndex_ be CanonicalNumericIndexString(_P_). 1. If _numericIndex_ is not *undefined*, then - 1. Return IntegerIndexedElementGet(_O_, _numericIndex_). + 1. Return TypedArrayGetElement(_O_, _numericIndex_). 1. Return ? OrdinaryGet(_O_, _P_, _Receiver_).
- +

[[Set]] ( _P_: a property key, @@ -14593,21 +14593,21 @@

for
-
an Integer-Indexed exotic object _O_
+
a TypedArray _O_
1. If _P_ is a String, then 1. Let _numericIndex_ be CanonicalNumericIndexString(_P_). 1. If _numericIndex_ is not *undefined*, then 1. If SameValue(_O_, _Receiver_) is *true*, then - 1. Perform ? IntegerIndexedElementSet(_O_, _numericIndex_, _V_). + 1. Perform ? TypedArraySetElement(_O_, _numericIndex_, _V_). 1. Return *true*. 1. If IsValidIntegerIndex(_O_, _numericIndex_) is *false*, return *true*. 1. Return ? OrdinarySet(_O_, _P_, _V_, _Receiver_).
- +

[[Delete]] ( _P_: a property key, @@ -14615,7 +14615,7 @@

for
-
an Integer-Indexed exotic object _O_
+
a TypedArray _O_
1. If _P_ is a String, then @@ -14626,17 +14626,17 @@

- +

[[OwnPropertyKeys]] ( ): a normal completion containing a List of property keys

for
-
an Integer-Indexed exotic object _O_
+
a TypedArray _O_
- 1. Let _iieoRecord_ be MakeIntegerIndexedObjectWithBufferWitnessRecord(_O_, ~seq-cst~). + 1. Let _taRecord_ be MakeTypedArrayWithBufferWitnessRecord(_O_, ~seq-cst~). 1. Let _keys_ be a new empty List. - 1. If IsIntegerIndexedObjectOutOfBounds(_iieoRecord_) is *false*, then - 1. Let _length_ be IntegerIndexedObjectLength(_iieoRecord_). + 1. If IsTypedArrayOutOfBounds(_taRecord_) is *false*, then + 1. Let _length_ be TypedArrayLength(_taRecord_). 1. For each integer _i_ such that 0 ≤ _i_ < _length_, in ascending order, do 1. Append ! ToString(𝔽(_i_)) to _keys_. 1. For each own property key _P_ of _O_ such that _P_ is a String and _P_ is not an integer index, in ascending chronological order of property creation, do @@ -14647,11 +14647,11 @@

[[OwnPropertyKeys]] ( ): a normal completion containing a List of property k - -

Integer-Indexed Object With Buffer Witness Records

-

An Integer-Indexed Object With Buffer Witness Record is a Record value used to encapsulate an Integer-Indexed object along with a cached byte length of the viewed buffer. It is used to help ensure there is a single shared memory read event of the byte length data block when the viewed buffer is a growable SharedArrayBuffer.

-

Integer-Indexed Object With Buffer Witness Records have the fields listed in .

- + +

TypedArray With Buffer Witness Records

+

An TypedArray With Buffer Witness Record is a Record value used to encapsulate a TypedArray along with a cached byte length of the viewed buffer. It is used to help ensure there is a single shared memory read event of the byte length data block when the viewed buffer is a growable SharedArrayBuffer.

+

TypedArray With Buffer Witness Records have the fields listed in .

+ @@ -14690,12 +14690,12 @@

Integer-Indexed Object With Buffer Witness Records

- +

- MakeIntegerIndexedObjectWithBufferWitnessRecord ( - _obj_: an Integer-Indexed exotic object, + MakeTypedArrayWithBufferWitnessRecord ( + _obj_: a TypedArray, _order_: ~seq-cst~ or ~unordered~, - ): an Integer-Indexed Object With Buffer Witness Record + ): a TypedArray With Buffer Witness Record

@@ -14705,79 +14705,79 @@

1. Let _byteLength_ be ~detached~. 1. Else, 1. Let _byteLength_ be ArrayBufferByteLength(_buffer_, _order_). - 1. Return the Integer-Indexed Object With Buffer Witness Record { [[Object]]: _obj_, [[CachedBufferByteLength]]: _byteLength_ }. + 1. Return the TypedArray With Buffer Witness Record { [[Object]]: _obj_, [[CachedBufferByteLength]]: _byteLength_ }. - +

- IntegerIndexedObjectCreate ( + TypedArrayCreate ( _prototype_: an Object, - ): an Integer-Indexed exotic object + ): a TypedArray

description
-
It is used to specify the creation of new Integer-Indexed exotic objects.
+
It is used to specify the creation of new TypedArrays.
1. Let _internalSlotsList_ be « [[Prototype]], [[Extensible]], [[ViewedArrayBuffer]], [[TypedArrayName]], [[ContentType]], [[ByteLength]], [[ByteOffset]], [[ArrayLength]] ». 1. Let _A_ be MakeBasicObject(_internalSlotsList_). - 1. Set _A_.[[GetOwnProperty]] as specified in . - 1. Set _A_.[[HasProperty]] as specified in . - 1. Set _A_.[[DefineOwnProperty]] as specified in . - 1. Set _A_.[[Get]] as specified in . - 1. Set _A_.[[Set]] as specified in . - 1. Set _A_.[[Delete]] as specified in . - 1. Set _A_.[[OwnPropertyKeys]] as specified in . + 1. Set _A_.[[GetOwnProperty]] as specified in . + 1. Set _A_.[[HasProperty]] as specified in . + 1. Set _A_.[[DefineOwnProperty]] as specified in . + 1. Set _A_.[[Get]] as specified in . + 1. Set _A_.[[Set]] as specified in . + 1. Set _A_.[[Delete]] as specified in . + 1. Set _A_.[[OwnPropertyKeys]] as specified in . 1. Set _A_.[[Prototype]] to _prototype_. 1. Return _A_.
- +

- IntegerIndexedObjectByteLength ( - _iieoRecord_: an Integer-Indexed Object With Buffer Witness Record, + TypedArrayByteLength ( + _taRecord_: a TypedArray With Buffer Witness Record, ): a non-negative integer

- 1. If IsIntegerIndexedObjectOutOfBounds(_iieoRecord_) is *true*, return 0. - 1. Let _length_ be IntegerIndexedObjectLength(_iieoRecord_). + 1. If IsTypedArrayOutOfBounds(_taRecord_) is *true*, return 0. + 1. Let _length_ be TypedArrayLength(_taRecord_). 1. If _length_ = 0, return 0. - 1. Let _O_ be _iieoRecord_.[[Object]]. + 1. Let _O_ be _taRecord_.[[Object]]. 1. If _O_.[[ByteLength]] is not ~auto~, return _O_.[[ByteLength]]. 1. Let _elementSize_ be TypedArrayElementSize(_O_). 1. Return _length_ × _elementSize_.
- +

- IntegerIndexedObjectLength ( - _iieoRecord_: an Integer-Indexed Object With Buffer Witness Record, + TypedArrayLength ( + _taRecord_: a TypedArray With Buffer Witness Record, ): a non-negative integer

- 1. Assert: IsIntegerIndexedObjectOutOfBounds(_iieoRecord_) is *false*. - 1. Let _O_ be _iieoRecord_.[[Object]]. + 1. Assert: IsTypedArrayOutOfBounds(_taRecord_) is *false*. + 1. Let _O_ be _taRecord_.[[Object]]. 1. If _O_.[[ArrayLength]] is not ~auto~, return _O_.[[ArrayLength]]. 1. Assert: IsFixedLengthArrayBuffer(_O_.[[ViewedArrayBuffer]]) is *false*. 1. Let _byteOffset_ be _O_.[[ByteOffset]]. 1. Let _elementSize_ be TypedArrayElementSize(_O_). - 1. Let _byteLength_ be _iieoRecord_.[[CachedBufferByteLength]]. + 1. Let _byteLength_ be _taRecord_.[[CachedBufferByteLength]]. 1. Assert: _byteLength_ is not ~detached~. 1. Return floor((_byteLength_ - _byteOffset_) / _elementSize_).
- +

- IsIntegerIndexedObjectOutOfBounds ( - _iieoRecord_: an Integer-Indexed Object With Buffer Witness Record, + IsTypedArrayOutOfBounds ( + _taRecord_: a TypedArray With Buffer Witness Record, ): a Boolean

@@ -14785,8 +14785,8 @@

It checks if any of the object's numeric properties reference a value at an index not contained within the underlying buffer's bounds.

- 1. Let _O_ be _iieoRecord_.[[Object]]. - 1. Let _bufferByteLength_ be _iieoRecord_.[[CachedBufferByteLength]]. + 1. Let _O_ be _taRecord_.[[Object]]. + 1. Let _bufferByteLength_ be _taRecord_.[[CachedBufferByteLength]]. 1. Assert: IsDetachedBuffer(_O_.[[ViewedArrayBuffer]]) is *true* if and only if _bufferByteLength_ is ~detached~. 1. If _bufferByteLength_ is ~detached~, return *true*. 1. Let _byteOffsetStart_ be _O_.[[ByteOffset]]. @@ -14804,7 +14804,7 @@

IsValidIntegerIndex ( - _O_: an Integer-Indexed exotic object, + _O_: a TypedArray, _index_: a Number, ): a Boolean

@@ -14814,19 +14814,19 @@

1. If IsDetachedBuffer(_O_.[[ViewedArrayBuffer]]) is *true*, return *false*. 1. If IsIntegralNumber(_index_) is *false*, return *false*. 1. If _index_ is *-0*𝔽, return *false*. - 1. Let _iieoRecord_ be MakeIntegerIndexedObjectWithBufferWitnessRecord(_O_, ~unordered~). + 1. Let _taRecord_ be MakeTypedArrayWithBufferWitnessRecord(_O_, ~unordered~). 1. NOTE: Bounds checking is not a synchronizing operation when _O_'s backing buffer is a growable SharedArrayBuffer. - 1. If IsIntegerIndexedObjectOutOfBounds(_iieoRecord_) is *true*, return *false*. - 1. Let _length_ be IntegerIndexedObjectLength(_iieoRecord_). + 1. If IsTypedArrayOutOfBounds(_taRecord_) is *true*, return *false*. + 1. Let _length_ be TypedArrayLength(_taRecord_). 1. If ℝ(_index_) < 0 or ℝ(_index_) ≥ _length_, return *false*. 1. Return *true*. - +

- IntegerIndexedElementGet ( - _O_: an Integer-Indexed exotic object, + TypedArrayGetElement ( + _O_: a TypedArray, _index_: a Number, ): a Number, a BigInt, or *undefined*

@@ -14842,10 +14842,10 @@

- +

- IntegerIndexedElementSet ( - _O_: an Integer-Indexed exotic object, + TypedArraySetElement ( + _O_: a TypedArray, _index_: a Number, _value_: an ECMAScript language value, ): either a normal completion containing ~unused~ or a throw completion @@ -14871,7 +14871,7 @@

IsArrayBufferViewOutOfBounds ( - _O_: an Integer-Indexed exotic object or a DataView, + _O_: a TypedArray or a DataView, ): a Boolean

@@ -14882,8 +14882,8 @@

1. If _O_ has a [[DataView]] internal slot, then 1. Let _viewRecord_ be MakeDataViewWithBufferWitnessRecord(_O_, ~seq-cst~). 1. Return IsViewOutOfBounds(_viewRecord_). - 1. Let _iieoRecord_ be MakeIntegerIndexedObjectWithBufferWitnessRecord(_O_, ~seq-cst~). - 1. Return IsIntegerIndexedObjectOutOfBounds(_iieoRecord_). + 1. Let _taRecord_ be MakeTypedArrayWithBufferWitnessRecord(_O_, ~seq-cst~). + 1. Return IsTypedArrayOutOfBounds(_taRecord_). @@ -22271,7 +22271,7 @@

The iterator's `throw` and `return` methods are *null* and are never invoked. The iterator's `next` method processes object properties to determine whether the property key should be returned as an iterator value. Returned property keys do not include keys that are Symbols. Properties of the target object may be deleted during enumeration. A property that is deleted before it is processed by the iterator's `next` method is ignored. If new properties are added to the target object during enumeration, the newly added properties are not guaranteed to be processed in the active enumeration. A property name will be returned by the iterator's `next` method at most once in any enumeration.

Enumerating the properties of the target object includes enumerating properties of its prototype, and the prototype of the prototype, and so on, recursively; but a property of a prototype is not processed if it has the same name as a property that has already been processed by the iterator's `next` method. The values of [[Enumerable]] attributes are not considered when determining if a property of a prototype object has already been processed. The enumerable property names of prototype objects must be obtained by invoking EnumerateObjectProperties passing the prototype object as the argument. EnumerateObjectProperties must obtain the own property keys of the target object by calling its [[OwnPropertyKeys]] internal method. Property attributes of the target object must be obtained by calling its [[GetOwnProperty]] internal method.

-

In addition, if neither _O_ nor any object in its prototype chain is a Proxy exotic object, Integer-Indexed exotic object, module namespace exotic object, or implementation provided exotic object, then the iterator must behave as would the iterator given by CreateForInIterator(_O_) until one of the following occurs:

+

In addition, if neither _O_ nor any object in its prototype chain is a Proxy exotic object, TypedArray, module namespace exotic object, or implementation provided exotic object, then the iterator must behave as would the iterator given by CreateForInIterator(_O_) until one of the following occurs:

  • the value of the [[Prototype]] internal slot of _O_ or an object in its prototype chain changes,
  • a property is removed from _O_ or an object in its prototype chain,
  • @@ -40000,9 +40000,9 @@

    1. Let _index_ be 0. 1. Repeat, 1. If _array_ has a [[TypedArrayName]] internal slot, then - 1. Let _iieoRecord_ be MakeIntegerIndexedObjectWithBufferWitnessRecord(_array_, ~seq-cst~). - 1. If IsIntegerIndexedObjectOutOfBounds(_iieoRecord_) is *true*, throw a *TypeError* exception. - 1. Let _len_ be IntegerIndexedObjectLength(_iieoRecord_). + 1. Let _taRecord_ be MakeTypedArrayWithBufferWitnessRecord(_array_, ~seq-cst~). + 1. If IsTypedArrayOutOfBounds(_taRecord_) is *true*, throw a *TypeError* exception. + 1. Let _len_ be TypedArrayLength(_taRecord_). 1. Else, 1. Let _len_ be ? LengthOfArrayLike(_array_). 1. If _index_ ≥ _len_, return NormalCompletion(*undefined*). @@ -40399,8 +40399,8 @@

    Properties of the %TypedArray% Prototype Object

    %TypedArray%.prototype.at ( _index_ )

    1. Let _O_ be the *this* value. - 1. Let _iieoRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). - 1. Let _len_ be IntegerIndexedObjectLength(_iieoRecord_). + 1. Let _taRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). + 1. Let _len_ be TypedArrayLength(_taRecord_). 1. Let _relativeIndex_ be ? ToIntegerOrInfinity(_index_). 1. If _relativeIndex_ ≥ 0, then 1. Let _k_ be _relativeIndex_. @@ -40430,8 +40430,8 @@

    get %TypedArray%.prototype.byteLength

    1. Let _O_ be the *this* value. 1. Perform ? RequireInternalSlot(_O_, [[TypedArrayName]]). 1. Assert: _O_ has a [[ViewedArrayBuffer]] internal slot. - 1. Let _iieoRecord_ be MakeIntegerIndexedObjectWithBufferWitnessRecord(_O_, ~seq-cst~). - 1. Let _size_ be IntegerIndexedObjectByteLength(_iieoRecord_). + 1. Let _taRecord_ be MakeTypedArrayWithBufferWitnessRecord(_O_, ~seq-cst~). + 1. Let _size_ be TypedArrayByteLength(_taRecord_). 1. Return 𝔽(_size_).
    @@ -40443,8 +40443,8 @@

    get %TypedArray%.prototype.byteOffset

    1. Let _O_ be the *this* value. 1. Perform ? RequireInternalSlot(_O_, [[TypedArrayName]]). 1. Assert: _O_ has a [[ViewedArrayBuffer]] internal slot. - 1. Let _iieoRecord_ be MakeIntegerIndexedObjectWithBufferWitnessRecord(_O_, ~seq-cst~). - 1. If IsIntegerIndexedObjectOutOfBounds(_iieoRecord_) is *true*, return *+0*𝔽. + 1. Let _taRecord_ be MakeTypedArrayWithBufferWitnessRecord(_O_, ~seq-cst~). + 1. If IsTypedArrayOutOfBounds(_taRecord_) is *true*, return *+0*𝔽. 1. Let _offset_ be _O_.[[ByteOffset]]. 1. Return 𝔽(_offset_). @@ -40461,8 +40461,8 @@

    %TypedArray%.prototype.copyWithin ( _target_, _start_ [ , _end_ ] )

    This method performs the following steps when called:

    1. Let _O_ be the *this* value. - 1. Let _iieoRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). - 1. Let _len_ be IntegerIndexedObjectLength(_iieoRecord_). + 1. Let _taRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). + 1. Let _len_ be TypedArrayLength(_taRecord_). 1. Let _relativeTarget_ be ? ToIntegerOrInfinity(_target_). 1. If _relativeTarget_ = -∞, let _to_ be 0. 1. Else if _relativeTarget_ < 0, let _to_ be max(_len_ + _relativeTarget_, 0). @@ -40479,9 +40479,9 @@

    %TypedArray%.prototype.copyWithin ( _target_, _start_ [ , _end_ ] )

    1. If _count_ > 0, then 1. NOTE: The copying must be performed in a manner that preserves the bit-level encoding of the source data. 1. Let _buffer_ be _O_.[[ViewedArrayBuffer]]. - 1. Set _iieoRecord_ to MakeIntegerIndexedObjectWithBufferWitnessRecord(_O_, ~seq-cst~). - 1. If IsIntegerIndexedObjectOutOfBounds(_iieoRecord_) is *true*, throw a *TypeError* exception. - 1. Set _len_ to IntegerIndexedObjectLength(_iieoRecord_). + 1. Set _taRecord_ to MakeTypedArrayWithBufferWitnessRecord(_O_, ~seq-cst~). + 1. If IsTypedArrayOutOfBounds(_taRecord_) is *true*, throw a *TypeError* exception. + 1. Set _len_ to TypedArrayLength(_taRecord_). 1. Let _elementSize_ be TypedArrayElementSize(_O_). 1. Let _byteOffset_ be _O_.[[ByteOffset]]. 1. Let _bufferByteLimit_ be _len_ × _elementSize_ + _byteOffset_. @@ -40523,8 +40523,8 @@

    %TypedArray%.prototype.every ( _callbackfn_ [ , _thisArg_ ] )

    This method performs the following steps when called:

    1. Let _O_ be the *this* value. - 1. Let _iieoRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). - 1. Let _len_ be IntegerIndexedObjectLength(_iieoRecord_). + 1. Let _taRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). + 1. Let _len_ be TypedArrayLength(_taRecord_). 1. If IsCallable(_callbackfn_) is *false*, throw a *TypeError* exception. 1. Let _k_ be 0. 1. Repeat, while _k_ < _len_, @@ -40544,8 +40544,8 @@

    %TypedArray%.prototype.fill ( _value_ [ , _start_ [ , _end_ ] ] )

    This method performs the following steps when called:

    1. Let _O_ be the *this* value. - 1. Let _iieoRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). - 1. Let _len_ be IntegerIndexedObjectLength(_iieoRecord_). + 1. Let _taRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). + 1. Let _len_ be TypedArrayLength(_taRecord_). 1. If _O_.[[ContentType]] is ~bigint~, set _value_ to ? ToBigInt(_value_). 1. Otherwise, set _value_ to ? ToNumber(_value_). 1. Let _relativeStart_ be ? ToIntegerOrInfinity(_start_). @@ -40556,9 +40556,9 @@

    %TypedArray%.prototype.fill ( _value_ [ , _start_ [ , _end_ ] ] )

    1. If _relativeEnd_ = -∞, let _final_ be 0. 1. Else if _relativeEnd_ < 0, let _final_ be max(_len_ + _relativeEnd_, 0). 1. Else, let _final_ be min(_relativeEnd_, _len_). - 1. Set _iieoRecord_ to MakeIntegerIndexedObjectWithBufferWitnessRecord(_O_, ~seq-cst~). - 1. If IsIntegerIndexedObjectOutOfBounds(_iieoRecord_) is *true*, throw a *TypeError* exception. - 1. Set _len_ to IntegerIndexedObjectLength(_iieoRecord_). + 1. Set _taRecord_ to MakeTypedArrayWithBufferWitnessRecord(_O_, ~seq-cst~). + 1. If IsTypedArrayOutOfBounds(_taRecord_) is *true*, throw a *TypeError* exception. + 1. Set _len_ to TypedArrayLength(_taRecord_). 1. Set _final_ to min(_final_, _len_). 1. Repeat, while _k_ < _final_, 1. Let _Pk_ be ! ToString(𝔽(_k_)). @@ -40574,8 +40574,8 @@

    %TypedArray%.prototype.filter ( _callbackfn_ [ , _thisArg_ ] )

    This method performs the following steps when called:

    1. Let _O_ be the *this* value. - 1. Let _iieoRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). - 1. Let _len_ be IntegerIndexedObjectLength(_iieoRecord_). + 1. Let _taRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). + 1. Let _len_ be TypedArrayLength(_taRecord_). 1. If IsCallable(_callbackfn_) is *false*, throw a *TypeError* exception. 1. Let _kept_ be a new empty List. 1. Let _captured_ be 0. @@ -40604,8 +40604,8 @@

    %TypedArray%.prototype.find ( _predicate_ [ , _thisArg_ ] )

    This method performs the following steps when called:

    1. Let _O_ be the *this* value. - 1. Let _iieoRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). - 1. Let _len_ be IntegerIndexedObjectLength(_iieoRecord_). + 1. Let _taRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). + 1. Let _len_ be TypedArrayLength(_taRecord_). 1. Let _findRec_ be ? FindViaPredicate(_O_, _len_, ~ascending~, _predicate_, _thisArg_). 1. Return _findRec_.[[Value]]. @@ -40618,8 +40618,8 @@

    %TypedArray%.prototype.findIndex ( _predicate_ [ , _thisArg_ ] )

    This method performs the following steps when called:

    1. Let _O_ be the *this* value. - 1. Let _iieoRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). - 1. Let _len_ be IntegerIndexedObjectLength(_iieoRecord_). + 1. Let _taRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). + 1. Let _len_ be TypedArrayLength(_taRecord_). 1. Let _findRec_ be ? FindViaPredicate(_O_, _len_, ~ascending~, _predicate_, _thisArg_). 1. Return _findRec_.[[Index]]. @@ -40632,8 +40632,8 @@

    %TypedArray%.prototype.findLast ( _predicate_ [ , _thisArg_ ] )

    This method performs the following steps when called:

    1. Let _O_ be the *this* value. - 1. Let _iieoRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). - 1. Let _len_ be IntegerIndexedObjectLength(_iieoRecord_). + 1. Let _taRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). + 1. Let _len_ be TypedArrayLength(_taRecord_). 1. Let _findRec_ be ? FindViaPredicate(_O_, _len_, ~descending~, _predicate_, _thisArg_). 1. Return _findRec_.[[Value]]. @@ -40646,8 +40646,8 @@

    %TypedArray%.prototype.findLastIndex ( _predicate_ [ , _thisArg_ ] )

    This method performs the following steps when called:

    1. Let _O_ be the *this* value. - 1. Let _iieoRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). - 1. Let _len_ be IntegerIndexedObjectLength(_iieoRecord_). + 1. Let _taRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). + 1. Let _len_ be TypedArrayLength(_taRecord_). 1. Let _findRec_ be ? FindViaPredicate(_O_, _len_, ~descending~, _predicate_, _thisArg_). 1. Return _findRec_.[[Index]]. @@ -40660,8 +40660,8 @@

    %TypedArray%.prototype.forEach ( _callbackfn_ [ , _thisArg_ ] )

    This method performs the following steps when called:

    1. Let _O_ be the *this* value. - 1. Let _iieoRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). - 1. Let _len_ be IntegerIndexedObjectLength(_iieoRecord_). + 1. Let _taRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). + 1. Let _len_ be TypedArrayLength(_taRecord_). 1. If IsCallable(_callbackfn_) is *false*, throw a *TypeError* exception. 1. Let _k_ be 0. 1. Repeat, while _k_ < _len_, @@ -40680,8 +40680,8 @@

    %TypedArray%.prototype.includes ( _searchElement_ [ , _fromIndex_ ] )

    This method performs the following steps when called:

    1. Let _O_ be the *this* value. - 1. Let _iieoRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). - 1. Let _len_ be IntegerIndexedObjectLength(_iieoRecord_). + 1. Let _taRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). + 1. Let _len_ be TypedArrayLength(_taRecord_). 1. If _len_ = 0, return *false*. 1. Let _n_ be ? ToIntegerOrInfinity(_fromIndex_). 1. Assert: If _fromIndex_ is *undefined*, then _n_ is 0. @@ -40707,8 +40707,8 @@

    %TypedArray%.prototype.indexOf ( _searchElement_ [ , _fromIndex_ ] )

    This method performs the following steps when called:

    1. Let _O_ be the *this* value. - 1. Let _iieoRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). - 1. Let _len_ be IntegerIndexedObjectLength(_iieoRecord_). + 1. Let _taRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). + 1. Let _len_ be TypedArrayLength(_taRecord_). 1. If _len_ = 0, return *-1*𝔽. 1. Let _n_ be ? ToIntegerOrInfinity(_fromIndex_). 1. Assert: If _fromIndex_ is *undefined*, then _n_ is 0. @@ -40736,8 +40736,8 @@

    %TypedArray%.prototype.join ( _separator_ )

    This method performs the following steps when called:

    1. Let _O_ be the *this* value. - 1. Let _iieoRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). - 1. Let _len_ be IntegerIndexedObjectLength(_iieoRecord_). + 1. Let _taRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). + 1. Let _len_ be TypedArrayLength(_taRecord_). 1. If _separator_ is *undefined*, let _sep_ be *","*. 1. Else, let _sep_ be ? ToString(_separator_). 1. Let _R_ be the empty String. @@ -40769,8 +40769,8 @@

    %TypedArray%.prototype.lastIndexOf ( _searchElement_ [ , _fromIndex_ ] )

    This method performs the following steps when called:

    1. Let _O_ be the *this* value. - 1. Let _iieoRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). - 1. Let _len_ be IntegerIndexedObjectLength(_iieoRecord_). + 1. Let _taRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). + 1. Let _len_ be TypedArrayLength(_taRecord_). 1. If _len_ = 0, return *-1*𝔽. 1. If _fromIndex_ is present, let _n_ be ? ToIntegerOrInfinity(_fromIndex_); else let _n_ be _len_ - 1. 1. If _n_ = -∞, return *-1*𝔽. @@ -40796,9 +40796,9 @@

    get %TypedArray%.prototype.length

    1. Let _O_ be the *this* value. 1. Perform ? RequireInternalSlot(_O_, [[TypedArrayName]]). 1. Assert: _O_ has [[ViewedArrayBuffer]] and [[ArrayLength]] internal slots. - 1. Let _iieoRecord_ be MakeIntegerIndexedObjectWithBufferWitnessRecord(_O_, ~seq-cst~). - 1. If IsIntegerIndexedObjectOutOfBounds(_iieoRecord_) is *true*, return *+0*𝔽. - 1. Let _length_ be IntegerIndexedObjectLength(_iieoRecord_). + 1. Let _taRecord_ be MakeTypedArrayWithBufferWitnessRecord(_O_, ~seq-cst~). + 1. If IsTypedArrayOutOfBounds(_taRecord_) is *true*, return *+0*𝔽. + 1. Let _length_ be TypedArrayLength(_taRecord_). 1. Return 𝔽(_length_).

    This function is not generic. The *this* value must be an object with a [[TypedArrayName]] internal slot.

    @@ -40810,8 +40810,8 @@

    %TypedArray%.prototype.map ( _callbackfn_ [ , _thisArg_ ] )

    This method performs the following steps when called:

    1. Let _O_ be the *this* value. - 1. Let _iieoRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). - 1. Let _len_ be IntegerIndexedObjectLength(_iieoRecord_). + 1. Let _taRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). + 1. Let _len_ be TypedArrayLength(_taRecord_). 1. If IsCallable(_callbackfn_) is *false*, throw a *TypeError* exception. 1. Let _A_ be ? TypedArraySpeciesCreate(_O_, « 𝔽(_len_) »). 1. Let _k_ be 0. @@ -40832,8 +40832,8 @@

    %TypedArray%.prototype.reduce ( _callbackfn_ [ , _initialValue_ ] )

    This method performs the following steps when called:

    1. Let _O_ be the *this* value. - 1. Let _iieoRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). - 1. Let _len_ be IntegerIndexedObjectLength(_iieoRecord_). + 1. Let _taRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). + 1. Let _len_ be TypedArrayLength(_taRecord_). 1. If IsCallable(_callbackfn_) is *false*, throw a *TypeError* exception. 1. If _len_ = 0 and _initialValue_ is not present, throw a *TypeError* exception. 1. Let _k_ be 0. @@ -40860,8 +40860,8 @@

    %TypedArray%.prototype.reduceRight ( _callbackfn_ [ , _initialValue_ ] )

    This method performs the following steps when called:

    1. Let _O_ be the *this* value. - 1. Let _iieoRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). - 1. Let _len_ be IntegerIndexedObjectLength(_iieoRecord_). + 1. Let _taRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). + 1. Let _len_ be TypedArrayLength(_taRecord_). 1. If IsCallable(_callbackfn_) is *false*, throw a *TypeError* exception. 1. If _len_ = 0 and _initialValue_ is not present, throw a *TypeError* exception. 1. Let _k_ be _len_ - 1. @@ -40888,8 +40888,8 @@

    %TypedArray%.prototype.reverse ( )

    This method performs the following steps when called:

    1. Let _O_ be the *this* value. - 1. Let _iieoRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). - 1. Let _len_ be IntegerIndexedObjectLength(_iieoRecord_). + 1. Let _taRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). + 1. Let _len_ be TypedArrayLength(_taRecord_). 1. Let _middle_ be floor(_len_ / 2). 1. Let _lower_ be 0. 1. Repeat, while _lower_ ≠ _middle_, @@ -40938,13 +40938,13 @@

1. Let _targetBuffer_ be _target_.[[ViewedArrayBuffer]]. - 1. Let _targetRecord_ be MakeIntegerIndexedObjectWithBufferWitnessRecord(_target_, ~seq-cst~). - 1. If IsIntegerIndexedObjectOutOfBounds(_targetRecord_) is *true*, throw a *TypeError* exception. - 1. Let _targetLength_ be IntegerIndexedObjectLength(_targetRecord_). + 1. Let _targetRecord_ be MakeTypedArrayWithBufferWitnessRecord(_target_, ~seq-cst~). + 1. If IsTypedArrayOutOfBounds(_targetRecord_) is *true*, throw a *TypeError* exception. + 1. Let _targetLength_ be TypedArrayLength(_targetRecord_). 1. Let _srcBuffer_ be _source_.[[ViewedArrayBuffer]]. - 1. Let _srcRecord_ be MakeIntegerIndexedObjectWithBufferWitnessRecord(_source_, ~seq-cst~). - 1. If IsIntegerIndexedObjectOutOfBounds(_srcRecord_) is *true*, throw a *TypeError* exception. - 1. Let _srcLength_ be IntegerIndexedObjectLength(_srcRecord_). + 1. Let _srcRecord_ be MakeTypedArrayWithBufferWitnessRecord(_source_, ~seq-cst~). + 1. If IsTypedArrayOutOfBounds(_srcRecord_) is *true*, throw a *TypeError* exception. + 1. Let _srcLength_ be TypedArrayLength(_srcRecord_). 1. Let _targetType_ be TypedArrayElementType(_target_). 1. Let _targetElementSize_ be TypedArrayElementSize(_target_). 1. Let _targetByteOffset_ be _target_.[[ByteOffset]]. @@ -40956,7 +40956,7 @@

1. If _target_.[[ContentType]] is not _source_.[[ContentType]], throw a *TypeError* exception. 1. If IsSharedArrayBuffer(_srcBuffer_) is *true*, IsSharedArrayBuffer(_targetBuffer_) is *true*, and _srcBuffer_.[[ArrayBufferData]] is _targetBuffer_.[[ArrayBufferData]], let _sameSharedArrayBuffer_ be *true*; otherwise, let _sameSharedArrayBuffer_ be *false*. 1. If SameValue(_srcBuffer_, _targetBuffer_) is *true* or _sameSharedArrayBuffer_ is *true*, then - 1. Let _srcByteLength_ be IntegerIndexedObjectByteLength(_srcRecord_). + 1. Let _srcByteLength_ be TypedArrayByteLength(_srcRecord_). 1. Set _srcBuffer_ to ? CloneArrayBuffer(_srcBuffer_, _srcByteOffset_, _srcByteLength_). 1. Let _srcByteIndex_ be 0. 1. Else, @@ -40993,9 +40993,9 @@

It sets multiple values in _target_, starting at index _targetOffset_, reading the values from _source_.
- 1. Let _targetRecord_ be MakeIntegerIndexedObjectWithBufferWitnessRecord(_target_, ~seq-cst~). - 1. If IsIntegerIndexedObjectOutOfBounds(_targetRecord_) is *true*, throw a *TypeError* exception. - 1. Let _targetLength_ be IntegerIndexedObjectLength(_targetRecord_). + 1. Let _targetRecord_ be MakeTypedArrayWithBufferWitnessRecord(_target_, ~seq-cst~). + 1. If IsTypedArrayOutOfBounds(_targetRecord_) is *true*, throw a *TypeError* exception. + 1. Let _targetLength_ be TypedArrayLength(_targetRecord_). 1. Let _src_ be ? ToObject(_source_). 1. Let _srcLength_ be ? LengthOfArrayLike(_src_). 1. If _targetOffset_ = +∞, throw a *RangeError* exception. @@ -41005,7 +41005,7 @@

1. Let _Pk_ be ! ToString(𝔽(_k_)). 1. Let _value_ be ? Get(_src_, _Pk_). 1. Let _targetIndex_ be 𝔽(_targetOffset_ + _k_). - 1. Perform ? IntegerIndexedElementSet(_target_, _targetIndex_, _value_). + 1. Perform ? TypedArraySetElement(_target_, _targetIndex_, _value_). 1. Set _k_ to _k_ + 1. 1. Return ~unused~. @@ -41018,8 +41018,8 @@

%TypedArray%.prototype.slice ( _start_, _end_ )

This method performs the following steps when called:

1. Let _O_ be the *this* value. - 1. Let _iieoRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). - 1. Let _len_ be IntegerIndexedObjectLength(_iieoRecord_). + 1. Let _taRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). + 1. Let _len_ be TypedArrayLength(_taRecord_). 1. Let _relativeStart_ be ? ToIntegerOrInfinity(_start_). 1. If _relativeStart_ = -∞, let _k_ be 0. 1. Else if _relativeStart_ < 0, let _k_ be max(_len_ + _relativeStart_, 0). @@ -41031,9 +41031,9 @@

%TypedArray%.prototype.slice ( _start_, _end_ )

1. Let _count_ be max(_final_ - _k_, 0). 1. Let _A_ be ? TypedArraySpeciesCreate(_O_, « 𝔽(_count_) »). 1. If _count_ > 0, then - 1. Set _iieoRecord_ to MakeIntegerIndexedObjectWithBufferWitnessRecord(_O_, ~seq-cst~). - 1. If IsIntegerIndexedObjectOutOfBounds(_iieoRecord_) is *true*, throw a *TypeError* exception. - 1. Set _len_ to IntegerIndexedObjectLength(_iieoRecord_). + 1. Set _taRecord_ to MakeTypedArrayWithBufferWitnessRecord(_O_, ~seq-cst~). + 1. If IsTypedArrayOutOfBounds(_taRecord_) is *true*, throw a *TypeError* exception. + 1. Set _len_ to TypedArrayLength(_taRecord_). 1. Set _final_ to min(_final_, _len_). 1. Let _srcType_ be TypedArrayElementType(_O_). 1. Let _targetType_ be TypedArrayElementType(_A_). @@ -41070,8 +41070,8 @@

%TypedArray%.prototype.some ( _callbackfn_ [ , _thisArg_ ] )

This method performs the following steps when called:

1. Let _O_ be the *this* value. - 1. Let _iieoRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). - 1. Let _len_ be IntegerIndexedObjectLength(_iieoRecord_). + 1. Let _taRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). + 1. Let _len_ be TypedArrayLength(_taRecord_). 1. If IsCallable(_callbackfn_) is *false*, throw a *TypeError* exception. 1. Let _k_ be 0. 1. Repeat, while _k_ < _len_, @@ -41093,8 +41093,8 @@

%TypedArray%.prototype.sort ( _comparefn_ )

1. If _comparefn_ is not *undefined* and IsCallable(_comparefn_) is *false*, throw a *TypeError* exception. 1. Let _obj_ be the *this* value. - 1. Let _iieoRecord_ be ? ValidateTypedArray(_obj_, ~seq-cst~). - 1. Let _len_ be IntegerIndexedObjectLength(_iieoRecord_). + 1. Let _taRecord_ be ? ValidateTypedArray(_obj_, ~seq-cst~). + 1. Let _len_ be TypedArrayLength(_taRecord_). 1. NOTE: The following closure performs a numeric comparison rather than the string comparison used in . 1. Let _SortCompare_ be a new Abstract Closure with parameters (_x_, _y_) that captures _comparefn_ and performs the following steps when called: 1. Return ? CompareTypedArrayElements(_x_, _y_, _comparefn_). @@ -41119,11 +41119,11 @@

%TypedArray%.prototype.subarray ( _begin_, _end_ )

1. Perform ? RequireInternalSlot(_O_, [[TypedArrayName]]). 1. Assert: _O_ has a [[ViewedArrayBuffer]] internal slot. 1. Let _buffer_ be _O_.[[ViewedArrayBuffer]]. - 1. Let _srcRecord_ be MakeIntegerIndexedObjectWithBufferWitnessRecord(_O_, ~seq-cst~). - 1. If IsIntegerIndexedObjectOutOfBounds(_srcRecord_) is *true*, then + 1. Let _srcRecord_ be MakeTypedArrayWithBufferWitnessRecord(_O_, ~seq-cst~). + 1. If IsTypedArrayOutOfBounds(_srcRecord_) is *true*, then 1. Let _srcLength_ be 0. 1. Else, - 1. Let _srcLength_ be IntegerIndexedObjectLength(_srcRecord_). + 1. Let _srcLength_ be TypedArrayLength(_srcRecord_). 1. Let _relativeBegin_ be ? ToIntegerOrInfinity(_begin_). 1. If _relativeBegin_ = -∞, let _beginIndex_ be 0. 1. Else if _relativeBegin_ < 0, let _beginIndex_ be max(_srcLength_ + _relativeBegin_, 0). @@ -41147,7 +41147,7 @@

%TypedArray%.prototype.subarray ( _begin_, _end_ )

%TypedArray%.prototype.toLocaleString ( [ _reserved1_ [ , _reserved2_ ] ] )

-

This is a distinct method that implements the same algorithm as `Array.prototype.toLocaleString` as defined in except that IntegerIndexedObjectLength is called in place of performing a [[Get]] of *"length"*. The implementation of the algorithm may be optimized with the knowledge that the *this* value has a fixed length when the underlying buffer is not resizable and whose integer-indexed properties are not sparse. However, such optimization must not introduce any observable changes in the specified behaviour of the algorithm.

+

This is a distinct method that implements the same algorithm as `Array.prototype.toLocaleString` as defined in except that TypedArrayLength is called in place of performing a [[Get]] of *"length"*. The implementation of the algorithm may be optimized with the knowledge that the *this* value has a fixed length when the underlying buffer is not resizable and whose integer-indexed properties are not sparse. However, such optimization must not introduce any observable changes in the specified behaviour of the algorithm.

This method is not generic. ValidateTypedArray is called with the *this* value and ~seq-cst~ as arguments prior to evaluating the algorithm. If its result is an abrupt completion that exception is thrown instead of evaluating the algorithm.

If the ECMAScript implementation includes the ECMA-402 Internationalization API this method is based upon the algorithm for `Array.prototype.toLocaleString` that is in the ECMA-402 specification.

@@ -41159,8 +41159,8 @@

%TypedArray%.prototype.toReversed ( )

This method performs the following steps when called:

1. Let _O_ be the *this* value. - 1. Let _iieoRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). - 1. Let _length_ be IntegerIndexedObjectLength(_iieoRecord_). + 1. Let _taRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). + 1. Let _length_ be TypedArrayLength(_taRecord_). 1. Let _A_ be ? TypedArrayCreateSameType(_O_, « 𝔽(_length_) »). 1. Let _k_ be 0. 1. Repeat, while _k_ < _length_, @@ -41179,8 +41179,8 @@

%TypedArray%.prototype.toSorted ( _comparefn_ )

1. If _comparefn_ is not *undefined* and IsCallable(_comparefn_) is *false*, throw a *TypeError* exception. 1. Let _O_ be the *this* value. - 1. Let _iieoRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). - 1. Let _len_ be IntegerIndexedObjectLength(_iieoRecord_). + 1. Let _taRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). + 1. Let _len_ be TypedArrayLength(_taRecord_). 1. Let _A_ be ? TypedArrayCreateSameType(_O_, « 𝔽(_len_) »). 1. NOTE: The following closure performs a numeric comparison rather than the string comparison used in . 1. Let _SortCompare_ be a new Abstract Closure with parameters (_x_, _y_) that captures _comparefn_ and performs the following steps when called: @@ -41214,8 +41214,8 @@

%TypedArray%.prototype.with ( _index_, _value_ )

This method performs the following steps when called:

1. Let _O_ be the *this* value. - 1. Let _iieoRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). - 1. Let _len_ be IntegerIndexedObjectLength(_iieoRecord_). + 1. Let _taRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). + 1. Let _len_ be TypedArrayLength(_taRecord_). 1. Let _relativeIndex_ be ? ToIntegerOrInfinity(_index_). 1. If _relativeIndex_ ≥ 0, let _actualIndex_ be _relativeIndex_. 1. Else, let _actualIndex_ be _len_ + _relativeIndex_. @@ -41292,10 +41292,10 @@

1. Let _newTypedArray_ be ? Construct(_constructor_, _argumentList_). - 1. Let _iieoRecord_ be ? ValidateTypedArray(_newTypedArray_, ~seq-cst~). + 1. Let _taRecord_ be ? ValidateTypedArray(_newTypedArray_, ~seq-cst~). 1. If the number of elements in _argumentList_ is 1 and _argumentList_[0] is a Number, then - 1. If IsIntegerIndexedObjectOutOfBounds(_iieoRecord_) is *true*, throw a *TypeError* exception. - 1. Let _length_ be IntegerIndexedObjectLength(_iieoRecord_). + 1. If IsTypedArrayOutOfBounds(_taRecord_) is *true*, throw a *TypeError* exception. + 1. Let _length_ be TypedArrayLength(_taRecord_). 1. If _length_ < ℝ(_argumentList_[0]), throw a *TypeError* exception. 1. Return _newTypedArray_. @@ -41326,16 +41326,16 @@

ValidateTypedArray ( _O_: an ECMAScript language value, _order_: ~seq-cst~ or ~unordered~, - ): either a normal completion containing an Integer-Indexed Object With Buffer Witness Record or a throw completion + ): either a normal completion containing a TypedArray With Buffer Witness Record or a throw completion

1. Perform ? RequireInternalSlot(_O_, [[TypedArrayName]]). 1. Assert: _O_ has a [[ViewedArrayBuffer]] internal slot. - 1. Let _iieoRecord_ be MakeIntegerIndexedObjectWithBufferWitnessRecord(_O_, _order_). - 1. If IsIntegerIndexedObjectOutOfBounds(_iieoRecord_) is *true*, throw a *TypeError* exception. - 1. Return _iieoRecord_. + 1. Let _taRecord_ be MakeTypedArrayWithBufferWitnessRecord(_O_, _order_). + 1. If IsTypedArrayOutOfBounds(_taRecord_) is *true*, throw a *TypeError* exception. + 1. Return _taRecord_.
@@ -41457,7 +41457,7 @@

1. Let _proto_ be ? GetPrototypeFromConstructor(_newTarget_, _defaultProto_). - 1. Let _obj_ be IntegerIndexedObjectCreate(_proto_). + 1. Let _obj_ be TypedArrayCreate(_proto_). 1. Assert: _obj_.[[ViewedArrayBuffer]] is *undefined*. 1. Set _obj_.[[TypedArrayName]] to _constructorName_. 1. If _constructorName_ is either *"BigInt64Array"* or *"BigUint64Array"*, set _obj_.[[ContentType]] to ~bigint~. @@ -41488,9 +41488,9 @@

1. Let _srcType_ be TypedArrayElementType(_srcArray_). 1. Let _srcElementSize_ be TypedArrayElementSize(_srcArray_). 1. Let _srcByteOffset_ be _srcArray_.[[ByteOffset]]. - 1. Let _srcRecord_ be MakeIntegerIndexedObjectWithBufferWitnessRecord(_srcArray_, ~seq-cst~). - 1. If IsIntegerIndexedObjectOutOfBounds(_srcRecord_) is *true*, throw a *TypeError* exception. - 1. Let _elementLength_ be IntegerIndexedObjectLength(_srcRecord_). + 1. Let _srcRecord_ be MakeTypedArrayWithBufferWitnessRecord(_srcArray_, ~seq-cst~). + 1. If IsTypedArrayOutOfBounds(_srcRecord_) is *true*, throw a *TypeError* exception. + 1. Let _elementLength_ be TypedArrayLength(_srcRecord_). 1. Let _byteLength_ be _elementSize_ × _elementLength_. 1. If _elementType_ is _srcType_, then 1. Let _data_ be ? CloneArrayBuffer(_srcData_, _srcByteOffset_, _byteLength_). @@ -41672,7 +41672,7 @@

_TypedArray_.prototype.constructor

Properties of _TypedArray_ Instances

-

_TypedArray_ instances are Integer-Indexed exotic objects. Each _TypedArray_ instance inherits properties from the corresponding _TypedArray_ prototype object. Each _TypedArray_ instance has the following internal slots: [[TypedArrayName]], [[ViewedArrayBuffer]], [[ByteLength]], [[ByteOffset]], and [[ArrayLength]].

+

_TypedArray_ instances are TypedArrays. Each _TypedArray_ instance inherits properties from the corresponding _TypedArray_ prototype object. Each _TypedArray_ instance has the following internal slots: [[TypedArrayName]], [[ViewedArrayBuffer]], [[ByteLength]], [[ByteOffset]], and [[ArrayLength]].

@@ -44159,37 +44159,37 @@

ValidateIntegerTypedArray ( _typedArray_: an ECMAScript language value, _waitable_: a Boolean, - ): either a normal completion containing an Integer-Indexed Object With Buffer Witness Record, or a throw completion + ): either a normal completion containing a TypedArray With Buffer Witness Record, or a throw completion

- 1. Let _iieoRecord_ be ? ValidateTypedArray(_typedArray_, ~unordered~). + 1. Let _taRecord_ be ? ValidateTypedArray(_typedArray_, ~unordered~). 1. NOTE: Bounds checking is not a synchronizing operation when _typedArray_'s backing buffer is a growable SharedArrayBuffer. 1. If _waitable_ is *true*, then 1. If _typedArray_.[[TypedArrayName]] is neither *"Int32Array"* nor *"BigInt64Array"*, throw a *TypeError* exception. 1. Else, 1. Let _type_ be TypedArrayElementType(_typedArray_). 1. If IsUnclampedIntegerElementType(_type_) is *false* and IsBigIntElementType(_type_) is *false*, throw a *TypeError* exception. - 1. Return _iieoRecord_. + 1. Return _taRecord_.

ValidateAtomicAccess ( - _iieoRecord_: an Integer-Indexed Object With Buffer Witness Record, + _taRecord_: a TypedArray With Buffer Witness Record, _requestIndex_: an ECMAScript language value, ): either a normal completion containing an integer or a throw completion

- 1. Let _length_ be IntegerIndexedObjectLength(_iieoRecord_). + 1. Let _length_ be TypedArrayLength(_taRecord_). 1. Let _accessIndex_ be ? ToIndex(_requestIndex_). 1. Assert: _accessIndex_ ≥ 0. 1. If _accessIndex_ ≥ _length_, throw a *RangeError* exception. - 1. Let _typedArray_ be _iieoRecord_.[[Object]]. + 1. Let _typedArray_ be _taRecord_.[[Object]]. 1. Let _elementSize_ be TypedArrayElementSize(_typedArray_). 1. Let _offset_ be _typedArray_.[[ByteOffset]]. 1. Return (_accessIndex_ × _elementSize_) + _offset_. @@ -44208,15 +44208,15 @@

1. If _waitable_ is not present, set _waitable_ to *false*. - 1. Let _iieoRecord_ be ? ValidateIntegerTypedArray(_typedArray_, _waitable_). - 1. Return ? ValidateAtomicAccess(_iieoRecord_, _requestIndex_). + 1. Let _taRecord_ be ? ValidateIntegerTypedArray(_typedArray_, _waitable_). + 1. Return ? ValidateAtomicAccess(_taRecord_, _requestIndex_).

RevalidateAtomicAccess ( - _typedArray_: an Integer-Indexed exotic object, + _typedArray_: a TypedArray, _byteIndexInBuffer_: an integer, ): either a normal completion containing ~unused~ or a throw completion

@@ -44225,11 +44225,11 @@

This operation revalidates the index within the backing buffer for atomic operations after all argument coercions are performed in Atomics methods, as argument coercions can have arbitrary side effects, which could cause the buffer to become out of bounds. This operation does not throw when _typedArray_'s backing buffer is a SharedArrayBuffer.
- 1. Let _iieoRecord_ be MakeIntegerIndexedObjectWithBufferWitnessRecord(_typedArray_, ~unordered~). + 1. Let _taRecord_ be MakeTypedArrayWithBufferWitnessRecord(_typedArray_, ~unordered~). 1. NOTE: Bounds checking is not a synchronizing operation when _typedArray_'s backing buffer is a growable SharedArrayBuffer. - 1. If IsIntegerIndexedObjectOutOfBounds(_iieoRecord_) is *true*, throw a *TypeError* exception. + 1. If IsTypedArrayOutOfBounds(_taRecord_) is *true*, throw a *TypeError* exception. 1. Assert: _byteIndexInBuffer_ ≥ _typedArray_.[[ByteOffset]]. - 1. If _byteIndexInBuffer_ ≥ _iieoRecord_.[[CachedBufferByteLength]], throw a *RangeError* exception. + 1. If _byteIndexInBuffer_ ≥ _taRecord_.[[CachedBufferByteLength]], throw a *RangeError* exception. 1. Return ~unused~. @@ -44428,10 +44428,10 @@

- 1. Let _iieoRecord_ be ? ValidateIntegerTypedArray(_typedArray_, *true*). - 1. Let _buffer_ be _iieoRecord_.[[Object]].[[ViewedArrayBuffer]]. + 1. Let _taRecord_ be ? ValidateIntegerTypedArray(_typedArray_, *true*). + 1. Let _buffer_ be _taRecord_.[[Object]].[[ViewedArrayBuffer]]. 1. If IsSharedArrayBuffer(_buffer_) is *false*, throw a *TypeError* exception. - 1. Let _i_ be ? ValidateAtomicAccess(_iieoRecord_, _index_). + 1. Let _i_ be ? ValidateAtomicAccess(_taRecord_, _index_). 1. Let _arrayTypeName_ be _typedArray_.[[TypedArrayName]]. 1. If _arrayTypeName_ is *"BigInt64Array"*, let _v_ be ? ToBigInt64(_value_). 1. Else, let _v_ be ? ToInt32(_value_). From 3a9c9dcb9dd06c3dc46147709fbbd34e98474c32 Mon Sep 17 00:00:00 2001 From: Jordan Harband Date: Tue, 28 Nov 2023 09:47:18 -0800 Subject: [PATCH 04/69] Normative: add `Object.groupBy` and `Map.groupBy` (#3176) See https://tc39.es/proposal-array-grouping/ --- spec.html | 96 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) diff --git a/spec.html b/spec.html index d035a9845a..3797be9a62 100644 --- a/spec.html +++ b/spec.html @@ -6769,6 +6769,65 @@

1. Return ~unused~. + + +

+ AddValueToKeyedGroup ( + _groups_: a List of Records with fields [[Key]] (an ECMAScript language value) and [[Elements]] (a List of ECMAScript language values), + _key_: an ECMAScript language value, + _value_: an ECMAScript language value, + ): ~unused~ +

+
+
+ + 1. For each Record { [[Key]], [[Elements]] } _g_ of _groups_, do + 1. If SameValue(_g_.[[Key]], _key_) is *true*, then + 1. Assert: Exactly one element of _groups_ meets this criterion. + 1. Append _value_ to _g_.[[Elements]]. + 1. Return ~unused~. + 1. Let _group_ be the Record { [[Key]]: _key_, [[Elements]]: « _value_ » }. + 1. Append _group_ to _groups_. + 1. Return ~unused~. + +
+ + +

+ GroupBy ( + _items_: an ECMAScript language value, + _callbackfn_: an ECMAScript language value, + _keyCoercion_: ~property~ or ~zero~, + ): either a normal completion containing a List of Records with fields [[Key]] (an ECMAScript language value) and [[Elements]] (a List of ECMAScript language values), or a throw completion +

+
+
+ + 1. Perform ? RequireObjectCoercible(_items_). + 1. If IsCallable(_callbackfn_) is *false*, throw a *TypeError* exception. + 1. Let _groups_ be a new empty List. + 1. Let _iteratorRecord_ be ? GetIterator(_items_, ~sync~). + 1. Let _k_ be 0. + 1. Repeat, + 1. If _k_ ≥ 253 - 1, then + 1. Let _error_ be ThrowCompletion(a newly created *TypeError* object). + 1. Return ? IteratorClose(_iteratorRecord_, _error_). + 1. Let _next_ be ? IteratorStep(_iteratorRecord_). + 1. If _next_ is *false*, then + 1. Return _groups_. + 1. Let _value_ be ? IteratorValue(_next_). + 1. Let _key_ be Completion(Call(_callbackfn_, *undefined*, « _value_, 𝔽(_k_) »)). + 1. IfAbruptCloseIterator(_key_, _iteratorRecord_). + 1. If _keyCoercion_ is ~property~, then + 1. Set _key_ to Completion(ToPropertyKey(_key_)). + 1. IfAbruptCloseIterator(_key_, _iteratorRecord_). + 1. Else, + 1. Assert: _keyCoercion_ is ~zero~. + 1. If _key_ is *-0*𝔽, set _key_ to *+0*𝔽. + 1. Perform AddValueToKeyedGroup(_groups_, _key_, _value_). + 1. Set _k_ to _k_ + 1. + +
@@ -29795,6 +29854,24 @@

Object.getPrototypeOf ( _O_ )

+ +

Object.groupBy ( _items_, _callbackfn_ )

+ +

_callbackfn_ should be a function that accepts two arguments. `groupBy` calls _callbackfn_ once for each element in _items_, in ascending order, and constructs a new object. Each value returned by _callbackfn_ is coerced to a property key. For each such property key, the result object has a property whose key is that property key and whose value is an array containing all the elements for which the _callbackfn_ return value coerced to that key.

+

_callbackfn_ is called with two arguments: the value of the element and the index of the element.

+

The return value of `groupBy` is an object that does not inherit from %Object.prototype%.

+
+

This function performs the following steps when called:

+ + 1. Let _groups_ be ? GroupBy(_items_, _callbackfn_, ~property~). + 1. Let _obj_ be OrdinaryObjectCreate(*null*). + 1. For each Record { [[Key]], [[Elements]] } _g_ of _groups_, do + 1. Let _elements_ be CreateArrayFromList(_g_.[[Elements]]). + 1. Perform ! CreateDataPropertyOrThrow(_obj_, _g_.[[Key]], _elements_). + 1. Return _obj_. + +
+

Object.hasOwn ( _O_, _P_ )

This function performs the following steps when called:

@@ -41755,6 +41832,25 @@

Properties of the Map Constructor

  • has the following properties:
  • + +

    Map.groupBy ( _items_, _callbackfn_ )

    + +

    _callbackfn_ should be a function that accepts two arguments. `groupBy` calls _callbackfn_ once for each element in _items_, in ascending order, and constructs a new Map. Each value returned by _callbackfn_ is used as a key in the Map. For each such key, the result Map has an entry whose key is that key and whose value is an array containing all the elements for which _callbackfn_ returned that key.

    +

    _callbackfn_ is called with two arguments: the value of the element and the index of the element.

    +

    The return value of `groupBy` is a Map.

    +
    +

    This function performs the following steps when called:

    + + 1. Let _groups_ be ? GroupBy(_items_, _callbackfn_, ~zero~). + 1. Let _map_ be ! Construct(%Map%). + 1. For each Record { [[Key]], [[Elements]] } _g_ of _groups_, do + 1. Let _elements_ be CreateArrayFromList(_g_.[[Elements]]). + 1. Let _entry_ be the Record { [[Key]]: _g_.[[Key]], [[Value]]: _elements_ }. + 1. Append _entry_ to _map_.[[MapData]]. + 1. Return _map_. + +
    +

    Map.prototype

    The initial value of `Map.prototype` is the Map prototype object.

    From 11cbf729f31e1bb436e6d02dd623d9be02a03c77 Mon Sep 17 00:00:00 2001 From: Peter Klecha Date: Mon, 4 Dec 2023 08:25:14 -0800 Subject: [PATCH 05/69] Normative: add `Promise.withResolvers` (#3179) --- spec.html | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/spec.html b/spec.html index 3797be9a62..7930ed6cf4 100644 --- a/spec.html +++ b/spec.html @@ -47029,6 +47029,20 @@

    + +

    Promise.withResolvers ( )

    +

    This function returns an object with three properties: a new promise together with the `resolve` and `reject` functions associated with it.

    + + 1. Let _C_ be the *this* value. + 1. Let _promiseCapability_ be ? NewPromiseCapability(_C_). + 1. Let _obj_ be OrdinaryObjectCreate(%Object.prototype%). + 1. Perform ! CreateDataPropertyOrThrow(_obj_, *"promise"*, _promiseCapability_.[[Promise]]). + 1. Perform ! CreateDataPropertyOrThrow(_obj_, *"resolve"*, _promiseCapability_.[[Resolve]]). + 1. Perform ! CreateDataPropertyOrThrow(_obj_, *"reject"*, _promiseCapability_.[[Reject]]). + 1. Return _obj_. + +
    +

    get Promise [ @@species ]

    `Promise[@@species]` is an accessor property whose set accessor function is *undefined*. Its get accessor function performs the following steps when called:

    From 160b260705129efbfdc54dc1570f9c5c8ef09f06 Mon Sep 17 00:00:00 2001 From: Tooru Fujisawa Date: Wed, 6 Dec 2023 15:39:20 -0800 Subject: [PATCH 06/69] Editorial: Add missing period to `AsyncFunction.prototype.constructor` section (#3235) --- spec.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec.html b/spec.html index 7930ed6cf4..c8ab3a4d44 100644 --- a/spec.html +++ b/spec.html @@ -48270,7 +48270,7 @@

    Properties of the AsyncFunction Prototype Object

    AsyncFunction.prototype.constructor

    -

    The initial value of `AsyncFunction.prototype.constructor` is %AsyncFunction%

    +

    The initial value of `AsyncFunction.prototype.constructor` is %AsyncFunction%.

    This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *true* }.

    From c7560a59d295080776907b96e412567e9fe92186 Mon Sep 17 00:00:00 2001 From: Michael Dyck Date: Wed, 10 Jan 2024 12:14:10 -0800 Subject: [PATCH 07/69] Editorial: Use "is a foo completion" instead of testing [[Type]] field (#3163) Mostly, change: _x_.[[Type]] is ~foo~ to: _x_ is a foo completion Resolves issue #2644. --- esmeta-ignore.json | 5 +-- spec.html | 90 +++++++++++++++++++++++----------------------- 2 files changed, 46 insertions(+), 49 deletions(-) diff --git a/esmeta-ignore.json b/esmeta-ignore.json index 90673a02eb..63a4c5bf38 100644 --- a/esmeta-ignore.json +++ b/esmeta-ignore.json @@ -11,16 +11,12 @@ "ArrayAssignmentPattern[2,3].DestructuringAssignmentEvaluation", "ArrayCreate", "AsyncGeneratorBody[0,0].EvaluateAsyncGeneratorBody", - "AsyncGeneratorUnwrapYieldResumption", "BindingPattern[1,0].BindingInitialization", "BoundFunctionCreate", "Catch[0,0].CatchClauseEvaluation", "Catch[1,0].CatchClauseEvaluation", "ClassStaticBlockBody[0,0].EvaluateClassStaticBlockBody", "CreateBuiltinFunction", - "CreateIterResultObject", - "ECMAScriptFunctionObject.Call", - "ECMAScriptFunctionObject.Construct", "FlattenIntoArray", "ForIn/OfBodyEvaluation", "FunctionBody[0,0].EvaluateFunctionBody", @@ -37,6 +33,7 @@ "ModuleNamespaceExoticObject.OwnPropertyKeys", "OrdinaryObject.OwnPropertyKeys", "ProxyCreate", + "ScriptEvaluation", "SerializeJSONObject", "SetFunctionLength", "SourceTextModuleRecord.ExecuteModule", diff --git a/spec.html b/spec.html index c8ab3a4d44..564755c931 100644 --- a/spec.html +++ b/spec.html @@ -4127,7 +4127,7 @@

    - 1. Assert: If _completionRecord_.[[Type]] is either ~return~ or ~throw~, then _completionRecord_.[[Value]] is not ~empty~. + 1. Assert: If _completionRecord_ is either a return completion or a throw completion, then _completionRecord_.[[Value]] is not ~empty~. 1. If _completionRecord_.[[Value]] is not ~empty~, return ? _completionRecord_. 1. Return Completion Record { [[Type]]: _completionRecord_.[[Type]], [[Value]]: _value_, [[Target]]: _completionRecord_.[[Target]] }. @@ -4489,7 +4489,7 @@

    The Environment Record Specification Type

    The Abstract Closure Specification Type

    The Abstract Closure specification type is used to refer to algorithm steps together with a collection of values. Abstract Closures are meta-values and are invoked using function application style such as _closure_(_arg1_, _arg2_). Like abstract operations, invocations perform the algorithm steps described by the Abstract Closure.

    In algorithm steps that create an Abstract Closure, values are captured with the verb "capture" followed by a list of aliases. When an Abstract Closure is created, it captures the value that is associated with each alias at that time. In steps that specify the algorithm to be performed when an Abstract Closure is called, each captured value is referred to by the alias that was used to capture the value.

    -

    If an Abstract Closure returns a Completion Record, that Completion Record's [[Type]] must be either ~normal~ or ~throw~.

    +

    If an Abstract Closure returns a Completion Record, that Completion Record must be either a normal completion or a throw completion.

    Abstract Closures are created inline as part of other algorithms, shown in the following example.

    1. Let _addend_ be 41. @@ -7008,12 +7008,12 @@

    1. Assert: _iteratorRecord_.[[Iterator]] is an Object. 1. Let _iterator_ be _iteratorRecord_.[[Iterator]]. 1. Let _innerResult_ be Completion(GetMethod(_iterator_, *"return"*)). - 1. If _innerResult_.[[Type]] is ~normal~, then + 1. If _innerResult_ is a normal completion, then 1. Let _return_ be _innerResult_.[[Value]]. 1. If _return_ is *undefined*, return ? _completion_. 1. Set _innerResult_ to Completion(Call(_return_, _iterator_)). - 1. If _completion_.[[Type]] is ~throw~, return ? _completion_. - 1. If _innerResult_.[[Type]] is ~throw~, return ? _innerResult_. + 1. If _completion_ is a throw completion, return ? _completion_. + 1. If _innerResult_ is a throw completion, return ? _innerResult_. 1. If _innerResult_.[[Value]] is not an Object, throw a *TypeError* exception. 1. Return ? _completion_. @@ -7048,13 +7048,13 @@

    1. Assert: _iteratorRecord_.[[Iterator]] is an Object. 1. Let _iterator_ be _iteratorRecord_.[[Iterator]]. 1. Let _innerResult_ be Completion(GetMethod(_iterator_, *"return"*)). - 1. If _innerResult_.[[Type]] is ~normal~, then + 1. If _innerResult_ is a normal completion, then 1. Let _return_ be _innerResult_.[[Value]]. 1. If _return_ is *undefined*, return ? _completion_. 1. Set _innerResult_ to Completion(Call(_return_, _iterator_)). - 1. If _innerResult_.[[Type]] is ~normal~, set _innerResult_ to Completion(Await(_innerResult_.[[Value]])). - 1. If _completion_.[[Type]] is ~throw~, return ? _completion_. - 1. If _innerResult_.[[Type]] is ~throw~, return ? _innerResult_. + 1. If _innerResult_ is a normal completion, set _innerResult_ to Completion(Await(_innerResult_.[[Value]])). + 1. If _completion_ is a throw completion, return ? _completion_. + 1. If _innerResult_ is a throw completion, return ? _innerResult_. 1. If _innerResult_.[[Value]] is not an Object, throw a *TypeError* exception. 1. Return ? _completion_. @@ -13257,7 +13257,7 @@

    1. Perform OrdinaryCallBindThis(_F_, _calleeContext_, _thisArgument_). 1. Let _result_ be Completion(OrdinaryCallEvaluateBody(_F_, _argumentsList_)). 1. [id="step-call-pop-context-stack"] Remove _calleeContext_ from the execution context stack and restore _callerContext_ as the running execution context. - 1. If _result_.[[Type]] is ~return~, return _result_.[[Value]]. + 1. If _result_ is a return completion, return _result_.[[Value]]. 1. ReturnIfAbrupt(_result_). 1. Return *undefined*. @@ -13431,7 +13431,7 @@

    1. Let _constructorEnv_ be the LexicalEnvironment of _calleeContext_. 1. Let _result_ be Completion(OrdinaryCallEvaluateBody(_F_, _argumentsList_)). 1. Remove _calleeContext_ from the execution context stack and restore _callerContext_ as the running execution context. - 1. If _result_.[[Type]] is ~return~, then + 1. If _result_ is a return completion, then 1. If _result_.[[Value]] is an Object, return _result_.[[Value]]. 1. If _kind_ is ~base~, return _thisArgument_. 1. If _result_.[[Value]] is not *undefined*, throw a *TypeError* exception. @@ -21696,8 +21696,8 @@

    - 1. If _completion_.[[Type]] is ~normal~, return *true*. - 1. If _completion_.[[Type]] is not ~continue~, return *false*. + 1. If _completion_ is a normal completion, return *true*. + 1. If _completion_ is not a continue completion, return *false*. 1. If _completion_.[[Target]] is ~empty~, return *true*. 1. If _labelSet_ contains _completion_.[[Target]], return *true*. 1. Return *false*. @@ -22869,7 +22869,7 @@

    BreakableStatement : IterationStatement 1. Let _stmtResult_ be Completion(LoopEvaluation of |IterationStatement| with argument _labelSet_). - 1. If _stmtResult_.[[Type]] is ~break~, then + 1. If _stmtResult_ is a break completion, then 1. If _stmtResult_.[[Target]] is ~empty~, then 1. If _stmtResult_.[[Value]] is ~empty~, set _stmtResult_ to NormalCompletion(*undefined*). 1. Else, set _stmtResult_ to NormalCompletion(_stmtResult_.[[Value]]). @@ -22878,7 +22878,7 @@

    BreakableStatement : SwitchStatement 1. Let _stmtResult_ be Completion(Evaluation of |SwitchStatement|). - 1. If _stmtResult_.[[Type]] is ~break~, then + 1. If _stmtResult_ is a break completion, then 1. If _stmtResult_.[[Target]] is ~empty~, then 1. If _stmtResult_.[[Value]] is ~empty~, set _stmtResult_ to NormalCompletion(*undefined*). 1. Else, set _stmtResult_ to NormalCompletion(_stmtResult_.[[Value]]). @@ -22892,7 +22892,7 @@

    1. Let _label_ be the StringValue of |LabelIdentifier|. 1. Let _newLabelSet_ be the list-concatenation of _labelSet_ and « _label_ ». 1. Let _stmtResult_ be Completion(LabelledEvaluation of |LabelledItem| with argument _newLabelSet_). - 1. If _stmtResult_.[[Type]] is ~break~ and _stmtResult_.[[Target]] is _label_, then + 1. If _stmtResult_ is a break completion and _stmtResult_.[[Target]] is _label_, then 1. Set _stmtResult_ to NormalCompletion(_stmtResult_.[[Value]]). 1. Return ? _stmtResult_. @@ -23023,7 +23023,7 @@

    Runtime Semantics: Evaluation

    TryStatement : `try` Block Catch 1. Let _B_ be Completion(Evaluation of |Block|). - 1. If _B_.[[Type]] is ~throw~, let _C_ be Completion(CatchClauseEvaluation of |Catch| with argument _B_.[[Value]]). + 1. If _B_ is a throw completion, let _C_ be Completion(CatchClauseEvaluation of |Catch| with argument _B_.[[Value]]). 1. Else, let _C_ be _B_. 1. Return ? UpdateEmpty(_C_, *undefined*). @@ -23031,16 +23031,16 @@

    Runtime Semantics: Evaluation

    1. Let _B_ be Completion(Evaluation of |Block|). 1. Let _F_ be Completion(Evaluation of |Finally|). - 1. If _F_.[[Type]] is ~normal~, set _F_ to _B_. + 1. If _F_ is a normal completion, set _F_ to _B_. 1. Return ? UpdateEmpty(_F_, *undefined*). TryStatement : `try` Block Catch Finally 1. Let _B_ be Completion(Evaluation of |Block|). - 1. If _B_.[[Type]] is ~throw~, let _C_ be Completion(CatchClauseEvaluation of |Catch| with argument _B_.[[Value]]). + 1. If _B_ is a throw completion, let _C_ be Completion(CatchClauseEvaluation of |Catch| with argument _B_.[[Value]]). 1. Else, let _C_ be _B_. 1. Let _F_ be Completion(Evaluation of |Finally|). - 1. If _F_.[[Type]] is ~normal~, set _F_ to _C_. + 1. If _F_ is a normal completion, set _F_ to _C_. 1. Return ? UpdateEmpty(_F_, *undefined*). @@ -24121,7 +24121,7 @@

    Runtime Semantics: Evaluation

    1. Let _iterator_ be _iteratorRecord_.[[Iterator]]. 1. Let _received_ be NormalCompletion(*undefined*). 1. Repeat, - 1. If _received_.[[Type]] is ~normal~, then + 1. If _received_ is a normal completion, then 1. Let _innerResult_ be ? Call(_iteratorRecord_.[[NextMethod]], _iteratorRecord_.[[Iterator]], « _received_.[[Value]] »). 1. If _generatorKind_ is ~async~, set _innerResult_ to ? Await(_innerResult_). 1. If _innerResult_ is not an Object, throw a *TypeError* exception. @@ -24130,7 +24130,7 @@

    Runtime Semantics: Evaluation

    1. Return ? IteratorValue(_innerResult_). 1. If _generatorKind_ is ~async~, set _received_ to Completion(AsyncGeneratorYield(? IteratorValue(_innerResult_))). 1. Else, set _received_ to Completion(GeneratorYield(_innerResult_)). - 1. Else if _received_.[[Type]] is ~throw~, then + 1. Else if _received_ is a throw completion, then 1. Let _throw_ be ? GetMethod(_iterator_, *"throw"*). 1. If _throw_ is not *undefined*, then 1. Let _innerResult_ be ? Call(_throw_, _iterator_, « _received_.[[Value]] »). @@ -24150,7 +24150,7 @@

    Runtime Semantics: Evaluation

    1. NOTE: The next step throws a *TypeError* to indicate that there was a `yield*` protocol violation: _iterator_ does not have a `throw` method. 1. Throw a *TypeError* exception. 1. Else, - 1. Assert: _received_.[[Type]] is ~return~. + 1. Assert: _received_ is a return completion. 1. Let _return_ be ? GetMethod(_iterator_, *"return"*). 1. If _return_ is *undefined*, then 1. Set _value_ to _received_.[[Value]]. @@ -25976,9 +25976,9 @@

    1. Push _scriptContext_ onto the execution context stack; _scriptContext_ is now the running execution context. 1. Let _script_ be _scriptRecord_.[[ECMAScriptCode]]. 1. Let _result_ be Completion(GlobalDeclarationInstantiation(_script_, _globalEnv_)). - 1. If _result_.[[Type]] is ~normal~, then + 1. If _result_ is a normal completion, then 1. Set _result_ to Completion(Evaluation of _script_). - 1. If _result_.[[Type]] is ~normal~ and _result_.[[Value]] is ~empty~, then + 1. If _result_ is a normal completion and _result_.[[Value]] is ~empty~, then 1. Set _result_ to NormalCompletion(*undefined*). 1. Suspend _scriptContext_ and remove it from the execution context stack. 1. Assert: The execution context stack is not empty. @@ -28256,7 +28256,7 @@

    Runtime Semantics: Evaluation

    ModuleBody : ModuleItemList 1. Let _result_ be Completion(Evaluation of |ModuleItemList|). - 1. If _result_.[[Type]] is ~normal~ and _result_.[[Value]] is ~empty~, then + 1. If _result_ is a normal completion and _result_.[[Value]] is ~empty~, then 1. Return *undefined*. 1. Return ? _result_. @@ -29007,9 +29007,9 @@

    1. Set _evalContext_'s PrivateEnvironment to _privateEnv_. 1. Push _evalContext_ onto the execution context stack; _evalContext_ is now the running execution context. 1. Let _result_ be Completion(EvalDeclarationInstantiation(_body_, _varEnv_, _lexEnv_, _privateEnv_, _strictEval_)). - 1. If _result_.[[Type]] is ~normal~, then + 1. If _result_ is a normal completion, then 1. Set _result_ to Completion(Evaluation of _body_). - 1. If _result_.[[Type]] is ~normal~ and _result_.[[Value]] is ~empty~, then + 1. If _result_ is a normal completion and _result_.[[Value]] is ~empty~, then 1. Set _result_ to NormalCompletion(*undefined*). 1. Suspend _evalContext_ and remove it from the execution context stack. 1. Resume the context that is now on the top of the execution context stack as the running execution context. @@ -47600,12 +47600,12 @@

    1. Remove _acGenContext_ from the execution context stack and restore the execution context that is at the top of the execution context stack as the running execution context. 1. Set _acGenerator_.[[GeneratorState]] to ~completed~. 1. NOTE: Once a generator enters the ~completed~ state it never leaves it and its associated execution context is never resumed. Any execution state associated with _acGenerator_ can be discarded at this point. - 1. If _result_.[[Type]] is ~normal~, then + 1. If _result_ is a normal completion, then 1. Let _resultValue_ be *undefined*. - 1. Else if _result_.[[Type]] is ~return~, then + 1. Else if _result_ is a return completion, then 1. Let _resultValue_ be _result_.[[Value]]. 1. Else, - 1. Assert: _result_.[[Type]] is ~throw~. + 1. Assert: _result_ is a throw completion. 1. Return ? _result_. 1. Return CreateIterResultObject(_resultValue_, *true*). 1. Set the code evaluation state of _genContext_ such that when evaluation is resumed for that execution context, _closure_ will be called with no arguments. @@ -47677,7 +47677,7 @@

    1. NOTE: Once a generator enters the ~completed~ state it never leaves it and its associated execution context is never resumed. Any execution state associated with _generator_ can be discarded at this point. 1. Set _state_ to ~completed~. 1. If _state_ is ~completed~, then - 1. If _abruptCompletion_.[[Type]] is ~return~, then + 1. If _abruptCompletion_ is a return completion, then 1. Return CreateIterResultObject(_abruptCompletion_.[[Value]], *true*). 1. Return ? _abruptCompletion_. 1. Assert: _state_ is ~suspended-yield~. @@ -47956,8 +47956,8 @@

    1. Assert: If we return here, the async generator either threw an exception or performed either an implicit or explicit return. 1. Remove _acGenContext_ from the execution context stack and restore the execution context that is at the top of the execution context stack as the running execution context. 1. Set _acGenerator_.[[AsyncGeneratorState]] to ~completed~. - 1. If _result_.[[Type]] is ~normal~, set _result_ to NormalCompletion(*undefined*). - 1. If _result_.[[Type]] is ~return~, set _result_ to NormalCompletion(_result_.[[Value]]). + 1. If _result_ is a normal completion, set _result_ to NormalCompletion(*undefined*). + 1. If _result_ is a return completion, set _result_ to NormalCompletion(_result_.[[Value]]). 1. Perform AsyncGeneratorCompleteStep(_acGenerator_, _result_, *true*). 1. Perform AsyncGeneratorDrainQueue(_acGenerator_). 1. Return *undefined*. @@ -48021,10 +48021,10 @@

    1. Remove the first element from _generator_.[[AsyncGeneratorQueue]]. 1. Let _promiseCapability_ be _next_.[[Capability]]. 1. Let _value_ be _completion_.[[Value]]. - 1. If _completion_.[[Type]] is ~throw~, then + 1. If _completion_ is a throw completion, then 1. Perform ! Call(_promiseCapability_.[[Reject]], *undefined*, « _value_ »). 1. Else, - 1. Assert: _completion_.[[Type]] is ~normal~. + 1. Assert: _completion_ is a normal completion. 1. If _realm_ is present, then 1. Let _oldRealm_ be the running execution context's Realm. 1. Set the running execution context's Realm to _realm_. @@ -48069,10 +48069,10 @@

    - 1. If _resumptionValue_.[[Type]] is not ~return~, return ? _resumptionValue_. + 1. If _resumptionValue_ is not a return completion, return ? _resumptionValue_. 1. Let _awaited_ be Completion(Await(_resumptionValue_.[[Value]])). - 1. If _awaited_.[[Type]] is ~throw~, return ? _awaited_. - 1. Assert: _awaited_.[[Type]] is ~normal~. + 1. If _awaited_ is a throw completion, return ? _awaited_. + 1. Assert: _awaited_ is a normal completion. 1. Return Completion Record { [[Type]]: ~return~, [[Value]]: _awaited_.[[Value]], [[Target]]: ~empty~ }. @@ -48124,7 +48124,7 @@

    1. Assert: _queue_ is not empty. 1. Let _next_ be the first element of _queue_. 1. Let _completion_ be Completion(_next_.[[Completion]]). - 1. Assert: _completion_.[[Type]] is ~return~. + 1. Assert: _completion_ is a return completion. 1. Let _promise_ be ? PromiseResolve(%Promise%, _completion_.[[Value]]). 1. Let _fulfilledClosure_ be a new Abstract Closure with parameters (_value_) that captures _generator_ and performs the following steps when called: 1. Set _generator_.[[AsyncGeneratorState]] to ~completed~. @@ -48163,12 +48163,12 @@

    1. Repeat, while _done_ is *false*, 1. Let _next_ be the first element of _queue_. 1. Let _completion_ be Completion(_next_.[[Completion]]). - 1. If _completion_.[[Type]] is ~return~, then + 1. If _completion_ is a return completion, then 1. Set _generator_.[[AsyncGeneratorState]] to ~awaiting-return~. 1. Perform ! AsyncGeneratorAwaitReturn(_generator_). 1. Set _done_ to *true*. 1. Else, - 1. If _completion_.[[Type]] is ~normal~, then + 1. If _completion_ is a normal completion, then 1. Set _completion_ to NormalCompletion(*undefined*). 1. Perform AsyncGeneratorCompleteStep(_generator_, _completion_, *true*). 1. If _queue_ is empty, set _done_ to *true*. @@ -48340,12 +48340,12 @@

    1. Let _result_ be Completion(Evaluation of _asyncBody_). 1. Assert: If we return here, the async function either threw an exception or performed an implicit or explicit return; all awaiting is done. 1. Remove _acAsyncContext_ from the execution context stack and restore the execution context that is at the top of the execution context stack as the running execution context. - 1. If _result_.[[Type]] is ~normal~, then + 1. If _result_ is a normal completion, then 1. Perform ! Call(_promiseCapability_.[[Resolve]], *undefined*, « *undefined* »). - 1. Else if _result_.[[Type]] is ~return~, then + 1. Else if _result_ is a return completion, then 1. Perform ! Call(_promiseCapability_.[[Resolve]], *undefined*, « _result_.[[Value]] »). 1. Else, - 1. Assert: _result_.[[Type]] is ~throw~. + 1. Assert: _result_ is a throw completion. 1. Perform ! Call(_promiseCapability_.[[Reject]], *undefined*, « _result_.[[Value]] »). 1. [id="step-asyncblockstart-return-undefined"] Return ~unused~. 1. Set the code evaluation state of _asyncContext_ such that when evaluation is resumed for that execution context, _closure_ will be called with no arguments. From 5be7f2cb8ab5c8cdfa8ae154ffcde8baf611fb71 Mon Sep 17 00:00:00 2001 From: Tooru Fujisawa Date: Wed, 10 Jan 2024 12:25:46 -0800 Subject: [PATCH 08/69] Editorial: Use SVG for Generator Objects Relationships figure (#3239) --- figure-2.uxf | 468 ----------------------------------------------- img/figure-2.png | Bin 84215 -> 0 bytes img/figure-2.svg | 301 ++++++++++++++++++++++++++++++ spec.html | 2 +- 4 files changed, 302 insertions(+), 469 deletions(-) delete mode 100644 figure-2.uxf delete mode 100644 img/figure-2.png create mode 100644 img/figure-2.svg diff --git a/figure-2.uxf b/figure-2.uxf deleted file mode 100644 index fb439526d9..0000000000 --- a/figure-2.uxf +++ /dev/null @@ -1,468 +0,0 @@ - - - 10 - - UMLClass - - 390 - 70 - 160 - 30 - - Object.prototype -bg=#cceecc - - - - UMLNote - - 390 - 0 - 160 - 50 - - [[Prototype]] of -Object.prototype is null -bg=#ffeeee - - - - UMLClass - - 390 - 140 - 160 - 100 - - Function.prototype --- -@@hasInstance() -apply() -bind() -call() -bg=#cceecc - - - - Relation - - 480 - 90 - 30 - 70 - - lt=<<- - 10.0;10.0;10.0;50.0 - - - UMLClass - - 390 - 270 - 160 - 60 - - %Generator% --- -@@toStringTag = - "GeneratorFunction" - -bg=#cceecc - - - - Relation - - 480 - 230 - 30 - 60 - - lt=<<- - 10.0;10.0;10.0;40.0 - - - UMLClass - - 390 - 420 - 160 - 50 - - <<callable>> -function *g1() { yield; } - - - - Relation - - 480 - 320 - 30 - 120 - - lt=<<- - 10.0;10.0;10.0;100.0 - - - UMLClass - - 40 - 180 - 160 - 60 - - <<constructor>> -<<callable>> -Function - -bg=#cceecc - - - - Relation - - 130 - 150 - 280 - 50 - - lt=<<- - 260.0;10.0;10.0;10.0;10.0;30.0 - - - UMLClass - - 40 - 270 - 160 - 60 - - <<constructor>> -<<callable>> -%GeneratorFunction% - -bg=#cceecc - - - - Relation - - 130 - 230 - 30 - 60 - - lt=<<- - 10.0;10.0;10.0;40.0 - - - Relation - - 190 - 300 - 220 - 40 - - lt=<-> -m2=constructor -m1=prototype - 10.0;10.0;200.0;10.0 - - - UMLClass - - 740 - 190 - 160 - 50 - - %IteratorPrototype% --- -@@iterator() : object -bg=#cceecc - - - - UMLClass - - 740 - 270 - 160 - 120 - - %GeneratorPrototype% --- -@@toStringTag = - "Generator" --- -next() : object -return() -throw() -bg=#cceecc - - - - Relation - - 540 - 70 - 300 - 140 - - lt=<<- - 10.0;10.0;280.0;10.0;280.0;120.0 - - - UMLClass - - 740 - 420 - 160 - 30 - - g1.prototype - - - - UMLClass - - 740 - 500 - 160 - 30 - - g1() - - - - Relation - - 810 - 230 - 30 - 60 - - lt=<<- - 10.0;10.0;10.0;40.0 - - - Relation - - 810 - 380 - 30 - 60 - - lt=<<- - 10.0;10.0;10.0;40.0 - - - Relation - - 810 - 440 - 30 - 80 - - lt=<<- - 10.0;10.0;10.0;60.0 - - - Relation - - 540 - 430 - 220 - 40 - - lt=-> -m1=prototype - 10.0;10.0;200.0;10.0 - - - Relation - - 540 - 450 - 220 - 70 - - lt=<. - - 10.0;10.0;200.0;50.0 - - - Relation - - 190 - 310 - 220 - 130 - - lt=<. - - 10.0;10.0;200.0;110.0 - - - UMLNote - - 570 - 200 - 150 - 90 - - %Generator% is an -ordinary object that -serves as the abstract -constructor of -Generator instances. -bg=#ffeeee - - - - Relation - - 540 - 230 - 50 - 60 - - lt=. - 10.0;40.0;30.0;10.0 - - - Relation - - 480 - 40 - 30 - 50 - - lt=. - 10.0;30.0;10.0;10.0 - - - Relation - - 540 - 300 - 220 - 40 - - lt=<-> -m2=constructor -m1=prototype - 10.0;10.0;200.0;10.0 - - - UMLNote - - 230 - 430 - 140 - 60 - - A typical generator -function. It is not a -constructor. -bg=#ffeeee - - - - Relation - - 360 - 440 - 50 - 30 - - lt=. - 10.0;10.0;30.0;10.0 - - - UMLNote - - 40 - 350 - 180 - 190 - - %GeneratorFunction% -and %Generator% do not -have global names. - -%GeneratorFunction% is -essentially a subclass of -Function and is structured -as if it were declared as: - - class extends Function { } -bg=#ffeeeee - - - - Relation - - 130 - 320 - 30 - 50 - - lt=. - 10.0;10.0;10.0;30.0 - - - UMLNote - - 340 - 500 - 380 - 120 - - Each Generator Function has an associated prototype -that does not have a constructor property. Hence a -generator instance does not expose access to its generator -function. - -But the prototype may be used to add additional -behavior to its generator function's instances. -bg=#ffeeee - - - - Relation - - 710 - 510 - 50 - 30 - - lt=. - 10.0;10.0;30.0;10.0 - - - Text - - 350 - 380 - 90 - 30 - - instanceof -style=wordwrap - - - - Text - - 670 - 470 - 90 - 30 - - instanceof -style=wordwrap - - - diff --git a/img/figure-2.png b/img/figure-2.png deleted file mode 100644 index 6ee5f64348e719fcf0ecd5f2b23d997fd556b29f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 84215 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
    me_yP9Z zZBtXHRZkx2d@n5~)b>_|&|vtg?CRbE9< zAExO0oadO*a0*#N`1%ZdV!~pR>@$3Ms-f&hMZM%s*eBIUyVSk3y%G3mlcTT2eDI{z zwdcgwl)mpa!PoSik_i?yCaXo4FVO|w)rWvp@7an%;1;+4Wp9P>amM;HbkBLwwW*QI zutMdlN5rD3dvJZ&Y14rV%BEX>?c^XWRH4Ob@P9(?pD%&9^eyQhTs8_-=HeF@d*m>3 zR->!lhxwfEIBgZY%sh@ZM}F0ubKx!2Y~iVJt;9%iByjXkUzeJg)<(~U9}iSca~J}v zp7?xbI3q~-q6sYXu;fCqHi9Bj)^^SuS!z2UwpmmrrEL*as!4RBOd0ziCsDLG|7NI- zI}gQ^X{O8OD+PCs)oC=&R8w0V#fAbTO06kS3q za0G?F0HLJzDJ0ddTZMJ-vk4!*$o)%ttM&M99(nbXYYB&w+RoTK<`pTo5|*s&ku(}S zQ~Z^w8+)9NRLet7GD0mt1kNlSJQi8r-;`8_!y$5`ld5u{mjyO<6z!KianP{2rtw@8 z`lY_k)NH0($6#J()wVnD?|;jP*ZH9_k!s4yXYi-_OTe7*?&Zy7<*B<;>X zN|l(`qI~&PUo**=k&cEs!mz5O6+;?Q1_*EUvk0>x*`~|l2;sM~Vopb^1l^QMI=!#9fw~FjG zRT6dn9dz49?`->g$F+9|Z&uoI&4~E5fJvu$zJKF||3ay0}MDa$wt-Z9&3|0FXPqcuN8uH`gI5ib!B_;eefvqp!-9vvUpO zWDn^=!ER4saPo{>)m83lCK?GE#Vj=QH|8jl;@WzvVq*I(QnG!D|~e8Oo74u}O6eu*L^8Mzs+ttnaBGh-ZP5 z9?T`Nplm$6_CN|sY}1NjZIXg+^aPG!My{icC?}ao;ujV_ucGMU8^nFan>};i%pIQp zO7-Ec$GqWyKrb^QcJ#YG4Hv&me_>&`TCe-{zk_%*mBu0~<*;@WPI+9v>CWB2Fm41Y z@+(v^oIZ+xK(|epsMM7A`5N|HMX&@G%|F%+$x)As(O2hoGs-s_kAL9X5D+nseq%r|7#uRYG>Ff*c$OqtAe#QYoH0efZ@&ePx3+#c zPW54;kne>@JtJg4`TGCjegHDbYHU#2zo0S2Gxm69$SHr&=0$m>4n=Empy5EKsga@+ z+njkgukFJyPo7AYi15StfjuF=dG90j`-K4JpTo#_1KI&F(G5@x0DS9RNMI2IgFevnz4t?f_F=YG@uz>-5|z2`*i4@i{C}ILSEs zVpk$lex+a4>wP-@SJ^tEBGVfz_#c+~mu2`q2r4$;eK`hs-N|3@l&lpl4OE7zw@NFz z`8Q_dxjG=6xe>SuRn&lW?}c?-%Nt^uNue)U$hxHVb|-m=4fi|Cak zoeC=kd@6R++N*277HGreN?*JA#N_KWB2G_JZC!LFzWHfH6Z|oIz5s7pvLlbN*mB^K zK@{#QvR8gIXVSu1X~byFgT&;tqtYhYVt{Y=+wiNw zm>8m%4Xa*13npuQN!#Z=A2w#3C~WH5xFrezj{i-HJjm-YG(*77;6}&sPfEd8_a^{o z-!9#1a zyGB4Mg3=)(QWOxRNY^MxQ#u3?5HO;Iq9AbTibxd@>C$^A^xmXu=+Z;)NC_oCB(yg{ zuh;v&x8D2rxm+$#6EgFgIdjh5`|Qb@NF&5?$ZS#TOFPXe=}GNBVI0smWy(rVYrZU; zn(x4+>&A8;V%L9Wz(%^o`2$6b9H*K6*h88vHWW6oe3rgB&LMt}-F|#@uIg%1+s_G; zs!?}!`zGD8C&g&{eR62V=e&3b1?bXP-o2n_ui5Y1x0O5o_@6}>()#puE2nR=@>KMO zKf*KG08TfulaUr@8Cn%mNgu{XEts|dl>#0Sw?^RD+yd&SPIkpwD zdUcp{f!L*Dtz>NS@nd)|L6Nc^UfHl=aZs}fZUd|sdgiLwP86LcWe7W-ef|MwFpjh4eFjly zq1Xs?7P?%X4hq$%S8BrjegZ3;ijXCyJJYCUaBJFBdPhF0!f)<^+ETz|?icHJexwgGo%| zR5R%r5e{OnM~b8ekm)?umvVXiR1~BM{xajGgL{32bFI1d`&UR|GlcYNGsJ+>?O;8{~jo&KeScE8*|y_;&S%&HzFS*GeI=bET`815Ij*CfT;Q0Gb&L8wIli)K@eAAX`|c{6 z41Rh4XXXYQ{c+N!Ajd-5!(Fpk0D@h7UsA?~A>c;Ka~#>Qq1}itTCv?>?60@T;7%;! z~3_92_ttZ$KBUKFyNfeq7m=9?$ zT({>#0CzvPEZoV#cu9C9Yhanj&U}9Aqx|^MGEG9R!+VPDOFK@XXo`9baSX9Q_`F{> zb6Z8lGNvGI(QPn5Lo(r!>L>bXmWHqOk{SFy{?E(|)IfVFXmT)-A!2jLeeYuNYtsFJ zrYvq%g3w0C`O|kktN93Qgtew438N2sl8S?8{XzJiJ2P$2I zPyGnz-GPA+BR?`0;WljRd-C3F z4m-Z!}5X6eHgea)!0$igQrEP zX_`Z!KcXtewxWo#AtJNv>U#l9-p*8x!$F%Cf`%%&|xG*3zD9!Y8WSq(}8m++DmW;y8MFjj%w5Krtzw$zFen@ zmBfwr%~xr~NY5a;&ebk!9J+9+E067|NbS#w5xm@E>4SSCn&;T9_TMIxAy}3!^k2f< z>eX}`ZNxBjXsSvB2ebYh(!Bb?4eKQD_)xkZyGq+|40G9=tc7*n)eVAuvx{&_diNt1 zM%5M|YhsD9@bB|FXham#an?iTZFo<7|8Yy>>}l##eln>O~$~NF7`} zGe9SlUr9dukV%ysr{25TJJQ$>@2(1=Q_Phw7r#&}j@ol1Oa?PZY10i<5i&!x5giQ& zQ>mn?M0jVxR>yWUl&4a1{3_VSfA4`fW<_vF%L~B<-_6caUfUkt36f<8$2R~fxZpo# z9sDzs`|MfmzHRs?dL0AKlX;)oOM-0WHjkc-S{?`m-8}&MCuSkwl^)D;5UyV5b-)7f zf}cVpzyQ&baE}V458zz^=6EDh0F(fb!y0iwpo`(sYqxq%Z7qDZ6H=37>!Jy^wGUli z$@m((bEeiy5|PW$t^6bR0Nm%c$9rejnXM)70!V|h4rg+EFE8M5#A_rqF*l?q@p)-& zwrm70z)uqMA&4zyJ>U&nbM?x)z*Px`7@$hDv~_JN?9^?Vom)a#A@1J^V#}6{Th*x= z45Pf_|6o+H<2sg2`(vEkuBVJ&wghg_BnKnEVMY~PxfJKN$mQe~y3v4Cx!bz=c1aH1 zE;@#7!D#jd3T&0R@>^a$PtJDtg8#E1i3;cPocT{FiZ;aJIdzenJ}~hGZ_j*{9kstz zq@A^-En%RbLllc?GQ>{1Ua|?Z(2nF!7toejs%iU}ZeQJqF|>2_o8u6+lo@ZRDnOSc zb$1px#+quzB34{teE=O!oIRMn$NRmP{4{oF?xerVHZ_D{(l!nwxqi{z3(y z`jwnnsL|+IXeCm14;EL*i*MAP{>%KPiPxV~)GqhzX^C!)-&OhtCjFU3K&+ zu0`+7wJV#CfJ^Q3vbk5D&JX@~mB|5=!1CbFB?gG#mo*N2i8)XSqabdHW z&mXC_(0+Uv9N_Gpr9>pg?io{T49h^wR!^pQT9^LVByKz#Lj(q zt#i}M{Tdh2RuGVJ1ki>n17xVk&`qbf>g`M&6K6aMF0Hmz_5$Z~f@F$F9W(Z*L}=&Q z&-}4|#>kvZ-8Q9}%_`cD5dE<=!bv}pf6@(uzIiJQBmwc7m8l@xSk#rf7irhj9FKmO z((e)}q}usogq}F{CsHO(kbU9;2m%WLi`uw$^~MuKtm%(rAL6bONwM*SKIMzFr~6b$ zIx@HFYYkuAfo!%D zuMcvOWwOoaK+5{6nzfy#w73q(twjV6gmkVQnX*7b8CK<*yqG{{cx;FB~UxL7ZTZ708kcj`kiZ8)^6XcxN!eDwj;kKe5_N6m}la22*q3ZcgqalSIcAJ=48qr1-W#z%_Y>j zAMQ(~%?SX^E8t7ps&h-2mnMg~c3GUiNtu7xGwp6#jmWItiohJ7?cDG|#;}<2=dS2? zdOF~QX7YCq(<~n^&O#Svw?%|H{IgpTFuCXMKRk=x4sof1tJq@qaB!7}e|SewX>J=B zeoByBZe8aQo_`P*n{{`#IOY{=h>vChXwJiW)`(wJ;Kq7c1_q%nZVGz?%Q7OK2;gO7>&~7G=H#xG^q^>pdhvpUd7!($sdNmJsb9p_AE+TY(oi-DYd&PD+O-r0 z6n14Cmr!a#+0tmNXd-XoOR4*jO6o#!@KS!)^LK}V(%Wzb zbC2mwkNwoV)PXKnrkDBGMTz{Bi>G zehzdIm%UhcO$b1XM63Yf-bDfPE_h8f#ZtMphqJ*K#7`uL1YOE-Emk8u_)Z$zgqmra zlc7tp+8ljyd>jW9&F+WCj92Ys;4A6ELe1`(O15T>8E)zHkIny@ZjDPG%bk-qcTH4o zc|Y;;3$>9Bma8b7(Rq7WUw!l1uf-<@Nf^H85k+IEGSiDz+~Wy)dGC|hn_Y9KY?%*p zl#;E#;{G`Rg#5reKy41xOhlB0s7?Iwa5n{Ea_>(j&NdylBmOn8z@;F*lA?kRS_SUx zwurE+PY8ZouIfvYuntm_SMCnKzgmzKdie}q$24~6xy)N{HxYd&3!ZNRaZpdSso&pB z>p1kX)j${YPC>A;M7Qge#Y4A&owaf-3*|IayH0!`Ov=HDR=D|;+)>hw3UOFgW z@E=hwnC*EWCF-;>>4lsHmZZC!fqCmSvw2D};Da7%vyQf*ug4nE-ja}A8hf^{!xX|e zuw(Qc6(K$DIfvJmv}d?+W%$|VQ>6aPArWAiH|>m$%*k)2AA+7{j_@CHm^UA_?a#k! z)m-$fpPgnyp7VPbVzY|whI#s5*d!&XX=B~g2fycOFeVR**US3g!t!k!;4$;*M+?LU z!D~LtGB0;eQbNYSxi{L3=mk9d?)SZgjoIQ|PB(C92HPqeBhLM=^zAWhAy^9AWPN(5 z0Rw+Ro}dijBeoly+ehk)Ge4{l)J>zl_4_~{T=6(ymcG{kPD@q>fTSQ`H$iweUj;HJ zO>=C;{`S)twLjQ@dx&D*6g5C2wp}3tJVWeaA<3X&^!DRH>4orW^DiHkfpR^`<2@@s z5F?E*){ILXR!JUC^(gxh^$ouk$jd*WmlI6^$6N?7@1a9O0R9X=Z8!_;*0O!?QZ=0l znf?`=#sd$5%;3qJ4izuMb2GuL0^r!pDmDV$Czx9z8Djg4UI5%yCIMOSk*@A2D=~n1 zPY{N(v{B3IafFbw%dkvuV&`HZXeKIbe4m~OL^wzvD7e-y#%y&K4nN1mm+rTlClEj{ zD&VxA60UH*p4ep1AZ-~8C_rLC}BbmrQ8;U4d{P6*glJWmXKlazd_%Xbr z?f*}tI9jc}6i1_dEB~W@`8gSRGLCqxMW^WGVRw=&;%cl*NfFgXUG1S$$=>VJ3NeSn zPOC$X2RQp$q{3V7zVK~>@xG?^@wme^FW!Oet8<;5L|GnS#5DBO<{31#zwbY!8`tmG z($+Wm6_WwULIPD7TQzhMs>BC~7f9NVOAcGtz51%~`AC@uIQ)&cgO_%gFC3=IQhU#%HX48vvWK%l>2ss)EO4`o4a)@uj4f_!;NpjS z)Eby(!`x{C*gDQpxYg>du$&gFaiY2{aA)@77W*ou3ee@ttsswn4AN}*l46D0{hD=$ z^_)`7Hb38cr?Um*1khm6SdTTB`Z0SLUKDbaKZs_vLbUv{|;g zq_Z_Omq7cKwbSYw#c)|4)v=L_?M^|Uh#D#hu|TpdSugp%Aa7}u4kuWCUkaX=AH!Fr zgMRV9=Q8iZnMshoaSR*d+DSui7{2}wd{%hYYn~~A_J6==+iJg0nfnX%e?BKR@yfh5 z-y}!v<2-sEO)qNfQ5~?9f&2n`>qKj}b&&`!Cg(g!*Pn$^B$M^T>wbE)>1SC3L*Lx? zC5A(CX2En#hCs2sHS>)|pD!g^-%7_z`Ndbw=iRNJ4M&derCOZ8qd>tm)E91OiISfC z%yuNx4EO|~;o|x9&Z7z1`Z`~YAL;3Dpoe`!VFG(GQ#Y61OMS(*3y%sC)sJ7du3u;q zx4C!t)Q0j4$-IE@ssk0nxPV2**M8al+1flV0#HQTyVJiqJiz@L>+hoQ3^jnDM)YW_=sUo@RnECA^)5%=K%Nu|j8=*gEAA_% z@Jg)6Q+rNE>ZAPUg8g8BZ}H?7s&?~(#V)brDtyHs1_uqwIbW@6tvF|~gP>u^G)Xof zd*5v;Sw8H!`gWSs78i2MW**ofRcL-yU*WwmS9EN)#!Olbxdb#KXmGw6tc*nQ)tc`% zY-Knukk02nD#!7EnC(PFI^fxbYBEYRo*|Q#NaPKJD(%hQZPYlWJ%}_Oj$C~6+XfJT zdfbfPgu)kDX+TD5O0y;l%o6)X9J2p>5R~kiEmd|#tQ>TDIgvNA2S#^2uqV@&4VY9| z=-B1;CVJ)4Oh_2RqV`Hs!Lt=5!n5zbDZmkOzT^BBBY>_;-<%FtN{8VdtiJx2JUG+Jf_LyH@}zHc zz9V+H1oG4-sanbTIAaWqpqzyT9dZZVP?osS75rm`9^rh z<}d8#H;Zg9hZWw;0dnsX$EInKDa85pTVL0wf_f1VhGNdN#Yy`4=EcX@Y#q>)_pe35 zO+;yd?`Vb;vBTjfgu-ziw*7_&*t%c6d(ddxwL(5+AvF*$Sg{by8B$Xq<~(@4(yg_W zerGBUKu{r$Au`l=?GHc$hMCjK#%CYW3wL%-rayNI0u5*ioS*of-`-pu0^QQW7Weh_ zdhNXhc}ovyQ!u(I<3NmN>Au`#GhN5{RSJU*j~u`Xm^`=@?nnsI)hnYa;AMOfkJ@~b zo|)k|;y~y)OxAc^*GQO~qY4LD{_Y3*aSgr9qT+7bw@aA|l~DxCM$oACTcGRu;?bq7 z6le=c=_qwfsC&WaM`rofBLN?(31P>>$Tk+&I@5suj9=#V-O0ysw4#(aHTALrZ|^U~ zkZxgBYZFl%YxU-drihK98{f7|-@5n^KfZhZb26BENscB#Ka`>d0IoxM33n_W%P%sP z^=S!Hki9n93n3>yj_^OAOx++L)rYkVFer`d0)B0^Bck@g)(Mea&YWe9k#2kx8AzB_+5ME}a=d?z1y7 zYOh#ayZ}y^7Z!Ji+J{ZGQ*$z02d?(gWr?6hGcIrC?>QrORi9W;Mt}k33S;bkB+^QBwygvsVGTv*T#+~7RVtx#eZ^E z3aGilC+pW)dWB_Slo}@nTB?MF^z>Rw^nS-N|F4`$gZg+K#hD_rSJ2-QA|@q>-&cX` z<#=9y&Ty68R+hiwM=df+qjNc#MhCL^Y9#9o_#6vZK38v)j{@+&gEV^`x(%s30Xnwwn{!* zk^faDoj(IDud}S&nOg=}r+H23S_Ms~6q2SJ$cJlac5r8)@|h^Tvb_7ptv|%5^Ac&= zz5wYebDiyx^U6gPVHKhQRQ{*FXeSbZQ9akeKka#3CM3!?>$lafd?}Q7#CBW^4NvQ; zESU*yc+nhCkT;P`Bq4M^WCqt-fYURa9yxICh{eUi)3EIfNrQVHEZZ&D_?*kl$ z@R#b5T|BZ|SOfiOi|UAMuDJZv(LHiXPA99IviUn_cIl(M!2IMN`J%O(HuDxeFywcu zx$mNyT3cw^Q3U4b9q9heHu-XY5bM~lrWzA%c-<;?|DheWfnZ|Wh;EAt9NbGGP%$+0 zI%Za2+5b+Jx@J6{V|p`+O*q>)BRh=Wd?*Lyl9s|{biA81I#bzEWwAVb#154MR}~l8 z+U&_OM$cc2bH#-1gXQPn^z531Xw2ks=8Ym>-N4N7b zZ&~l1Tzx+!aq(fc*k)&`FQ{hy3MqB~qDft4tmX6iVq_t!uQejCUs2$Up7+;a-e?@fmm*E;^N zA^KtQqt}w;K{j~lvX{?RT(40`mDjUVG*PirA$qy?AYn~Fo;B_o3vQtXh*Oua!X^@0X5}(D!8F_P*z9fy@X`Iu;1xOy@+06k^8(_kAo-66w=;^9z==t?!9wgB8U z9Wreqyn4V&J91~8IPn04(=|J{2oTf#x6x|?3Ea?Ym0=r;ZCPn;BNr*_6UB@Xo}a9Z zae({-pwyNIVpQ>0C?Tb&CsqV2v?MGoV{W?^3`)mK1rM2zdzG=$@x$cu&TKR7^tafg zDO<_hEQ@ndr68f!OH(1tss*roK9Nuz-J+%%N|B1rfGN-m)(D9Y|}33#f;= zZ$$sL-2c5w5=f7`_r3mu$})~pfmI<*y(lKdkCjSBAr0J3#`;{|=JK)90;0c%CpklZ z=2v%GGr45qu@)mTmPc|$m4nM>LQ8Mxl@R>ozQzeS zJLjAC2QmtR^Mm2u9~2k{{pQ`fL)h6U_;cT^H4_I^%XrXopWOJw&@`W=kBmiK=J6fY zN2hZO)UPO)OslQJcS&3$o%Z>;Z%Bh1aGG=o6zbhXV_6a`V+7A&rqIPgPJur-`SZneruVs z9`ov@N5KhITN0$Cd*bqHcy?)39^(OrK$7yyJFj1UPre9^e=rtX;@DCV>!gl5zg^5W z2fa3K@086w5;YK3WhatIj+m=qYbD$5qZ~&aoei>^`b6O52$#6(L!m%_b-B{`++f_> zjr$sk*D^W~%Kt9=8AzQ_&*_@Z21Z-*ek%JHh54_eKj9ep?IcbjUYP9U$NJ;_0S`(1 zO~hz^et87G{``&z-~9aY2zvhc-O(re-(UIv>c1CVJY-onJ3Z0+3YGB(_$4p%;BGGL Hk^6rECl|x_ diff --git a/img/figure-2.svg b/img/figure-2.svg new file mode 100644 index 0000000000..8e9ecf5f71 --- /dev/null +++ b/img/figure-2.svg @@ -0,0 +1,301 @@ + + + + + + + + + + + + Object.prototype + + + + + + + + Function.prototype + + + @@hasInstance() + apply() + bind() + call() + + + + + + + + %GeneratorFunction.prototype% + + + @@toStringTag = + "GeneratorFunction" + + + + + + + «constructor» + «callable» + Function + + + + + + + «constructor» + «callable» + %GeneratorFunction% + + + + + + + + %IteratorPrototype% + + + @@iterator() : object + + + + + + + + + %GeneratorFunction.prototype.prototype% + + + @@toStringTag = "Generator" + + + next() : object + return() + throw() + + + + + + + + + «callable» + function *g1() { yield; } + + + + + + + g1.prototype + + + + + + + g1() + + + + + + + + + [[Prototype]] of + Object.prototype is null + + + + + + + %GeneratorFunction.prototype% + is an ordinary object that serves + as the abstract constructor of + Generator instances. + + + + + + + %GeneratorFunction% and + %GeneratorFunction.prototype% + do not have global names. + %GeneratorFunction% is + essentially a subclass of + Function and is structured as + if it were declared as: + class extends Function { } + + + + + + + A typical generator + function. It is not a + constructor. + + + + + + + Each Generator Function has an associated + prototype that does not have a constructor + property. Hence a generator instance does not + expose access to its generator function. + But the prototype may be used to add additional + behavior to its generator function's instances. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + constructor + prototype + + + constructor + prototype + + + prototype + + + + + instanceof + + + instanceof + + + + + + + + + + + + + diff --git a/spec.html b/spec.html index 564755c931..2eeb626682 100644 --- a/spec.html +++ b/spec.html @@ -47259,7 +47259,7 @@

    Properties of Promise Instances

    GeneratorFunction Objects

    GeneratorFunctions are functions that are usually created by evaluating |GeneratorDeclaration|s, |GeneratorExpression|s, and |GeneratorMethod|s. They may also be created by calling the %GeneratorFunction% intrinsic.

    - A staggering variety of boxes and arrows. + A staggering variety of boxes and arrows. From a2315194870aaecbb6aff24f16120aaa2f652e1f Mon Sep 17 00:00:00 2001 From: Tooru Fujisawa Date: Wed, 10 Jan 2024 12:25:54 -0800 Subject: [PATCH 09/69] Editorial: Remove PNG for the prototype graph (#3239) --- img/figure-1.png | Bin 17523 -> 0 bytes spec.html | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 img/figure-1.png diff --git a/img/figure-1.png b/img/figure-1.png deleted file mode 100644 index 412f6751d417e07c64f3ee860d1736a22edecdb1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17523 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

    Even though ECMAScript includes syntax for class definitions, ECMAScript objects are not fundamentally class-based such as those in C++, Smalltalk, or Java. Instead objects may be created in various ways including via a literal notation or via constructors which create objects and then execute code that initializes all or part of them by assigning initial values to their properties. Each constructor is a function that has a property named *"prototype"* that is used to implement prototype-based inheritance and shared properties. Objects are created by using constructors in new expressions; for example, `new Date(2009, 11)` creates a new Date object. Invoking a constructor without using new has consequences that depend on the constructor. For example, `Date()` produces a string representation of the current date and time rather than an object.

    Every object created by a constructor has an implicit reference (called the object's prototype) to the value of its constructor's *"prototype"* property. Furthermore, a prototype may have a non-*null* implicit reference to its prototype, and so on; this is called the prototype chain. When a reference is made to a property in an object, that reference is to the property of that name in the first object in the prototype chain that contains a property of that name. In other words, first the object mentioned directly is examined for such a property; if that object contains the named property, that is the property to which the reference refers; if that object does not contain the named property, the prototype for that object is examined next; and so on.

    - An image of lots of boxes and arrows. + An image of lots of boxes and arrows.

    In a class-based object-oriented language, in general, state is carried by instances, methods are carried by classes, and inheritance is only of structure and behaviour. In ECMAScript, the state and methods are carried by objects, while structure, behaviour, and state are all inherited.

    All objects that do not directly contain a particular property that their prototype contains share that property and its value. Figure 1 illustrates this:

    From 7d2644968bd56d54d2886c012d18698ff3f72c35 Mon Sep 17 00:00:00 2001 From: Michael Ficarra Date: Wed, 10 Jan 2024 13:03:41 -0800 Subject: [PATCH 10/69] Editorial: use the correct type notation for GetSubstitution's captures (#3252) --- spec.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec.html b/spec.html index 0620379f3d..c629c1c1b8 100644 --- a/spec.html +++ b/spec.html @@ -34986,7 +34986,7 @@

    _matched_: a String, _str_: a String, _position_: a non-negative integer, - _captures_: a possibly empty List, each of whose elements is a String or *undefined*, + _captures_: a List of either Strings or *undefined*, _namedCaptures_: an Object or *undefined*, _replacementTemplate_: a String, ): either a normal completion containing a String or a throw completion From 92d2410a3d91eb7e17cf6e06e1be3d4aff7a6f0a Mon Sep 17 00:00:00 2001 From: Michael Ficarra Date: Thu, 11 Jan 2024 13:42:41 -0800 Subject: [PATCH 11/69] Editorial: avoid using % notation with an alias (#3245) --- spec.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec.html b/spec.html index c629c1c1b8..1a9b59d689 100644 --- a/spec.html +++ b/spec.html @@ -31103,7 +31103,7 @@

    Properties of the _NativeError_ Prototype Objects

    _NativeError_.prototype.constructor

    -

    The initial value of the *"constructor"* property of the prototype for a given _NativeError_ constructor is the corresponding intrinsic object %_NativeError_% ().

    +

    The initial value of the *"constructor"* property of the prototype for a given _NativeError_ constructor is the constructor itself.

    @@ -41743,7 +41743,7 @@

    _TypedArray_.prototype.BYTES_PER_ELEMENT

    _TypedArray_.prototype.constructor

    -

    The initial value of a _TypedArray_`.prototype.constructor` is the corresponding %TypedArray% intrinsic object.

    +

    The initial value of the *"constructor"* property of the prototype for a given _TypedArray_ constructor is the constructor itself.

    From 22de3740fc90456b0381e4373eda42c979bba482 Mon Sep 17 00:00:00 2001 From: Shu-yu Guo Date: Thu, 11 Jan 2024 13:58:26 -0800 Subject: [PATCH 12/69] Normative: Recompute count in TA.p.slice (#3255) Closes #3248. The current algorithm has a bug that can result in OOB reads in the source TA, because _count_ is not correctly recomputed when the source TA is resized during evaluation of the species constructor. (It is currently bounded by _len_, which is recomputed, but this is incorrect because the bounds of the copy loop is not on the length, but instead on how many bytes need to be copied.) --- spec.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spec.html b/spec.html index 1a9b59d689..a068559e70 100644 --- a/spec.html +++ b/spec.html @@ -41112,6 +41112,7 @@

    %TypedArray%.prototype.slice ( _start_, _end_ )

    1. If IsTypedArrayOutOfBounds(_taRecord_) is *true*, throw a *TypeError* exception. 1. Set _len_ to TypedArrayLength(_taRecord_). 1. Set _final_ to min(_final_, _len_). + 1. Set _count_ to max(_final_ - _k_, 0). 1. Let _srcType_ be TypedArrayElementType(_O_). 1. Let _targetType_ be TypedArrayElementType(_A_). 1. If _srcType_ is _targetType_, then @@ -41122,7 +41123,7 @@

    %TypedArray%.prototype.slice ( _start_, _end_ )

    1. Let _srcByteOffset_ be _O_.[[ByteOffset]]. 1. Let _srcByteIndex_ be (_k_ × _elementSize_) + _srcByteOffset_. 1. Let _targetByteIndex_ be _A_.[[ByteOffset]]. - 1. Let _limit_ be _targetByteIndex_ + min(_count_, _len_) × _elementSize_. + 1. Let _limit_ be _targetByteIndex_ + (_count_ × _elementSize_). 1. Repeat, while _targetByteIndex_ < _limit_, 1. Let _value_ be GetValueFromBuffer(_srcBuffer_, _srcByteIndex_, ~uint8~, *true*, ~unordered~). 1. Perform SetValueInBuffer(_targetBuffer_, _targetByteIndex_, ~uint8~, _value_, *true*, ~unordered~). From 17d66b5e69c6319da665fb5f49340e267610b911 Mon Sep 17 00:00:00 2001 From: Kevin Gibbons Date: Wed, 17 Jan 2024 14:33:07 -0800 Subject: [PATCH 13/69] Editorial: document that functions are objects (#3250) --- spec.html | 1 + 1 file changed, 1 insertion(+) diff --git a/spec.html b/spec.html index a068559e70..c675913443 100644 --- a/spec.html +++ b/spec.html @@ -2713,6 +2713,7 @@

    The Object Type

    Property keys are used to access properties and their values. There are two kinds of access for properties: get and set, corresponding to value retrieval and assignment, respectively. The properties accessible via get and set access includes both own properties that are a direct part of an object and inherited properties which are provided by another associated object via a property inheritance relationship. Inherited properties may be either own or inherited properties of the associated object. Each own property of an object must each have a key value that is distinct from the key values of the other own properties of that object.

    All objects are logically collections of properties, but there are multiple forms of objects that differ in their semantics for accessing and manipulating their properties. Please see for definitions of the multiple forms of objects.

    +

    In addition, some objects are callable; these are referred to as functions or function objects and are described further below. All functions in ECMAScript are members of the Object type.

    Property Attributes

    From 896943313a2a3613fffa03b409ee150af03cf79d Mon Sep 17 00:00:00 2001 From: Shu-yu Guo Date: Wed, 17 Jan 2024 14:39:17 -0800 Subject: [PATCH 14/69] Editorial: Improve readability of TypedArray methods (#3258) Broadly, this PR follows the following conventions for TA methods that take start and end parameters, - The aliases for parameters are start and end - The relative values for the parameters, after coercion, are called relativeStart and relativeEnd - The absolute index values are called startIndex and endIndex Also explicitly parenthesize multiplication in element size computations. --- spec.html | 99 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 50 insertions(+), 49 deletions(-) diff --git a/spec.html b/spec.html index c675913443..a67ce4ea1a 100644 --- a/spec.html +++ b/spec.html @@ -40542,18 +40542,18 @@

    %TypedArray%.prototype.copyWithin ( _target_, _start_ [ , _end_ ] )

    1. Let _taRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). 1. Let _len_ be TypedArrayLength(_taRecord_). 1. Let _relativeTarget_ be ? ToIntegerOrInfinity(_target_). - 1. If _relativeTarget_ = -∞, let _to_ be 0. - 1. Else if _relativeTarget_ < 0, let _to_ be max(_len_ + _relativeTarget_, 0). - 1. Else, let _to_ be min(_relativeTarget_, _len_). + 1. If _relativeTarget_ = -∞, let _targetIndex_ be 0. + 1. Else if _relativeTarget_ < 0, let _targetIndex_ be max(_len_ + _relativeTarget_, 0). + 1. Else, let _targetIndex_ be min(_relativeTarget_, _len_). 1. Let _relativeStart_ be ? ToIntegerOrInfinity(_start_). - 1. If _relativeStart_ = -∞, let _from_ be 0. - 1. Else if _relativeStart_ < 0, let _from_ be max(_len_ + _relativeStart_, 0). - 1. Else, let _from_ be min(_relativeStart_, _len_). + 1. If _relativeStart_ = -∞, let _startIndex_ be 0. + 1. Else if _relativeStart_ < 0, let _startIndex_ be max(_len_ + _relativeStart_, 0). + 1. Else, let _startIndex_ be min(_relativeStart_, _len_). 1. If _end_ is *undefined*, let _relativeEnd_ be _len_; else let _relativeEnd_ be ? ToIntegerOrInfinity(_end_). - 1. If _relativeEnd_ = -∞, let _final_ be 0. - 1. Else if _relativeEnd_ < 0, let _final_ be max(_len_ + _relativeEnd_, 0). - 1. Else, let _final_ be min(_relativeEnd_, _len_). - 1. Let _count_ be min(_final_ - _from_, _len_ - _to_). + 1. If _relativeEnd_ = -∞, let _endIndex_ be 0. + 1. Else if _relativeEnd_ < 0, let _endIndex_ be max(_len_ + _relativeEnd_, 0). + 1. Else, let _endIndex_ be min(_relativeEnd_, _len_). + 1. Let _count_ be min(_endIndex_ - _startIndex_, _len_ - _targetIndex_). 1. If _count_ > 0, then 1. NOTE: The copying must be performed in a manner that preserves the bit-level encoding of the source data. 1. Let _buffer_ be _O_.[[ViewedArrayBuffer]]. @@ -40562,9 +40562,9 @@

    %TypedArray%.prototype.copyWithin ( _target_, _start_ [ , _end_ ] )

    1. Set _len_ to TypedArrayLength(_taRecord_). 1. Let _elementSize_ be TypedArrayElementSize(_O_). 1. Let _byteOffset_ be _O_.[[ByteOffset]]. - 1. Let _bufferByteLimit_ be _len_ × _elementSize_ + _byteOffset_. - 1. Let _toByteIndex_ be _to_ × _elementSize_ + _byteOffset_. - 1. Let _fromByteIndex_ be _from_ × _elementSize_ + _byteOffset_. + 1. Let _bufferByteLimit_ be (_len_ × _elementSize_) + _byteOffset_. + 1. Let _toByteIndex_ be (_targetIndex_ × _elementSize_) + _byteOffset_. + 1. Let _fromByteIndex_ be (_startIndex_ × _elementSize_) + _byteOffset_. 1. Let _countBytes_ be _count_ × _elementSize_. 1. If _fromByteIndex_ < _toByteIndex_ and _toByteIndex_ < _fromByteIndex_ + _countBytes_, then 1. Let _direction_ be -1. @@ -40627,18 +40627,19 @@

    %TypedArray%.prototype.fill ( _value_ [ , _start_ [ , _end_ ] ] )

    1. If _O_.[[ContentType]] is ~bigint~, set _value_ to ? ToBigInt(_value_). 1. Otherwise, set _value_ to ? ToNumber(_value_). 1. Let _relativeStart_ be ? ToIntegerOrInfinity(_start_). - 1. If _relativeStart_ = -∞, let _k_ be 0. - 1. Else if _relativeStart_ < 0, let _k_ be max(_len_ + _relativeStart_, 0). - 1. Else, let _k_ be min(_relativeStart_, _len_). + 1. If _relativeStart_ = -∞, let _startIndex_ be 0. + 1. Else if _relativeStart_ < 0, let _startIndex_ be max(_len_ + _relativeStart_, 0). + 1. Else, let _startIndex_ be min(_relativeStart_, _len_). 1. If _end_ is *undefined*, let _relativeEnd_ be _len_; else let _relativeEnd_ be ? ToIntegerOrInfinity(_end_). - 1. If _relativeEnd_ = -∞, let _final_ be 0. - 1. Else if _relativeEnd_ < 0, let _final_ be max(_len_ + _relativeEnd_, 0). - 1. Else, let _final_ be min(_relativeEnd_, _len_). + 1. If _relativeEnd_ = -∞, let _endIndex_ be 0. + 1. Else if _relativeEnd_ < 0, let _endIndex_ be max(_len_ + _relativeEnd_, 0). + 1. Else, let _endIndex_ be min(_relativeEnd_, _len_). 1. Set _taRecord_ to MakeTypedArrayWithBufferWitnessRecord(_O_, ~seq-cst~). 1. If IsTypedArrayOutOfBounds(_taRecord_) is *true*, throw a *TypeError* exception. 1. Set _len_ to TypedArrayLength(_taRecord_). - 1. Set _final_ to min(_final_, _len_). - 1. Repeat, while _k_ < _final_, + 1. Set _endIndex_ to min(_endIndex_, _len_). + 1. Let _k_ be _startIndex_. + 1. Repeat, while _k_ < _endIndex_, 1. Let _Pk_ be ! ToString(𝔽(_k_)). 1. Perform ! Set(_O_, _Pk_, _value_, *true*). 1. Set _k_ to _k_ + 1. @@ -41039,8 +41040,8 @@

    1. Let _srcByteIndex_ be 0. 1. Else, 1. Let _srcByteIndex_ be _srcByteOffset_. - 1. Let _targetByteIndex_ be _targetOffset_ × _targetElementSize_ + _targetByteOffset_. - 1. Let _limit_ be _targetByteIndex_ + _targetElementSize_ × _srcLength_. + 1. Let _targetByteIndex_ be (_targetOffset_ × _targetElementSize_) + _targetByteOffset_. + 1. Let _limit_ be _targetByteIndex_ + (_targetElementSize_ × _srcLength_). 1. If _srcType_ is _targetType_, then 1. NOTE: The transfer must be performed in a manner that preserves the bit-level encoding of the source data. 1. Repeat, while _targetByteIndex_ < _limit_, @@ -41097,23 +41098,22 @@

    %TypedArray%.prototype.slice ( _start_, _end_ )

    1. Let _O_ be the *this* value. 1. Let _taRecord_ be ? ValidateTypedArray(_O_, ~seq-cst~). - 1. Let _len_ be TypedArrayLength(_taRecord_). + 1. Let _srcArrayLength_ be TypedArrayLength(_taRecord_). 1. Let _relativeStart_ be ? ToIntegerOrInfinity(_start_). - 1. If _relativeStart_ = -∞, let _k_ be 0. - 1. Else if _relativeStart_ < 0, let _k_ be max(_len_ + _relativeStart_, 0). - 1. Else, let _k_ be min(_relativeStart_, _len_). - 1. If _end_ is *undefined*, let _relativeEnd_ be _len_; else let _relativeEnd_ be ? ToIntegerOrInfinity(_end_). - 1. If _relativeEnd_ = -∞, let _final_ be 0. - 1. Else if _relativeEnd_ < 0, let _final_ be max(_len_ + _relativeEnd_, 0). - 1. Else, let _final_ be min(_relativeEnd_, _len_). - 1. Let _count_ be max(_final_ - _k_, 0). - 1. Let _A_ be ? TypedArraySpeciesCreate(_O_, « 𝔽(_count_) »). - 1. If _count_ > 0, then + 1. If _relativeStart_ = -∞, let _startIndex_ be 0. + 1. Else if _relativeStart_ < 0, let _startIndex_ be max(_srcArrayLength_ + _relativeStart_, 0). + 1. Else, let _startIndex_ be min(_relativeStart_, _srcArrayLength_). + 1. If _end_ is *undefined*, let _relativeEnd_ be _srcArrayLength_; else let _relativeEnd_ be ? ToIntegerOrInfinity(_end_). + 1. If _relativeEnd_ = -∞, let _endIndex_ be 0. + 1. Else if _relativeEnd_ < 0, let _endIndex_ be max(_srcArrayLength_ + _relativeEnd_, 0). + 1. Else, let _endIndex_ be min(_relativeEnd_, _srcArrayLength_). + 1. Let _countBytes_ be max(_endIndex_ - _startIndex_, 0). + 1. Let _A_ be ? TypedArraySpeciesCreate(_O_, « 𝔽(_countBytes_) »). + 1. If _countBytes_ > 0, then 1. Set _taRecord_ to MakeTypedArrayWithBufferWitnessRecord(_O_, ~seq-cst~). 1. If IsTypedArrayOutOfBounds(_taRecord_) is *true*, throw a *TypeError* exception. - 1. Set _len_ to TypedArrayLength(_taRecord_). - 1. Set _final_ to min(_final_, _len_). - 1. Set _count_ to max(_final_ - _k_, 0). + 1. Set _endIndex_ to min(_endIndex_, TypedArrayLength(_taRecord_)). + 1. Set _countBytes_ to max(_endIndex_ - _startIndex_, 0). 1. Let _srcType_ be TypedArrayElementType(_O_). 1. Let _targetType_ be TypedArrayElementType(_A_). 1. If _srcType_ is _targetType_, then @@ -41122,17 +41122,18 @@

    %TypedArray%.prototype.slice ( _start_, _end_ )

    1. Let _targetBuffer_ be _A_.[[ViewedArrayBuffer]]. 1. Let _elementSize_ be TypedArrayElementSize(_O_). 1. Let _srcByteOffset_ be _O_.[[ByteOffset]]. - 1. Let _srcByteIndex_ be (_k_ × _elementSize_) + _srcByteOffset_. + 1. Let _srcByteIndex_ be (_startIndex_ × _elementSize_) + _srcByteOffset_. 1. Let _targetByteIndex_ be _A_.[[ByteOffset]]. - 1. Let _limit_ be _targetByteIndex_ + (_count_ × _elementSize_). - 1. Repeat, while _targetByteIndex_ < _limit_, + 1. Let _endByteIndex_ be _targetByteIndex_ + (_countBytes_ × _elementSize_). + 1. Repeat, while _targetByteIndex_ < _endByteIndex_, 1. Let _value_ be GetValueFromBuffer(_srcBuffer_, _srcByteIndex_, ~uint8~, *true*, ~unordered~). 1. Perform SetValueInBuffer(_targetBuffer_, _targetByteIndex_, ~uint8~, _value_, *true*, ~unordered~). 1. Set _srcByteIndex_ to _srcByteIndex_ + 1. 1. Set _targetByteIndex_ to _targetByteIndex_ + 1. 1. Else, 1. Let _n_ be 0. - 1. Repeat, while _k_ < _final_, + 1. Let _k_ be _startIndex_. + 1. Repeat, while _k_ < _endIndex_, 1. Let _Pk_ be ! ToString(𝔽(_k_)). 1. Let _kValue_ be ! Get(_O_, _Pk_). 1. Perform ! Set(_A_, ! ToString(𝔽(_n_)), _kValue_, *true*). @@ -41190,8 +41191,8 @@

    %TypedArray%.prototype.sort ( _comparefn_ )

    -

    %TypedArray%.prototype.subarray ( _begin_, _end_ )

    -

    This method returns a new _TypedArray_ whose element type is the element type of this _TypedArray_ and whose ArrayBuffer is the ArrayBuffer of this _TypedArray_, referencing the elements in the interval from _begin_ (inclusive) to _end_ (exclusive). If either _begin_ or _end_ is negative, it refers to an index from the end of the array, as opposed to from the beginning.

    +

    %TypedArray%.prototype.subarray ( _start_, _end_ )

    +

    This method returns a new _TypedArray_ whose element type is the element type of this _TypedArray_ and whose ArrayBuffer is the ArrayBuffer of this _TypedArray_, referencing the elements in the interval from _start_ (inclusive) to _end_ (exclusive). If either _start_ or _end_ is negative, it refers to an index from the end of the array, as opposed to from the beginning.

    It performs the following steps when called:

    1. Let _O_ be the *this* value. @@ -41203,13 +41204,13 @@

    %TypedArray%.prototype.subarray ( _begin_, _end_ )

    1. Let _srcLength_ be 0. 1. Else, 1. Let _srcLength_ be TypedArrayLength(_srcRecord_). - 1. Let _relativeBegin_ be ? ToIntegerOrInfinity(_begin_). - 1. If _relativeBegin_ = -∞, let _beginIndex_ be 0. - 1. Else if _relativeBegin_ < 0, let _beginIndex_ be max(_srcLength_ + _relativeBegin_, 0). - 1. Else, let _beginIndex_ be min(_relativeBegin_, _srcLength_). + 1. Let _relativeStart_ be ? ToIntegerOrInfinity(_start_). + 1. If _relativeStart_ = -∞, let _startIndex_ be 0. + 1. Else if _relativeStart_ < 0, let _startIndex_ be max(_srcLength_ + _relativeStart_, 0). + 1. Else, let _startIndex_ be min(_relativeStart_, _srcLength_). 1. Let _elementSize_ be TypedArrayElementSize(_O_). 1. Let _srcByteOffset_ be _O_.[[ByteOffset]]. - 1. Let _beginByteOffset_ be _srcByteOffset_ + _beginIndex_ × _elementSize_. + 1. Let _beginByteOffset_ be _srcByteOffset_ + (_startIndex_ × _elementSize_). 1. If _O_.[[ArrayLength]] is ~auto~ and _end_ is *undefined*, then 1. Let _argumentsList_ be « _buffer_, 𝔽(_beginByteOffset_) ». 1. Else, @@ -41217,7 +41218,7 @@

    %TypedArray%.prototype.subarray ( _begin_, _end_ )

    1. If _relativeEnd_ = -∞, let _endIndex_ be 0. 1. Else if _relativeEnd_ < 0, let _endIndex_ be max(_srcLength_ + _relativeEnd_, 0). 1. Else, let _endIndex_ be min(_relativeEnd_, _srcLength_). - 1. Let _newLength_ be max(_endIndex_ - _beginIndex_, 0). + 1. Let _newLength_ be max(_endIndex_ - _startIndex_, 0). 1. Let _argumentsList_ be « _buffer_, 𝔽(_beginByteOffset_), 𝔽(_newLength_) ». 1. Return ? TypedArraySpeciesCreate(_O_, _argumentsList_).
    From 8dafd76d8a018bdec038885b1dfcd4565e413c1f Mon Sep 17 00:00:00 2001 From: Michael Ficarra Date: Wed, 17 Jan 2024 15:19:47 -0800 Subject: [PATCH 15/69] Editorial: use correct term "current Realm Record" in HostEnqueuePromiseJob (#3257) --- spec.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec.html b/spec.html index a67ce4ea1a..a391ee17d1 100644 --- a/spec.html +++ b/spec.html @@ -12065,7 +12065,7 @@

    -

    The _realm_ for Jobs returned by NewPromiseResolveThenableJob is usually the result of calling GetFunctionRealm on the _then_ function object. The _realm_ for Jobs returned by NewPromiseReactionJob is usually the result of calling GetFunctionRealm on the handler if the handler is not *undefined*. If the handler is *undefined*, _realm_ is *null*. For both kinds of Jobs, when GetFunctionRealm completes abnormally (i.e. called on a revoked Proxy), _realm_ is the current Realm at the time of the GetFunctionRealm call. When the _realm_ is *null*, no user ECMAScript code will be evaluated and no new ECMAScript objects (e.g. Error objects) will be created. The WHATWG HTML specification (https://html.spec.whatwg.org/), for example, uses _realm_ to check for the ability to run script and for the entry concept.

    +

    The _realm_ for Jobs returned by NewPromiseResolveThenableJob is usually the result of calling GetFunctionRealm on the _then_ function object. The _realm_ for Jobs returned by NewPromiseReactionJob is usually the result of calling GetFunctionRealm on the handler if the handler is not *undefined*. If the handler is *undefined*, _realm_ is *null*. For both kinds of Jobs, when GetFunctionRealm completes abnormally (i.e. called on a revoked Proxy), _realm_ is the current Realm Record at the time of the GetFunctionRealm call. When the _realm_ is *null*, no user ECMAScript code will be evaluated and no new ECMAScript objects (e.g. Error objects) will be created. The WHATWG HTML specification (https://html.spec.whatwg.org/), for example, uses _realm_ to check for the ability to run script and for the entry concept.

    From a88ef724495bf0ca3d961e26885bf382aad4320c Mon Sep 17 00:00:00 2001 From: Michael Ficarra Date: Wed, 24 Jan 2024 16:38:38 -0800 Subject: [PATCH 16/69] Editorial: fix formatting of note step in DayFromYear (#3203) --- spec.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec.html b/spec.html index a391ee17d1..c8382c4cbc 100644 --- a/spec.html +++ b/spec.html @@ -32439,7 +32439,7 @@

    1. Let _ry_ be ℝ(_y_). - 1. NOTE: In the following steps, each `_numYearsN_` is the number of years divisible by N that occur between the epoch and the start of year _y_. (The number is negative if _y_ is before the epoch.) + 1. [declared="numYears1,numYears4,numYears100,numYears400"] NOTE: In the following steps, _numYears1_, _numYears4_, _numYears100_, and _numYears400_ represent the number of years divisible by 1, 4, 100, and 400, respectively, that occur between the epoch and the start of year _y_. The number is negative if _y_ is before the epoch. 1. Let _numYears1_ be (_ry_ - 1970). 1. Let _numYears4_ be floor((_ry_ - 1969) / 4). 1. Let _numYears100_ be floor((_ry_ - 1901) / 100). From 329069469609d8f05ad64c328e2295c171050ce4 Mon Sep 17 00:00:00 2001 From: zhangenming Date: Wed, 24 Jan 2024 16:53:18 -0800 Subject: [PATCH 17/69] Editorial: use _Pk_ for unity of content and form (#3249) --- spec.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spec.html b/spec.html index c8382c4cbc..d8777efc46 100644 --- a/spec.html +++ b/spec.html @@ -38773,10 +38773,10 @@

    Array.prototype.concat ( ..._items_ )

    1. If _n_ + _len_ > 253 - 1, throw a *TypeError* exception. 1. Let _k_ be 0. 1. Repeat, while _k_ < _len_, - 1. Let _P_ be ! ToString(𝔽(_k_)). - 1. Let _exists_ be ? HasProperty(_E_, _P_). + 1. Let _Pk_ be ! ToString(𝔽(_k_)). + 1. Let _exists_ be ? HasProperty(_E_, _Pk_). 1. If _exists_ is *true*, then - 1. Let _subElement_ be ? Get(_E_, _P_). + 1. Let _subElement_ be ? Get(_E_, _Pk_). 1. Perform ? CreateDataPropertyOrThrow(_A_, ! ToString(𝔽(_n_)), _subElement_). 1. Set _n_ to _n_ + 1. 1. Set _k_ to _k_ + 1. From 448d3cd819c36a99f39eeca0ff3f9f0bcf89e92d Mon Sep 17 00:00:00 2001 From: Jordan Harband Date: Mon, 29 Jan 2024 19:36:51 -0800 Subject: [PATCH 18/69] Meta: add an IPR exception --- scripts/check-form.js | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/check-form.js b/scripts/check-form.js index d145580a6a..2282f62540 100644 --- a/scripts/check-form.js +++ b/scripts/check-form.js @@ -98,6 +98,7 @@ const legacyCommitsWithUnknownAuthors = new Set([ 'cc46cc38b9374d13f958cc6992daaec73d5fbecd', 'f424bf075fe582ed8acc36e8a420ee713a21561a', // https://github.com/tc39/ecma262/pull/3142 'bea8d0d682fcf2be2a29564bd2ae66ab9dcce21c', // https://github.com/tc39/ecma262/pull/612, user deleted their github + '329069469609d8f05ad64c328e2295c171050ce4', // https://github.com/tc39/ecma262/pull/3249, commit email doesn't point to the github user ]); function getAuthorFromCommit(commitObj) { From 691d54882ff0e495fb513647cb3021994cfb47c4 Mon Sep 17 00:00:00 2001 From: Michael Ficarra Date: Mon, 29 Jan 2024 19:40:21 -0800 Subject: [PATCH 19/69] Editorial: move emu-note relating to floor next to definition of floor (#3270) --- spec.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec.html b/spec.html index d8777efc46..fcf26c8c6d 100644 --- a/spec.html +++ b/spec.html @@ -1084,11 +1084,11 @@

    Mathematical Operations

    The notation “_x_ modulo _y_” (_y_ must be finite and non-zero) computes a value _k_ of the same sign as _y_ (or zero) such that abs(_k_) < abs(_y_) and _x_ - _k_ = _q_ × _y_ for some integer _q_.

    The phrase "the result of clamping _x_ between _lower_ and _upper_" (where _x_ is an extended mathematical value and _lower_ and _upper_ are mathematical values such that _lower_ ≤ _upper_) produces _lower_ if _x_ < _lower_, produces _upper_ if _x_ > _upper_, and otherwise produces _x_.

    The mathematical function floor(_x_) produces the largest integer (closest to +∞) that is not larger than _x_.

    -

    The mathematical function truncate(_x_) removes the fractional part of _x_ by rounding towards zero, producing -floor(-_x_) if _x_ < 0 and otherwise producing floor(_x_).

    -

    Mathematical functions min, max, abs, floor, and truncate are not defined for Numbers and BigInts, and any usage of those methods that have non-mathematical value arguments would be an editorial error in this specification.

    floor(_x_) = _x_ - (_x_ modulo 1).

    +

    The mathematical function truncate(_x_) removes the fractional part of _x_ by rounding towards zero, producing -floor(-_x_) if _x_ < 0 and otherwise producing floor(_x_).

    +

    Mathematical functions min, max, abs, floor, and truncate are not defined for Numbers and BigInts, and any usage of those methods that have non-mathematical value arguments would be an editorial error in this specification.

    An interval from lower bound _a_ to upper bound _b_ is a possibly-infinite, possibly-empty set of numeric values of the same numeric type. Each bound will be described as either inclusive or exclusive, but not both. There are four kinds of intervals, as follows:

    • An interval from _a_ (inclusive) to _b_ (inclusive), also called an inclusive interval from _a_ to _b_, includes all values _x_ of the same numeric type such that _a_ ≤ _x_ ≤ _b_, and no others.
    • From 12d368729c4a8576c9b7d1344366ff200db46590 Mon Sep 17 00:00:00 2001 From: Kevin Gibbons Date: Tue, 30 Jan 2024 16:15:06 -0800 Subject: [PATCH 20/69] Editorial: Introduce IteratorStepValue AO combining IteratorStep and IteratorValue (#3268) --- spec.html | 251 ++++++++++++++++++++++-------------------------------- 1 file changed, 101 insertions(+), 150 deletions(-) diff --git a/spec.html b/spec.html index fcf26c8c6d..1faa30de6f 100644 --- a/spec.html +++ b/spec.html @@ -6813,10 +6813,10 @@

      1. If _k_ ≥ 253 - 1, then 1. Let _error_ be ThrowCompletion(a newly created *TypeError* object). 1. Return ? IteratorClose(_iteratorRecord_, _error_). - 1. Let _next_ be ? IteratorStep(_iteratorRecord_). - 1. If _next_ is *false*, then + 1. Let _next_ be ? IteratorStepValue(_iteratorRecord_). + 1. If _next_ is ~done~, then 1. Return _groups_. - 1. Let _value_ be ? IteratorValue(_next_). + 1. Let _value_ be _next_. 1. Let _key_ be Completion(Call(_callbackfn_, *undefined*, « _value_, 𝔽(_k_) »)). 1. IfAbruptCloseIterator(_key_, _iteratorRecord_). 1. If _keyCoercion_ is ~property~, then @@ -6994,6 +6994,37 @@

      + +

      + IteratorStepValue ( + _iteratorRecord_: an Iterator Record, + ): either a normal completion containing either an ECMAScript language value or ~done~, or a throw completion +

      +
      +
      description
      +
      It requests the next value from _iteratorRecord_.[[Iterator]] by calling _iteratorRecord_.[[NextMethod]] and returns either ~done~ indicating that the iterator has reached its end or the value from the IteratorResult object if a next value is available.
      +
      + + 1. Let _result_ be Completion(IteratorNext(_iteratorRecord_)). + 1. If _result_ is a throw completion, then + 1. Set _iteratorRecord_.[[Done]] to *true*. + 1. Return ? _result_. + 1. Set _result_ to ! _result_. + 1. Let _done_ be Completion(IteratorComplete(_result_)). + 1. If _done_ is a throw completion, then + 1. Set _iteratorRecord_.[[Done]] to *true*. + 1. Return ? _done_. + 1. Set _done_ to ! _done_. + 1. If _done_ is *true*, then + 1. Set _iteratorRecord_.[[Done]] to *true*. + 1. Return ~done~. + 1. Let _value_ be Completion(Get(_result_, *"value"*)). + 1. If _value_ is a throw completion, then + 1. Set _iteratorRecord_.[[Done]] to *true*. + 1. Return ? _value_. + +
      +

      IteratorClose ( @@ -7113,13 +7144,11 @@

      1. Let _values_ be a new empty List. - 1. Let _next_ be *true*. - 1. Repeat, while _next_ is not *false*, - 1. Set _next_ to ? IteratorStep(_iteratorRecord_). - 1. If _next_ is not *false*, then - 1. Let _nextValue_ be ? IteratorValue(_next_). - 1. Append _nextValue_ to _values_. - 1. Return _values_. + 1. Repeat, + 1. Let _next_ be ? IteratorStepValue(_iteratorRecord_). + 1. If _next_ is ~done~, then + 1. Return _values_. + 1. Append _next_ to _values_. @@ -9556,15 +9585,9 @@

      1. Let _lhs_ be ? ResolveBinding(_bindingId_, _environment_). 1. Let _v_ be *undefined*. 1. If _iteratorRecord_.[[Done]] is *false*, then - 1. Let _next_ be Completion(IteratorStep(_iteratorRecord_)). - 1. If _next_ is an abrupt completion, set _iteratorRecord_.[[Done]] to *true*. - 1. ReturnIfAbrupt(_next_). - 1. If _next_ is *false*, then - 1. Set _iteratorRecord_.[[Done]] to *true*. - 1. Else, - 1. Set _v_ to Completion(IteratorValue(_next_)). - 1. If _v_ is an abrupt completion, set _iteratorRecord_.[[Done]] to *true*. - 1. ReturnIfAbrupt(_v_). + 1. Let _next_ be ? IteratorStepValue(_iteratorRecord_). + 1. If _next_ is not ~done~, then + 1. Set _v_ to _next_. 1. If |Initializer| is present and _v_ is *undefined*, then 1. If IsAnonymousFunctionDefinition(|Initializer|) is *true*, then 1. Set _v_ to ? NamedEvaluation of |Initializer| with argument _bindingId_. @@ -9578,15 +9601,9 @@

      1. Let _v_ be *undefined*. 1. If _iteratorRecord_.[[Done]] is *false*, then - 1. Let _next_ be Completion(IteratorStep(_iteratorRecord_)). - 1. If _next_ is an abrupt completion, set _iteratorRecord_.[[Done]] to *true*. - 1. ReturnIfAbrupt(_next_). - 1. If _next_ is *false*, then - 1. Set _iteratorRecord_.[[Done]] to *true*. - 1. Else, - 1. Set _v_ to Completion(IteratorValue(_next_)). - 1. If _v_ is an abrupt completion, set _iteratorRecord_.[[Done]] to *true*. - 1. ReturnIfAbrupt(_v_). + 1. Let _next_ be ? IteratorStepValue(_iteratorRecord_). + 1. If _next_ is not ~done~, then + 1. Set _v_ to _next_. 1. If |Initializer| is present and _v_ is *undefined*, then 1. Let _defaultValue_ be ? Evaluation of |Initializer|. 1. Set _v_ to ? GetValue(_defaultValue_). @@ -9598,18 +9615,13 @@

      1. Let _A_ be ! ArrayCreate(0). 1. Let _n_ be 0. 1. Repeat, + 1. Let _next_ be ~done~. 1. If _iteratorRecord_.[[Done]] is *false*, then - 1. Let _next_ be Completion(IteratorStep(_iteratorRecord_)). - 1. If _next_ is an abrupt completion, set _iteratorRecord_.[[Done]] to *true*. - 1. ReturnIfAbrupt(_next_). - 1. If _next_ is *false*, set _iteratorRecord_.[[Done]] to *true*. - 1. If _iteratorRecord_.[[Done]] is *true*, then + 1. Set _next_ to ? IteratorStepValue(_iteratorRecord_). + 1. If _next_ is ~done~, then 1. If _environment_ is *undefined*, return ? PutValue(_lhs_, _A_). 1. Return ? InitializeReferencedBinding(_lhs_, _A_). - 1. Let _nextValue_ be Completion(IteratorValue(_next_)). - 1. If _nextValue_ is an abrupt completion, set _iteratorRecord_.[[Done]] to *true*. - 1. ReturnIfAbrupt(_nextValue_). - 1. Perform ! CreateDataPropertyOrThrow(_A_, ! ToString(𝔽(_n_)), _nextValue_). + 1. Perform ! CreateDataPropertyOrThrow(_A_, ! ToString(𝔽(_n_)), _next_). 1. Set _n_ to _n_ + 1. BindingRestElement : `...` BindingPattern @@ -9617,17 +9629,12 @@

      1. Let _A_ be ! ArrayCreate(0). 1. Let _n_ be 0. 1. Repeat, + 1. Let _next_ be ~done~. 1. If _iteratorRecord_.[[Done]] is *false*, then - 1. Let _next_ be Completion(IteratorStep(_iteratorRecord_)). - 1. If _next_ is an abrupt completion, set _iteratorRecord_.[[Done]] to *true*. - 1. ReturnIfAbrupt(_next_). - 1. If _next_ is *false*, set _iteratorRecord_.[[Done]] to *true*. - 1. If _iteratorRecord_.[[Done]] is *true*, then + 1. Set _next_ to ? IteratorStepValue(_iteratorRecord_). + 1. If _next_ is ~done~, then 1. Return ? BindingInitialization of |BindingPattern| with arguments _A_ and _environment_. - 1. Let _nextValue_ be Completion(IteratorValue(_next_)). - 1. If _nextValue_ is an abrupt completion, set _iteratorRecord_.[[Done]] to *true*. - 1. ReturnIfAbrupt(_nextValue_). - 1. Perform ! CreateDataPropertyOrThrow(_A_, ! ToString(𝔽(_n_)), _nextValue_). + 1. Perform ! CreateDataPropertyOrThrow(_A_, ! ToString(𝔽(_n_)), _next_). 1. Set _n_ to _n_ + 1. FormalParameters : [empty] @@ -9648,15 +9655,9 @@

      1. Let _v_ be *undefined*. 1. Assert: _iteratorRecord_.[[Done]] is *false*. - 1. Let _next_ be Completion(IteratorStep(_iteratorRecord_)). - 1. If _next_ is an abrupt completion, set _iteratorRecord_.[[Done]] to *true*. - 1. ReturnIfAbrupt(_next_). - 1. If _next_ is *false*, then - 1. Set _iteratorRecord_.[[Done]] to *true*. - 1. Else, - 1. Set _v_ to Completion(IteratorValue(_next_)). - 1. If _v_ is an abrupt completion, set _iteratorRecord_.[[Done]] to *true*. - 1. ReturnIfAbrupt(_v_). + 1. Let _next_ be ? IteratorStepValue(_iteratorRecord_). + 1. If _next_ is not ~done~, then + 1. Set _v_ to _next_. 1. Return ? BindingInitialization of |BindingIdentifier| with arguments _v_ and _environment_. ArrowParameters : CoverParenthesizedExpressionAndArrowParameterList @@ -9670,15 +9671,9 @@

      1. Let _v_ be *undefined*. 1. Assert: _iteratorRecord_.[[Done]] is *false*. - 1. Let _next_ be Completion(IteratorStep(_iteratorRecord_)). - 1. If _next_ is an abrupt completion, set _iteratorRecord_.[[Done]] to *true*. - 1. ReturnIfAbrupt(_next_). - 1. If _next_ is *false*, then - 1. Set _iteratorRecord_.[[Done]] to *true*. - 1. Else, - 1. Set _v_ to Completion(IteratorValue(_next_)). - 1. If _v_ is an abrupt completion, set _iteratorRecord_.[[Done]] to *true*. - 1. ReturnIfAbrupt(_v_). + 1. Let _next_ be ? IteratorStepValue(_iteratorRecord_). + 1. If _next_ is not ~done~, then + 1. Set _v_ to _next_. 1. Return ? BindingInitialization of |BindingIdentifier| with arguments _v_ and _environment_. @@ -18378,10 +18373,9 @@

      1. Let _spreadObj_ be ? GetValue(_spreadRef_). 1. Let _iteratorRecord_ be ? GetIterator(_spreadObj_, ~sync~). 1. Repeat, - 1. Let _next_ be ? IteratorStep(_iteratorRecord_). - 1. If _next_ is *false*, return _nextIndex_. - 1. Let _nextValue_ be ? IteratorValue(_next_). - 1. Perform ! CreateDataPropertyOrThrow(_array_, ! ToString(𝔽(_nextIndex_)), _nextValue_). + 1. Let _next_ be ? IteratorStepValue(_iteratorRecord_). + 1. If _next_ is ~done~, return _nextIndex_. + 1. Perform ! CreateDataPropertyOrThrow(_array_, ! ToString(𝔽(_nextIndex_)), _next_). 1. Set _nextIndex_ to _nextIndex_ + 1. @@ -19425,10 +19419,9 @@

      Runtime Semantics: ArgumentListEvaluation ( ): either a normal completion co 1. Let _spreadObj_ be ? GetValue(_spreadRef_). 1. Let _iteratorRecord_ be ? GetIterator(_spreadObj_, ~sync~). 1. Repeat, - 1. Let _next_ be ? IteratorStep(_iteratorRecord_). - 1. If _next_ is *false*, return _list_. - 1. Let _nextArg_ be ? IteratorValue(_next_). - 1. Append _nextArg_ to _list_. + 1. Let _next_ be ? IteratorStepValue(_iteratorRecord_). + 1. If _next_ is ~done~, return _list_. + 1. Append _next_ to _list_. ArgumentList : ArgumentList `,` AssignmentExpression @@ -19443,10 +19436,9 @@

      Runtime Semantics: ArgumentListEvaluation ( ): either a normal completion co 1. Let _spreadRef_ be ? Evaluation of |AssignmentExpression|. 1. Let _iteratorRecord_ be ? GetIterator(? GetValue(_spreadRef_), ~sync~). 1. Repeat, - 1. Let _next_ be ? IteratorStep(_iteratorRecord_). - 1. If _next_ is *false*, return _precedingArgs_. - 1. Let _nextArg_ be ? IteratorValue(_next_). - 1. Append _nextArg_ to _precedingArgs_. + 1. Let _next_ be ? IteratorStepValue(_iteratorRecord_). + 1. If _next_ is ~done~, return _precedingArgs_. + 1. Append _next_ to _precedingArgs_. TemplateLiteral : NoSubstitutionTemplate @@ -21010,15 +21002,9 @@

      1. If |DestructuringAssignmentTarget| is neither an |ObjectLiteral| nor an |ArrayLiteral|, then 1. Let _lref_ be ? Evaluation of |DestructuringAssignmentTarget|. 1. If _iteratorRecord_.[[Done]] is *false*, then - 1. Let _next_ be Completion(IteratorStep(_iteratorRecord_)). - 1. If _next_ is an abrupt completion, set _iteratorRecord_.[[Done]] to *true*. - 1. ReturnIfAbrupt(_next_). - 1. If _next_ is *false*, then - 1. Set _iteratorRecord_.[[Done]] to *true*. - 1. Else, - 1. Let _value_ be Completion(IteratorValue(_next_)). - 1. If _value_ is an abrupt completion, set _iteratorRecord_.[[Done]] to *true*. - 1. ReturnIfAbrupt(_value_). + 1. Let _next_ be ? IteratorStepValue(_iteratorRecord_). + 1. If _next_ is not ~done~, then + 1. Let _value_ be _next_. 1. If _iteratorRecord_.[[Done]] is *true*, let _value_ be *undefined*. 1. If |Initializer| is present and _value_ is *undefined*, then 1. If IsAnonymousFunctionDefinition(|Initializer|) is *true* and IsIdentifierRef of |DestructuringAssignmentTarget| is *true*, then @@ -21043,16 +21029,9 @@

      1. Let _A_ be ! ArrayCreate(0). 1. Let _n_ be 0. 1. Repeat, while _iteratorRecord_.[[Done]] is *false*, - 1. Let _next_ be Completion(IteratorStep(_iteratorRecord_)). - 1. If _next_ is an abrupt completion, set _iteratorRecord_.[[Done]] to *true*. - 1. ReturnIfAbrupt(_next_). - 1. If _next_ is *false*, then - 1. Set _iteratorRecord_.[[Done]] to *true*. - 1. Else, - 1. Let _nextValue_ be Completion(IteratorValue(_next_)). - 1. If _nextValue_ is an abrupt completion, set _iteratorRecord_.[[Done]] to *true*. - 1. ReturnIfAbrupt(_nextValue_). - 1. Perform ! CreateDataPropertyOrThrow(_A_, ! ToString(𝔽(_n_)), _nextValue_). + 1. Let _next_ be ? IteratorStepValue(_iteratorRecord_). + 1. If _next_ is not ~done~, then + 1. Perform ! CreateDataPropertyOrThrow(_A_, ! ToString(𝔽(_n_)), _next_). 1. Set _n_ to _n_ + 1. 1. If |DestructuringAssignmentTarget| is neither an |ObjectLiteral| nor an |ArrayLiteral|, then 1. Return ? PutValue(_lref_, _A_). @@ -38639,16 +38618,15 @@

      Array.from ( _items_ [ , _mapfn_ [ , _thisArg_ ] ] )

      1. Let _error_ be ThrowCompletion(a newly created *TypeError* object). 1. Return ? IteratorClose(_iteratorRecord_, _error_). 1. Let _Pk_ be ! ToString(𝔽(_k_)). - 1. Let _next_ be ? IteratorStep(_iteratorRecord_). - 1. If _next_ is *false*, then + 1. Let _next_ be ? IteratorStepValue(_iteratorRecord_). + 1. If _next_ is ~done~, then 1. Perform ? Set(_A_, *"length"*, 𝔽(_k_), *true*). 1. Return _A_. - 1. Let _nextValue_ be ? IteratorValue(_next_). 1. If _mapping_ is *true*, then - 1. Let _mappedValue_ be Completion(Call(_mapfn_, _thisArg_, « _nextValue_, 𝔽(_k_) »)). + 1. Let _mappedValue_ be Completion(Call(_mapfn_, _thisArg_, « _next_, 𝔽(_k_) »)). 1. IfAbruptCloseIterator(_mappedValue_, _iteratorRecord_). 1. Else, - 1. Let _mappedValue_ be _nextValue_. + 1. Let _mappedValue_ be _next_. 1. Let _defineStatus_ be Completion(CreateDataPropertyOrThrow(_A_, _Pk_, _mappedValue_)). 1. IfAbruptCloseIterator(_defineStatus_, _iteratorRecord_). 1. Set _k_ to _k_ + 1. @@ -41808,15 +41786,14 @@

      1. Let _iteratorRecord_ be ? GetIterator(_iterable_, ~sync~). 1. Repeat, - 1. Let _next_ be ? IteratorStep(_iteratorRecord_). - 1. If _next_ is *false*, return _target_. - 1. Let _nextItem_ be ? IteratorValue(_next_). - 1. If _nextItem_ is not an Object, then + 1. Let _next_ be ? IteratorStepValue(_iteratorRecord_). + 1. If _next_ is ~done~, return _target_. + 1. If _next_ is not an Object, then 1. Let _error_ be ThrowCompletion(a newly created *TypeError* object). 1. Return ? IteratorClose(_iteratorRecord_, _error_). - 1. Let _k_ be Completion(Get(_nextItem_, *"0"*)). + 1. Let _k_ be Completion(Get(_next_, *"0"*)). 1. IfAbruptCloseIterator(_k_, _iteratorRecord_). - 1. Let _v_ be Completion(Get(_nextItem_, *"1"*)). + 1. Let _v_ be Completion(Get(_next_, *"1"*)). 1. IfAbruptCloseIterator(_v_, _iteratorRecord_). 1. Let _status_ be Completion(Call(_adder_, _target_, « _k_, _v_ »)). 1. IfAbruptCloseIterator(_status_, _iteratorRecord_). @@ -42141,10 +42118,9 @@

      Set ( [ _iterable_ ] )

      1. If IsCallable(_adder_) is *false*, throw a *TypeError* exception. 1. Let _iteratorRecord_ be ? GetIterator(_iterable_, ~sync~). 1. Repeat, - 1. Let _next_ be ? IteratorStep(_iteratorRecord_). - 1. If _next_ is *false*, return _set_. - 1. Let _nextValue_ be ? IteratorValue(_next_). - 1. Let _status_ be Completion(Call(_adder_, _set_, « _nextValue_ »)). + 1. Let _next_ be ? IteratorStepValue(_iteratorRecord_). + 1. If _next_ is ~done~, return _set_. + 1. Let _status_ be Completion(Call(_adder_, _set_, « _next_ »)). 1. IfAbruptCloseIterator(_status_, _iteratorRecord_).
      @@ -42580,10 +42556,9 @@

      WeakSet ( [ _iterable_ ] )

      1. If IsCallable(_adder_) is *false*, throw a *TypeError* exception. 1. Let _iteratorRecord_ be ? GetIterator(_iterable_, ~sync~). 1. Repeat, - 1. Let _next_ be ? IteratorStep(_iteratorRecord_). - 1. If _next_ is *false*, return _set_. - 1. Let _nextValue_ be ? IteratorValue(_next_). - 1. Let _status_ be Completion(Call(_adder_, _set_, « _nextValue_ »)). + 1. Let _next_ be ? IteratorStepValue(_iteratorRecord_). + 1. If _next_ is ~done~, return _set_. + 1. Let _status_ be Completion(Call(_adder_, _set_, « _next_ »)). 1. IfAbruptCloseIterator(_status_, _iteratorRecord_).
      @@ -46658,21 +46633,15 @@

      1. Let _remainingElementsCount_ be the Record { [[Value]]: 1 }. 1. Let _index_ be 0. 1. Repeat, - 1. Let _next_ be Completion(IteratorStep(_iteratorRecord_)). - 1. If _next_ is an abrupt completion, set _iteratorRecord_.[[Done]] to *true*. - 1. ReturnIfAbrupt(_next_). - 1. If _next_ is *false*, then - 1. Set _iteratorRecord_.[[Done]] to *true*. + 1. Let _next_ be ? IteratorStepValue(_iteratorRecord_). + 1. If _next_ is ~done~, then 1. Set _remainingElementsCount_.[[Value]] to _remainingElementsCount_.[[Value]] - 1. 1. If _remainingElementsCount_.[[Value]] = 0, then 1. Let _valuesArray_ be CreateArrayFromList(_values_). 1. Perform ? Call(_resultCapability_.[[Resolve]], *undefined*, « _valuesArray_ »). 1. Return _resultCapability_.[[Promise]]. - 1. Let _nextValue_ be Completion(IteratorValue(_next_)). - 1. If _nextValue_ is an abrupt completion, set _iteratorRecord_.[[Done]] to *true*. - 1. ReturnIfAbrupt(_nextValue_). 1. Append *undefined* to _values_. - 1. Let _nextPromise_ be ? Call(_promiseResolve_, _constructor_, « _nextValue_ »). + 1. Let _nextPromise_ be ? Call(_promiseResolve_, _constructor_, « _next_ »). 1. Let _steps_ be the algorithm steps defined in . 1. Let _length_ be the number of non-optional parameters of the function definition in . 1. Let _onFulfilled_ be CreateBuiltinFunction(_steps_, _length_, *""*, « [[AlreadyCalled]], [[Index]], [[Values]], [[Capability]], [[RemainingElements]] »). @@ -46746,21 +46715,15 @@

      1. Let _remainingElementsCount_ be the Record { [[Value]]: 1 }. 1. Let _index_ be 0. 1. Repeat, - 1. Let _next_ be Completion(IteratorStep(_iteratorRecord_)). - 1. If _next_ is an abrupt completion, set _iteratorRecord_.[[Done]] to *true*. - 1. ReturnIfAbrupt(_next_). - 1. If _next_ is *false*, then - 1. Set _iteratorRecord_.[[Done]] to *true*. + 1. Let _next_ be ? IteratorStepValue(_iteratorRecord_). + 1. If _next_ is ~done~, then 1. Set _remainingElementsCount_.[[Value]] to _remainingElementsCount_.[[Value]] - 1. 1. If _remainingElementsCount_.[[Value]] = 0, then 1. Let _valuesArray_ be CreateArrayFromList(_values_). 1. Perform ? Call(_resultCapability_.[[Resolve]], *undefined*, « _valuesArray_ »). 1. Return _resultCapability_.[[Promise]]. - 1. Let _nextValue_ be Completion(IteratorValue(_next_)). - 1. If _nextValue_ is an abrupt completion, set _iteratorRecord_.[[Done]] to *true*. - 1. ReturnIfAbrupt(_nextValue_). 1. Append *undefined* to _values_. - 1. Let _nextPromise_ be ? Call(_promiseResolve_, _constructor_, « _nextValue_ »). + 1. Let _nextPromise_ be ? Call(_promiseResolve_, _constructor_, « _next_ »). 1. Let _stepsFulfilled_ be the algorithm steps defined in . 1. Let _lengthFulfilled_ be the number of non-optional parameters of the function definition in . 1. Let _onFulfilled_ be CreateBuiltinFunction(_stepsFulfilled_, _lengthFulfilled_, *""*, « [[AlreadyCalled]], [[Index]], [[Values]], [[Capability]], [[RemainingElements]] »). @@ -46873,22 +46836,16 @@

      1. Let _remainingElementsCount_ be the Record { [[Value]]: 1 }. 1. Let _index_ be 0. 1. Repeat, - 1. Let _next_ be Completion(IteratorStep(_iteratorRecord_)). - 1. If _next_ is an abrupt completion, set _iteratorRecord_.[[Done]] to *true*. - 1. ReturnIfAbrupt(_next_). - 1. If _next_ is *false*, then - 1. Set _iteratorRecord_.[[Done]] to *true*. + 1. Let _next_ be ? IteratorStepValue(_iteratorRecord_). + 1. If _next_ is ~done~, then 1. Set _remainingElementsCount_.[[Value]] to _remainingElementsCount_.[[Value]] - 1. 1. If _remainingElementsCount_.[[Value]] = 0, then 1. Let _error_ be a newly created *AggregateError* object. 1. Perform ! DefinePropertyOrThrow(_error_, *"errors"*, PropertyDescriptor { [[Configurable]]: *true*, [[Enumerable]]: *false*, [[Writable]]: *true*, [[Value]]: CreateArrayFromList(_errors_) }). 1. Return ThrowCompletion(_error_). 1. Return _resultCapability_.[[Promise]]. - 1. Let _nextValue_ be Completion(IteratorValue(_next_)). - 1. If _nextValue_ is an abrupt completion, set _iteratorRecord_.[[Done]] to *true*. - 1. ReturnIfAbrupt(_nextValue_). 1. Append *undefined* to _errors_. - 1. Let _nextPromise_ be ? Call(_promiseResolve_, _constructor_, « _nextValue_ »). + 1. Let _nextPromise_ be ? Call(_promiseResolve_, _constructor_, « _next_ »). 1. Let _stepsRejected_ be the algorithm steps defined in . 1. Let _lengthRejected_ be the number of non-optional parameters of the function definition in . 1. Let _onRejected_ be CreateBuiltinFunction(_stepsRejected_, _lengthRejected_, *""*, « [[AlreadyCalled]], [[Index]], [[Errors]], [[Capability]], [[RemainingElements]] »). @@ -46969,16 +46926,10 @@

      1. Repeat, - 1. Let _next_ be Completion(IteratorStep(_iteratorRecord_)). - 1. If _next_ is an abrupt completion, set _iteratorRecord_.[[Done]] to *true*. - 1. ReturnIfAbrupt(_next_). - 1. If _next_ is *false*, then - 1. Set _iteratorRecord_.[[Done]] to *true*. + 1. Let _next_ be ? IteratorStepValue(_iteratorRecord_). + 1. If _next_ is ~done~, then 1. Return _resultCapability_.[[Promise]]. - 1. Let _nextValue_ be Completion(IteratorValue(_next_)). - 1. If _nextValue_ is an abrupt completion, set _iteratorRecord_.[[Done]] to *true*. - 1. ReturnIfAbrupt(_nextValue_). - 1. Let _nextPromise_ be ? Call(_promiseResolve_, _constructor_, « _nextValue_ »). + 1. Let _nextPromise_ be ? Call(_promiseResolve_, _constructor_, « _next_ »). 1. Perform ? Invoke(_nextPromise_, *"then"*, « _resultCapability_.[[Resolve]], _resultCapability_.[[Reject]] »). From 6d7aa1b57f4b3390000d939fdc1920046b81d938 Mon Sep 17 00:00:00 2001 From: Michael Ficarra Date: Tue, 30 Jan 2024 16:27:40 -0800 Subject: [PATCH 21/69] Editorial: avoid multiple declarations of an alias (#3275) --- spec.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec.html b/spec.html index 1faa30de6f..10fd3f8698 100644 --- a/spec.html +++ b/spec.html @@ -21001,11 +21001,11 @@

      1. If |DestructuringAssignmentTarget| is neither an |ObjectLiteral| nor an |ArrayLiteral|, then 1. Let _lref_ be ? Evaluation of |DestructuringAssignmentTarget|. + 1. Let _value_ be *undefined*. 1. If _iteratorRecord_.[[Done]] is *false*, then 1. Let _next_ be ? IteratorStepValue(_iteratorRecord_). 1. If _next_ is not ~done~, then - 1. Let _value_ be _next_. - 1. If _iteratorRecord_.[[Done]] is *true*, let _value_ be *undefined*. + 1. Set _value_ to _next_. 1. If |Initializer| is present and _value_ is *undefined*, then 1. If IsAnonymousFunctionDefinition(|Initializer|) is *true* and IsIdentifierRef of |DestructuringAssignmentTarget| is *true*, then 1. Let _v_ be ? NamedEvaluation of |Initializer| with argument _lref_.[[ReferencedName]]. From 94bf7d52348011fa4d7ce83ebc0e98a7f2129817 Mon Sep 17 00:00:00 2001 From: Kevin Gibbons Date: Wed, 31 Jan 2024 15:20:29 -0800 Subject: [PATCH 22/69] Editorial: tweak unwrapping of some normal completions (#3273) --- spec.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spec.html b/spec.html index 10fd3f8698..1acba1d27d 100644 --- a/spec.html +++ b/spec.html @@ -7061,7 +7061,7 @@

      IfAbruptCloseIterator ( _value_, _iteratorRecord_ )

      1. Assert: _value_ is a Completion Record. 1. If _value_ is an abrupt completion, return ? IteratorClose(_iteratorRecord_, _value_). - 1. Else, set _value_ to _value_.[[Value]]. + 1. Else, set _value_ to ! _value_. @@ -24974,7 +24974,7 @@

      1. Set the running execution context's LexicalEnvironment to _env_. 1. Set the running execution context's PrivateEnvironment to _outerPrivateEnvironment_. 1. Return ? _element_. - 1. Set _element_ to _element_.[[Value]]. + 1. Set _element_ to ! _element_. 1. If _element_ is a PrivateElement, then 1. Assert: _element_.[[Kind]] is either ~method~ or ~accessor~. 1. If IsStatic of _e_ is *false*, let _container_ be _instancePrivateMethods_. @@ -46189,7 +46189,7 @@

      IfAbruptRejectPromise ( _value_, _capability_ )

      1. Perform ? Call(_capability_.[[Reject]], *undefined*, « _value_.[[Value]] »). 1. Return _capability_.[[Promise]]. 1. Else, - 1. Set _value_ to _value_.[[Value]]. + 1. Set _value_ to ! _value_.
      From ddb41dd80ad1e04cfd52626766465e75e7750c57 Mon Sep 17 00:00:00 2001 From: Joshua Chen Date: Sun, 4 Feb 2024 22:02:21 -0800 Subject: [PATCH 23/69] Editorial: fix algorithm of Math.atan2 (#3170) --- spec.html | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/spec.html b/spec.html index 1acba1d27d..5ea77b7400 100644 --- a/spec.html +++ b/spec.html @@ -31937,7 +31937,13 @@

      Math.atan2 ( _y_, _x_ )

      1. If _nx_ is *-∞*𝔽, return an implementation-approximated Number value representing -π. 1. If _nx_ is either *+0*𝔽 or *-0*𝔽, return an implementation-approximated Number value representing -π / 2. 1. Assert: _nx_ is finite and is neither *+0*𝔽 nor *-0*𝔽. - 1. Return an implementation-approximated Number value representing the result of the inverse tangent of the quotient ℝ(_ny_) / ℝ(_nx_). + 1. Let _r_ be the inverse tangent of abs(ℝ(_ny_) / ℝ(_nx_)). + 1. If _nx_ < *-0*𝔽, then + 1. If _ny_ > *+0*𝔽, set _r_ to π - _r_. + 1. Else, set _r_ to -π + _r_. + 1. Else, + 1. If _ny_ < *-0*𝔽, set _r_ to -_r_. + 1. Return an implementation-approximated Number value representing _r_. From ab3e577da8840417776d2d8417951692960a2dbf Mon Sep 17 00:00:00 2001 From: Michael Ficarra Date: Sun, 4 Feb 2024 22:07:25 -0800 Subject: [PATCH 24/69] Meta: update ecmarkup (#3277) --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 892a6fc73c..5dceaad343 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "1.0.0", "license": "SEE LICENSE IN https://tc39.es/ecma262/#sec-copyright-and-software-license", "dependencies": { - "ecmarkup": "^18.1.0" + "ecmarkup": "^18.1.3" }, "devDependencies": { "glob": "^7.1.6", @@ -724,9 +724,9 @@ } }, "node_modules/ecmarkup": { - "version": "18.1.0", - "resolved": "https://registry.npmjs.org/ecmarkup/-/ecmarkup-18.1.0.tgz", - "integrity": "sha512-0ngQ2YYizUkswKZcCn8g8BlCoaEAN8R2DOZfupk0k2lnIWzUZJNxjld4lt97YTJxcZxVTMERmukZ8svBSz9UcQ==", + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/ecmarkup/-/ecmarkup-18.1.3.tgz", + "integrity": "sha512-grvHr/9NlFnOJQ9rL2+AlD1Q/IGT4siTdl1nsSi6gZVrOxIma6sBR9WStlr9s2TxtKXx7ouM18HsZ+RF9OJlHA==", "dependencies": { "chalk": "^4.1.2", "command-line-args": "^5.2.0", @@ -2940,9 +2940,9 @@ } }, "ecmarkup": { - "version": "18.1.0", - "resolved": "https://registry.npmjs.org/ecmarkup/-/ecmarkup-18.1.0.tgz", - "integrity": "sha512-0ngQ2YYizUkswKZcCn8g8BlCoaEAN8R2DOZfupk0k2lnIWzUZJNxjld4lt97YTJxcZxVTMERmukZ8svBSz9UcQ==", + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/ecmarkup/-/ecmarkup-18.1.3.tgz", + "integrity": "sha512-grvHr/9NlFnOJQ9rL2+AlD1Q/IGT4siTdl1nsSi6gZVrOxIma6sBR9WStlr9s2TxtKXx7ouM18HsZ+RF9OJlHA==", "requires": { "chalk": "^4.1.2", "command-line-args": "^5.2.0", diff --git a/package.json b/package.json index e9aad18e15..5b4aa5d191 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "license": "SEE LICENSE IN https://tc39.es/ecma262/#sec-copyright-and-software-license", "homepage": "https://tc39.es/ecma262/", "dependencies": { - "ecmarkup": "^18.1.0" + "ecmarkup": "^18.1.3" }, "devDependencies": { "glob": "^7.1.6", From 3a773fc9fae58be023228b13dbbd402ac18eeb6b Mon Sep 17 00:00:00 2001 From: Michael Ficarra Date: Sun, 4 Feb 2024 22:07:29 -0800 Subject: [PATCH 25/69] Editorial: pull in ecmarkup reduced-width document styles (#3277) --- spec.html | 32 +++++++++++--------------------- 1 file changed, 11 insertions(+), 21 deletions(-) diff --git a/spec.html b/spec.html index 5ea77b7400..8faa49c00c 100644 --- a/spec.html +++ b/spec.html @@ -40,16 +40,6 @@ width: 100%; font-size: 80%; } - - .module-overflow { - overflow-y: scroll; - display: block; - } - - .module-overflow-note { - overflow-y: scroll; - } -

    @@ -14669,10 +14669,10 @@

    Integer-Indexed Object With Buffer Witness Records

    [[Object]]
    - an Integer-Indexed exotic object + a TypedArray - The Integer-Indexed exotic object whose buffer's byte length is loaded. + The TypedArray whose buffer's byte length is loaded.
    @@ -27083,7 +27073,7 @@

    Example Cyclic Module Record Graphs

    Let us assume that _E_ finishes executing first. When that happens, AsyncModuleExecutionFulfilled is called, _E_.[[Status]] is set to ~evaluated~ and _C_.[[PendingAsyncDependencies]] is decremented to become 1. The fields of the updated modules are as given in .

    - +
    @@ -27119,7 +27109,7 @@

    Example Cyclic Module Record Graphs

    _D_ is next to finish (as it was the only module that was still executing). When that happens, AsyncModuleExecutionFulfilled is called again and _D_.[[Status]] is set to ~evaluated~. Then _B_.[[PendingAsyncDependencies]] is decremented to become 0, ExecuteAsyncModule is called on _B_, and it starts executing. _C_.[[PendingAsyncDependencies]] is also decremented to become 0, and _C_ starts executing (potentially in parallel to _B_ if _B_ contains an `await`). The fields of the updated modules are as given in .

    - +
    @@ -27164,7 +27154,7 @@

    Example Cyclic Module Record Graphs

    Let us assume that _C_ finishes executing next. When that happens, AsyncModuleExecutionFulfilled is called again, _C_.[[Status]] is set to ~evaluated~ and _A_.[[PendingAsyncDependencies]] is decremented to become 1. The fields of the updated modules are as given in .

    - +
    @@ -27200,7 +27190,7 @@

    Example Cyclic Module Record Graphs

    Then, _B_ finishes executing. When that happens, AsyncModuleExecutionFulfilled is called again and _B_.[[Status]] is set to ~evaluated~. _A_.[[PendingAsyncDependencies]] is decremented to become 0, so ExecuteAsyncModule is called and it starts executing. The fields of the updated modules are as given in .

    - +
    @@ -27236,7 +27226,7 @@

    Example Cyclic Module Record Graphs

    Finally, _A_ finishes executing. When that happens, AsyncModuleExecutionFulfilled is called again and _A_.[[Status]] is set to ~evaluated~. At this point, the Promise in _A_.[[TopLevelCapability]] (which was returned from _A_.Evaluate()) is resolved, and this concludes the handling of this module graph. The fields of the updated module are as given in .

    - +
    @@ -27263,7 +27253,7 @@

    Example Cyclic Module Record Graphs

    Alternatively, consider a failure case where _C_ fails execution and returns an error before _B_ has finished executing. When that happens, AsyncModuleExecutionRejected is called, which sets _C_.[[Status]] to ~evaluated~ and _C_.[[EvaluationError]] to the error. It then propagates this error to all of the AsyncParentModules by performing AsyncModuleExecutionRejected on each of them. The fields of the updated modules are as given in .

    - +
    @@ -27302,7 +27292,7 @@

    Example Cyclic Module Record Graphs

    _A_ will be rejected with the same error as _C_ since _C_ will call AsyncModuleExecutionRejected on _A_ with _C_'s error. _A_.[[Status]] is set to ~evaluated~. At this point the Promise in _A_.[[TopLevelCapability]] (which was returned from _A_.Evaluate()) is rejected. The fields of the updated module are as given in .

    - +
    @@ -27331,7 +27321,7 @@

    Example Cyclic Module Record Graphs

    Then, _B_ finishes executing without an error. When that happens, AsyncModuleExecutionFulfilled is called again and _B_.[[Status]] is set to ~evaluated~. GatherAvailableAncestors is called on _B_. However, _A_.[[CycleRoot]] is _A_ which has an evaluation error, so it will not be added to the returned _sortedExecList_ and AsyncModuleExecutionFulfilled will return without further processing. Any future importer of _B_ will resolve the rejection of _B_.[[CycleRoot]].[[EvaluationError]] from the evaluation error from _C_ that was set on the cycle root _A_. The fields of the updated modules are as given in .

    - +
    @@ -27519,7 +27509,7 @@

    Source Text Module Records

    - +

    gives examples of ImportEntry records fields used to represent the syntactic import forms:

    @@ -27664,7 +27654,7 @@

    Source Text Module Records

    - +

    gives examples of the ExportEntry record fields used to represent the syntactic export forms:

    From 509620e69ac372fa1a48f5b7fbf3a403fe1ea82f Mon Sep 17 00:00:00 2001 From: Michael Ficarra Date: Mon, 12 Feb 2024 12:04:45 -0800 Subject: [PATCH 26/69] Editorial: update links to Ecma specs and update ECMA-402 descriptor (#3013) --- spec.html | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/spec.html b/spec.html index 8faa49c00c..bb5931013d 100644 --- a/spec.html +++ b/spec.html @@ -162,14 +162,19 @@

    Example Legacy Normative Optional Clause Heading

    Normative References

    The following referenced documents are indispensable for the application of this document. For dated references, only the edition cited applies. For undated references, the latest edition of the referenced document (including any amendments) applies.

    -

    ISO/IEC 10646 Information Technology — Universal Multiple-Octet Coded Character Set (UCS) plus Amendment 1:2005, Amendment 2:2006, Amendment 3:2008, and Amendment 4:2008, plus additional amendments and corrigenda, or successor

    +

    IEEE 754-2019, IEEE Standard for Floating-Point Arithmetic.

    - ECMA-402, ECMAScript 2015 Internationalization API Specification.
    - https://ecma-international.org/publications/standards/Ecma-402.htm + The Unicode Standard.
    + https://unicode.org/versions/latest +

    +

    ISO/IEC 10646, Information Technology — Universal Multiple-Octet Coded Character Set (UCS) plus Amendment 1:2005, Amendment 2:2006, Amendment 3:2008, Amendment 4:2008, and additional amendments and corrigenda, or successor.

    +

    + ECMA-402, ECMAScript Internationalization API Specification, specifically the annual edition corresponding to this edition of this specification.
    + https://www.ecma-international.org/publications-and-standards/standards/ecma-402/

    ECMA-404, The JSON Data Interchange Format.
    - https://ecma-international.org/publications/standards/Ecma-404.htm + https://www.ecma-international.org/publications-and-standards/standards/ecma-404/

    From b07ca06615b30d327047882cd933c0d8c9cde096 Mon Sep 17 00:00:00 2001 From: Philip Chimento Date: Tue, 13 Feb 2024 21:28:44 -0800 Subject: [PATCH 27/69] Normative: Provide source text to HostEnsureCanCompileStrings (#3222) This change provides the source text to be evaluated, and the grammar symbol that should be used to parse it, to the host hook HostEnsureCanCompileStrings. One example of where this is needed is for allowing a Content Security Policy to provide hashes for code executed via `eval()` or `new Function()`: https://github.com/w3c/webappsec-csp/issues/623 This is useful on its own, but has come up again in the topic of ShadowRealm-HTML integration. In a ShadowRealm you can either execute code asynchronously, with ShadowRealm.p.importValue, or synchronously, with ShadowRealm.p.evaluate. Because the latter uses `eval()` inside the ShadowRealm, it's subject to CSP rules, so the only CSP policy that will let you execute synchronously in the realm is `unsafe-eval`. This is a separate needs-consensus PR, rather than being part of the ShadowRealm proposal, because it's useful independently of ShadowRealm, and also ShadowRealm would go forward regardless of whether this goes forward. Prior art: https://github.com/tc39/proposal-dynamic-code-brand-checks --- spec.html | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/spec.html b/spec.html index bb5931013d..ffdc1d7556 100644 --- a/spec.html +++ b/spec.html @@ -28936,7 +28936,7 @@

    1. If _x_ is not a String, return _x_. 1. Let _evalRealm_ be the current Realm Record. 1. NOTE: In the case of a direct eval, _evalRealm_ is the realm of both the caller of `eval` and of the `eval` function itself. - 1. Perform ? HostEnsureCanCompileStrings(_evalRealm_). + 1. Perform ? HostEnsureCanCompileStrings(_evalRealm_, « », _x_, _direct_). 1. Let _inFunction_ be *false*. 1. Let _inMethod_ be *false*. 1. Let _inDerivedConstructor_ be *false*. @@ -28999,12 +28999,19 @@

    HostEnsureCanCompileStrings ( _calleeRealm_: a Realm Record, + _parameterStrings_: a List of Strings, + _bodyString_: a String, + _direct_: a Boolean, ): either a normal completion containing ~unused~ or a throw completion

    description
    It allows host environments to block certain ECMAScript functions which allow developers to interpret and evaluate strings as ECMAScript code.
    +

    + _parameterStrings_ represents the strings that, when using one of the function constructors, will be concatenated together to build the parameters list. _bodyString_ represents the function body or the string passed to an `eval` call. + _direct_ signifies whether the evaluation is a direct eval. +

    The default implementation of HostEnsureCanCompileStrings is to return NormalCompletion(~unused~).

    @@ -30209,8 +30216,6 @@

    _constructor_ is the constructor function that is performing this action. _newTarget_ is the constructor that `new` was initially applied to. _parameterArgs_ and _bodyArg_ reflect the argument values that were passed to _constructor_.
    - 1. Let _currentRealm_ be the current Realm Record. - 1. Perform ? HostEnsureCanCompileStrings(_currentRealm_). 1. If _newTarget_ is *undefined*, set _newTarget_ to _constructor_. 1. If _kind_ is ~normal~, then 1. Let _prefix_ be *"function"*. @@ -30238,22 +30243,26 @@

    1. Let _parameterSym_ be the grammar symbol |FormalParameters[+Yield, +Await]|. 1. Let _fallbackProto_ be *"%AsyncGeneratorFunction.prototype%"*. 1. Let _argCount_ be the number of elements in _parameterArgs_. + 1. Let _bodyString_ be ? ToString(_bodyArg_). + 1. Let _parameterStrings_ be a new empty List. + 1. For each element _arg_ of _parameterArgs_, do + 1. Append ? ToString(_arg_) to _parameterStrings_. + 1. Let _currentRealm_ be the current Realm Record. + 1. Perform ? HostEnsureCanCompileStrings(_currentRealm_, _parameterStrings_, _bodyString_, *false*). 1. Let _P_ be the empty String. 1. If _argCount_ > 0, then - 1. Let _firstArg_ be _parameterArgs_[0]. - 1. Set _P_ to ? ToString(_firstArg_). + 1. Set _P_ to _parameterStrings_[0]. 1. Let _k_ be 1. 1. Repeat, while _k_ < _argCount_, - 1. Let _nextArg_ be _parameterArgs_[_k_]. - 1. Let _nextArgString_ be ? ToString(_nextArg_). + 1. Let _nextArgString_ be _parameterStrings_[_k_]. 1. Set _P_ to the string-concatenation of _P_, *","* (a comma), and _nextArgString_. 1. Set _k_ to _k_ + 1. - 1. Let _bodyString_ be the string-concatenation of 0x000A (LINE FEED), ? ToString(_bodyArg_), and 0x000A (LINE FEED). - 1. Let _sourceString_ be the string-concatenation of _prefix_, *" anonymous("*, _P_, 0x000A (LINE FEED), *") {"*, _bodyString_, and *"}"*. + 1. Let _bodyParseString_ be the string-concatenation of 0x000A (LINE FEED), _bodyString_, and 0x000A (LINE FEED). + 1. Let _sourceString_ be the string-concatenation of _prefix_, *" anonymous("*, _P_, 0x000A (LINE FEED), *") {"*, _bodyParseString_, and *"}"*. 1. Let _sourceText_ be StringToCodePoints(_sourceString_). 1. Let _parameters_ be ParseText(StringToCodePoints(_P_), _parameterSym_). 1. If _parameters_ is a List of errors, throw a *SyntaxError* exception. - 1. Let _body_ be ParseText(StringToCodePoints(_bodyString_), _bodySym_). + 1. Let _body_ be ParseText(StringToCodePoints(_bodyParseString_), _bodySym_). 1. If _body_ is a List of errors, throw a *SyntaxError* exception. 1. NOTE: The parameters and body are parsed separately to ensure that each is valid alone. For example, `new Function("/*", "*/ ) {")` does not evaluate to a function. 1. NOTE: If this step is reached, _sourceText_ must have the syntax of _exprSym_ (although the reverse implication does not hold). The purpose of the next two steps is to enforce any Early Error rules which apply to _exprSym_ directly. From 197f1245a1a4562891a6720f3f9fb109619a97d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Wed, 14 Feb 2024 14:03:28 -0800 Subject: [PATCH 28/69] Normative: Allow Annex B scripts to start with `-->` (#3244) --- spec.html | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/spec.html b/spec.html index ffdc1d7556..a4be495e87 100644 --- a/spec.html +++ b/spec.html @@ -49708,6 +49708,15 @@

    HTML-like Comments

    The syntax and semantics of is extended as follows except that this extension is not allowed when parsing source text using the goal symbol |Module|:

    Syntax

    + InputElementHashbangOrRegExp :: + WhiteSpace + LineTerminator + Comment + CommonToken + HashbangComment + RegularExpressionLiteral + HTMLCloseComment + Comment :: MultiLineComment SingleLineComment From 84f623493b91552f422f9b9acde4491861110818 Mon Sep 17 00:00:00 2001 From: Kevin Gibbons Date: Wed, 14 Feb 2024 14:44:14 -0800 Subject: [PATCH 29/69] Editorial: fix an invariant for [[GetOwnProperty]] (#3254) --- spec.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec.html b/spec.html index a4be495e87..dd05ddc45e 100644 --- a/spec.html +++ b/spec.html @@ -3110,7 +3110,7 @@

    [[GetOwnProperty]] ( _P_ )

    If _P_ is described as a non-configurable, non-writable own data property, all future calls to [[GetOwnProperty]] ( _P_ ) must return Property Descriptor whose [[Value]] is SameValue as _P_'s [[Value]] attribute.
  • - If _P_'s attributes other than [[Writable]] may change over time or if the property might be deleted, then _P_'s [[Configurable]] attribute must be *true*. + If _P_'s attributes other than [[Writable]] and [[Value]] may change over time, or if the property might be deleted, then _P_'s [[Configurable]] attribute must be *true*.
  • If the [[Writable]] attribute may change from *false* to *true*, then the [[Configurable]] attribute must be *true*. From e20763a873b566cd62b3a5e45d83db19eb0a1af8 Mon Sep 17 00:00:00 2001 From: Kevin Gibbons Date: Wed, 14 Feb 2024 15:20:04 -0800 Subject: [PATCH 30/69] Editorial: EvaluateClassStaticBlockBody cannot throw during function instantiation (#2931) FunctionDeclarationInstantiation only throws if there is a parameter expression (computed member in destructuring, or default value) which throws. In this case the "function object" being evaluated is a synthetic value created by ClassStaticBlockDefinitionEvaluation which is used to explain how static blocks work. This synthetic value does not have any parameters, so FunctionDeclarationInstantiation on it cannot throw. --- spec.html | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/spec.html b/spec.html index dd05ddc45e..cbcc033f81 100644 --- a/spec.html +++ b/spec.html @@ -24816,7 +24816,7 @@

    1. Let _privateEnv_ be the running execution context's PrivateEnvironment. 1. Let _sourceText_ be the empty sequence of Unicode code points. 1. Let _formalParameters_ be an instance of the production FormalParameters : [empty]. - 1. Let _bodyFunction_ be OrdinaryFunctionCreate(%Function.prototype%, _sourceText_, _formalParameters_, |ClassStaticBlockBody|, ~non-lexical-this~, _lex_, _privateEnv_). + 1. [id="step-synthetic-class-static-block-fn"] Let _bodyFunction_ be OrdinaryFunctionCreate(%Function.prototype%, _sourceText_, _formalParameters_, |ClassStaticBlockBody|, ~non-lexical-this~, _lex_, _privateEnv_). 1. Perform MakeMethod(_bodyFunction_, _homeObject_). 1. Return the ClassStaticBlockDefinition Record { [[BodyFunction]]: _bodyFunction_ }. @@ -24833,7 +24833,8 @@

    ClassStaticBlockBody : ClassStaticBlockStatementList - 1. Perform ? FunctionDeclarationInstantiation(_functionObject_, « »). + 1. Assert: _functionObject_ is a synthetic function created by ClassStaticBlockDefinitionEvaluation step . + 1. Perform ! FunctionDeclarationInstantiation(_functionObject_, « »). 1. Return ? Evaluation of |ClassStaticBlockStatementList|. From 82467dd84a82d8ef217d78c324d1c882c3c757d5 Mon Sep 17 00:00:00 2001 From: Michael Dyck Date: Wed, 14 Feb 2024 15:36:06 -0800 Subject: [PATCH 31/69] Editorial: Remove `?` from `|X?| is [not] present` (#3208) --- spec.html | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/spec.html b/spec.html index cbcc033f81..fc2b76be22 100644 --- a/spec.html +++ b/spec.html @@ -20911,7 +20911,7 @@

    1. Let _P_ be StringValue of |IdentifierReference|. 1. Let _lref_ be ? ResolveBinding(_P_). 1. Let _v_ be ? GetV(_value_, _P_). - 1. If |Initializer?| is present and _v_ is *undefined*, then + 1. If |Initializer| is present and _v_ is *undefined*, then 1. If IsAnonymousFunctionDefinition(|Initializer|) is *true*, then 1. Set _v_ to ? NamedEvaluation of |Initializer| with argument _P_. 1. Else, @@ -24785,7 +24785,7 @@

    1. Let _name_ be ? Evaluation of |ClassElementName|. - 1. If |Initializer?| is present, then + 1. If |Initializer| is present, then 1. Let _formalParameterList_ be an instance of the production FormalParameters : [empty]. 1. Let _env_ be the LexicalEnvironment of the running execution context. 1. Let _privateEnv_ be the running execution context's PrivateEnvironment. @@ -24901,14 +24901,14 @@

    1. Perform ! _classEnv_.CreateImmutableBinding(_classBinding_, *true*). 1. Let _outerPrivateEnvironment_ be the running execution context's PrivateEnvironment. 1. Let _classPrivateEnvironment_ be NewPrivateEnvironment(_outerPrivateEnvironment_). - 1. If |ClassBody?| is present, then - 1. For each String _dn_ of the PrivateBoundIdentifiers of |ClassBody?|, do + 1. If |ClassBody| is present, then + 1. For each String _dn_ of the PrivateBoundIdentifiers of |ClassBody|, do 1. If _classPrivateEnvironment_.[[Names]] contains a Private Name _pn_ such that _pn_.[[Description]] is _dn_, then 1. Assert: This is only possible for getter/setter pairs. 1. Else, 1. Let _name_ be a new Private Name whose [[Description]] is _dn_. 1. Append _name_ to _classPrivateEnvironment_.[[Names]]. - 1. If |ClassHeritage?| is not present, then + 1. If |ClassHeritage| is not present, then 1. Let _protoParent_ be %Object.prototype%. 1. Let _constructorParent_ be %Function.prototype%. 1. Else, @@ -24927,7 +24927,7 @@

    1. If _protoParent_ is not an Object and _protoParent_ is not *null*, throw a *TypeError* exception. 1. Let _constructorParent_ be _superclass_. 1. Let _proto_ be OrdinaryObjectCreate(_protoParent_). - 1. If |ClassBody?| is not present, let _constructor_ be ~empty~. + 1. If |ClassBody| is not present, let _constructor_ be ~empty~. 1. Else, let _constructor_ be ConstructorMethod of |ClassBody|. 1. Set the running execution context's LexicalEnvironment to _classEnv_. 1. Set the running execution context's PrivateEnvironment to _classPrivateEnvironment_. @@ -24953,9 +24953,9 @@

    1. Perform MakeClassConstructor(_F_). 1. Perform SetFunctionName(_F_, _className_). 1. Perform MakeConstructor(_F_, *false*, _proto_). - 1. If |ClassHeritage?| is present, set _F_.[[ConstructorKind]] to ~derived~. + 1. If |ClassHeritage| is present, set _F_.[[ConstructorKind]] to ~derived~. 1. Perform CreateMethodProperty(_proto_, *"constructor"*, _F_). - 1. If |ClassBody?| is not present, let _elements_ be a new empty List. + 1. If |ClassBody| is not present, let _elements_ be a new empty List. 1. Else, let _elements_ be NonConstructorElements of |ClassBody|. 1. Let _instancePrivateMethods_ be a new empty List. 1. Let _staticPrivateMethods_ be a new empty List. From 44bb0e0dc7ddc8a0a8f9968536a57da7159f60dc Mon Sep 17 00:00:00 2001 From: Jordan Harband Date: Wed, 14 Feb 2024 18:57:23 -0800 Subject: [PATCH 32/69] Normative: add ArrayBuffer.prototype.{detached,transfer,transferToFixedLength} (#3175) See https://tc39.es/proposal-arraybuffer-transfer/ --- spec.html | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/spec.html b/spec.html index fc2b76be22..3ce4c55d89 100644 --- a/spec.html +++ b/spec.html @@ -42748,6 +42748,40 @@

    + +

    + ArrayBufferCopyAndDetach ( + _arrayBuffer_: an ECMAScript language value, + _newLength_: an ECMAScript language value, + _preserveResizability_: ~preserve-resizability~ or ~fixed-length~, + ): either a normal completion containing an ArrayBuffer or a throw completion +

    +
    +
    + + 1. Perform ? RequireInternalSlot(_arrayBuffer_, [[ArrayBufferData]]). + 1. If IsSharedArrayBuffer(_arrayBuffer_) is *true*, throw a *TypeError* exception. + 1. If _newLength_ is *undefined*, then + 1. Let _newByteLength_ be _arrayBuffer_.[[ArrayBufferByteLength]]. + 1. Else, + 1. Let _newByteLength_ be ? ToIndex(_newLength_). + 1. If IsDetachedBuffer(_arrayBuffer_) is *true*, throw a *TypeError* exception. + 1. If _preserveResizability_ is ~preserve-resizability~ and IsFixedLengthArrayBuffer(_arrayBuffer_) is *false*, then + 1. Let _newMaxByteLength_ be _arrayBuffer_.[[ArrayBufferMaxByteLength]]. + 1. Else, + 1. Let _newMaxByteLength_ be ~empty~. + 1. If _arrayBuffer_.[[ArrayBufferDetachKey]] is not *undefined*, throw a *TypeError* exception. + 1. Let _newBuffer_ be ? AllocateArrayBuffer(%ArrayBuffer%, _newByteLength_, _newMaxByteLength_). + 1. Let _copyLength_ be min(_newByteLength_, _arrayBuffer_.[[ArrayBufferByteLength]]). + 1. Let _fromBlock_ be _arrayBuffer_.[[ArrayBufferData]]. + 1. Let _toBlock_ be _newBuffer_.[[ArrayBufferData]]. + 1. Perform CopyDataBlockBytes(_toBlock_, 0, _fromBlock_, 0, _copyLength_). + 1. NOTE: Neither creation of the new Data Block nor copying from the old Data Block are observable. Implementations may implement this method as a zero-copy move or a `realloc`. + 1. Perform ! DetachArrayBuffer(_arrayBuffer_). + 1. Return _newBuffer_. + +
    +

    IsDetachedBuffer ( @@ -42770,6 +42804,8 @@

    ): either a normal completion containing ~unused~ or a throw completion

    +
    skip global checks
    +
    true
    1. Assert: IsSharedArrayBuffer(_arrayBuffer_) is *false*. @@ -43192,6 +43228,17 @@

    ArrayBuffer.prototype.constructor

    The initial value of `ArrayBuffer.prototype.constructor` is %ArrayBuffer%.

    + +

    get ArrayBuffer.prototype.detached

    +

    `ArrayBuffer.prototype.detached` is an accessor property whose set accessor function is *undefined*. Its get accessor function performs the following steps when called:

    + + 1. Let _O_ be the *this* value. + 1. Perform ? RequireInternalSlot(_O_, [[ArrayBufferData]]). + 1. If IsSharedArrayBuffer(_O_) is *true*, throw a *TypeError* exception. + 1. Return IsDetachedBuffer(_O_). + +
    +

    get ArrayBuffer.prototype.maxByteLength

    `ArrayBuffer.prototype.maxByteLength` is an accessor property whose set accessor function is *undefined*. Its get accessor function performs the following steps when called:

    @@ -43279,6 +43326,24 @@

    ArrayBuffer.prototype.slice ( _start_, _end_ )

    + +

    ArrayBuffer.prototype.transfer ( [ _newLength_ ] )

    +

    This method performs the following steps when called:

    + + 1. Let _O_ be the *this* value. + 1. Return ? ArrayBufferCopyAndDetach(_O_, _newLength_, ~preserve-resizability~). + +
    + + +

    ArrayBuffer.prototype.transferToFixedLength ( [ _newLength_ ] )

    +

    This method performs the following steps when called:

    + + 1. Let _O_ be the *this* value. + 1. Return ? ArrayBufferCopyAndDetach(_O_, _newLength_, ~fixed-length~). + +
    +

    ArrayBuffer.prototype [ @@toStringTag ]

    The initial value of the @@toStringTag property is the String value *"ArrayBuffer"*.

    From 1b4c6df0392936e9e82c68df6f83244e9b5bfbdd Mon Sep 17 00:00:00 2001 From: h2oche Date: Thu, 15 Feb 2024 12:17:43 -0800 Subject: [PATCH 33/69] Editorial: Fix wrong assertion in 'DefineMethodProperty' (#2814) Co-authored-by: h2oche Co-authored-by: Shu-yu Guo --- spec.html | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/spec.html b/spec.html index 3ce4c55d89..9ab2eff4df 100644 --- a/spec.html +++ b/spec.html @@ -13576,17 +13576,18 @@

    _key_: a property key or Private Name, _closure_: a function object, _enumerable_: a Boolean, - ): a PrivateElement or ~unused~ + ): either a normal completion containing either a PrivateElement or ~unused~, or an abrupt completion

    - 1. Assert: _homeObject_ is an ordinary, extensible object with no non-configurable properties. + 1. Assert: _homeObject_ is an ordinary, extensible object. 1. If _key_ is a Private Name, then 1. Return PrivateElement { [[Key]]: _key_, [[Kind]]: ~method~, [[Value]]: _closure_ }. 1. Else, 1. Let _desc_ be the PropertyDescriptor { [[Value]]: _closure_, [[Writable]]: *true*, [[Enumerable]]: _enumerable_, [[Configurable]]: *true* }. - 1. Perform ! DefinePropertyOrThrow(_homeObject_, _key_, _desc_). + 1. Perform ? DefinePropertyOrThrow(_homeObject_, _key_, _desc_). + 1. NOTE: DefinePropertyOrThrow only returns an abrupt completion when attempting to define a class static method whose _key_ is *"prototype"*. 1. Return ~unused~.
    @@ -23809,7 +23810,7 @@

    1. Let _methodDef_ be ? DefineMethod of |MethodDefinition| with argument _object_. 1. Perform SetFunctionName(_methodDef_.[[Closure]], _methodDef_.[[Key]]). - 1. Return DefineMethodProperty(_object_, _methodDef_.[[Key]], _methodDef_.[[Closure]], _enumerable_). + 1. Return ? DefineMethodProperty(_object_, _methodDef_.[[Key]], _methodDef_.[[Closure]], _enumerable_). MethodDefinition : `get` ClassElementName `(` `)` `{` FunctionBody `}` @@ -23855,7 +23856,7 @@

    1. Perform SetFunctionName(_closure_, _propKey_). 1. Let _prototype_ be OrdinaryObjectCreate(%GeneratorFunction.prototype.prototype%). 1. Perform ! DefinePropertyOrThrow(_closure_, *"prototype"*, PropertyDescriptor { [[Value]]: _prototype_, [[Writable]]: *true*, [[Enumerable]]: *false*, [[Configurable]]: *false* }). - 1. Return DefineMethodProperty(_object_, _propKey_, _closure_, _enumerable_). + 1. Return ? DefineMethodProperty(_object_, _propKey_, _closure_, _enumerable_). AsyncGeneratorMethod : `async` `*` ClassElementName `(` UniqueFormalParameters `)` `{` AsyncGeneratorBody `}` @@ -23870,7 +23871,7 @@

    1. Perform SetFunctionName(_closure_, _propKey_). 1. Let _prototype_ be OrdinaryObjectCreate(%AsyncGeneratorFunction.prototype.prototype%). 1. Perform ! DefinePropertyOrThrow(_closure_, *"prototype"*, PropertyDescriptor { [[Value]]: _prototype_, [[Writable]]: *true*, [[Enumerable]]: *false*, [[Configurable]]: *false* }). - 1. Return DefineMethodProperty(_object_, _propKey_, _closure_, _enumerable_). + 1. Return ? DefineMethodProperty(_object_, _propKey_, _closure_, _enumerable_). AsyncMethod : `async` ClassElementName `(` UniqueFormalParameters `)` `{` AsyncFunctionBody `}` @@ -23883,7 +23884,7 @@

    1. Let _closure_ be OrdinaryFunctionCreate(%AsyncFunction.prototype%, _sourceText_, |UniqueFormalParameters|, |AsyncFunctionBody|, ~non-lexical-this~, _env_, _privateEnv_). 1. Perform MakeMethod(_closure_, _object_). 1. Perform SetFunctionName(_closure_, _propKey_). - 1. Return DefineMethodProperty(_object_, _propKey_, _closure_, _enumerable_). + 1. Return ? DefineMethodProperty(_object_, _propKey_, _closure_, _enumerable_). From 4010380edcc73aeab92031994bca9c20040fe8c8 Mon Sep 17 00:00:00 2001 From: Kevin Gibbons Date: Fri, 16 Feb 2024 15:37:58 -0800 Subject: [PATCH 34/69] Markup: coercing primtives to numerics is not user code in IsLessThan (#3281) --- spec.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec.html b/spec.html index 9ab2eff4df..0c044ba95d 100644 --- a/spec.html +++ b/spec.html @@ -5934,8 +5934,8 @@

    1. If _nx_ is *undefined*, return *undefined*. 1. Return BigInt::lessThan(_nx_, _py_). 1. NOTE: Because _px_ and _py_ are primitive values, evaluation order is not important. - 1. Let _nx_ be ? ToNumeric(_px_). - 1. Let _ny_ be ? ToNumeric(_py_). + 1. Let _nx_ be ? ToNumeric(_px_). + 1. Let _ny_ be ? ToNumeric(_py_). 1. If Type(_nx_) is Type(_ny_), then 1. If _nx_ is a Number, then 1. Return Number::lessThan(_nx_, _ny_). From 24eed9a02d509081571d35212d24bebcdc9e66fd Mon Sep 17 00:00:00 2001 From: Kevin Gibbons Date: Fri, 16 Feb 2024 21:25:51 -0800 Subject: [PATCH 35/69] Editorial: Describe changes in ES2024 (#3282) --- spec.html | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/spec.html b/spec.html index 0c044ba95d..3711ac6490 100644 --- a/spec.html +++ b/spec.html @@ -99,6 +99,7 @@

    Introduction

    ECMAScript 2021, the 12th edition, introduced the `replaceAll` method for Strings; `Promise.any`, a Promise combinator that short-circuits when an input value is fulfilled; `AggregateError`, a new Error type to represent multiple errors at once; logical assignment operators (`??=`, `&&=`, `||=`); `WeakRef`, for referring to a target object without preserving it from garbage collection, and `FinalizationRegistry`, to manage registration and unregistration of cleanup operations performed when target objects are garbage collected; separators for numeric literals (`1_000`); and `Array.prototype.sort` was made more precise, reducing the amount of cases that result in an implementation-defined sort order.

    ECMAScript 2022, the 13th edition, introduced top-level `await`, allowing the keyword to be used at the top level of modules; new class elements: public and private instance fields, public and private static fields, private instance methods and accessors, and private static methods and accessors; static blocks inside classes, to perform per-class evaluation initialization; the `#x in obj` syntax, to test for presence of private fields on objects; regular expression match indices via the `/d` flag, which provides start and end indices for matched substrings; the `cause` property on `Error` objects, which can be used to record a causation chain in errors; the `at` method for Strings, Arrays, and TypedArrays, which allows relative indexing; and `Object.hasOwn`, a convenient alternative to `Object.prototype.hasOwnProperty`.

    ECMAScript 2023, the 14th edition, introduced the `toSorted`, `toReversed`, `with`, `findLast`, and `findLastIndex` methods on `Array.prototype` and `TypedArray.prototype`, as well as the `toSpliced` method on `Array.prototype`; added support for `#!` comments at the beginning of files to better facilitate executable ECMAScript files; and allowed the use of most Symbols as keys in weak collections.

    +

    ECMAScript 2024, the 15th edition, added facilities for resizing and transferring ArrayBuffers and SharedArrayBuffers; added a new RegExp `/v` flag for creating RegExps with more advanced features for working with sets of strings; and introduced the `Promise.withResolvers` convenience method for constructing Promises, the `Object.groupBy` and `Map.groupBy` methods for aggregating data, the `Atomics.waitAsync` method for asynchronously waiting for a change to shared memory, and the `String.prototype.isWellFormed` and `String.prototype.toWellFormed` methods for checking and ensuring that strings contain only well-formed Unicode.

    Dozens of individuals representing many organizations have made very significant contributions within Ecma TC39 to the development of this edition and to the prior editions. In addition, a vibrant community has emerged supporting TC39's ECMAScript efforts. This community has reviewed numerous drafts, filed thousands of bug reports, performed implementation experiments, contributed test suites, and educated the world-wide developer community about ECMAScript. Unfortunately, it is impossible to identify and acknowledge every person and organization who has contributed to this effort.

    Allen Wirfs-Brock
    @@ -114,15 +115,15 @@

    Introduction

    Shu-yu Guo
    - ECMA-262, Project Editor, 12th through 14th Editions + ECMA-262, Project Editor, 12th through 15th Editions

    Michael Ficarra
    - ECMA-262, Project Editor, 12th through 14th Editions + ECMA-262, Project Editor, 12th through 15th Editions

    Kevin Gibbons
    - ECMA-262, Project Editor, 12th through 14th Editions + ECMA-262, Project Editor, 12th through 15th Editions

    From 6ec325c22e9b3c47397c95c6b301491e76edb768 Mon Sep 17 00:00:00 2001 From: Jordan Harband Date: Fri, 16 Feb 2024 21:33:08 -0800 Subject: [PATCH 36/69] Editorial: replace the only instance of CreateMethodProperty with DefineMethodProperty (#3279) --- spec.html | 25 +------------------------ 1 file changed, 1 insertion(+), 24 deletions(-) diff --git a/spec.html b/spec.html index 3711ac6490..890b049233 100644 --- a/spec.html +++ b/spec.html @@ -6117,29 +6117,6 @@

    - -

    - CreateMethodProperty ( - _O_: an Object, - _P_: a property key, - _V_: an ECMAScript language value, - ): ~unused~ -

    -
    -
    description
    -
    It is used to create a new own property of an ordinary object.
    -
    - - 1. Assert: _O_ is an ordinary, extensible object with no non-configurable properties. - 1. Let _newDesc_ be the PropertyDescriptor { [[Value]]: _V_, [[Writable]]: *true*, [[Enumerable]]: *false*, [[Configurable]]: *true* }. - 1. Perform ! DefinePropertyOrThrow(_O_, _P_, _newDesc_). - 1. Return ~unused~. - - -

    This abstract operation creates a property whose attributes are set to the same defaults used for built-in methods and methods defined using class declaration syntax. Normally, the property will not already exist. If it does exist, DefinePropertyOrThrow is guaranteed to complete normally.

    -
    -
    -

    CreateDataPropertyOrThrow ( @@ -24956,7 +24933,7 @@

    1. Perform SetFunctionName(_F_, _className_). 1. Perform MakeConstructor(_F_, *false*, _proto_). 1. If |ClassHeritage| is present, set _F_.[[ConstructorKind]] to ~derived~. - 1. Perform CreateMethodProperty(_proto_, *"constructor"*, _F_). + 1. Perform ! DefineMethodProperty(_proto_, *"constructor"*, _F_, *false*). 1. If |ClassBody| is not present, let _elements_ be a new empty List. 1. Else, let _elements_ be NonConstructorElements of |ClassBody|. 1. Let _instancePrivateMethods_ be a new empty List. From d502ea4acdde7e89a7e042dcc4e9123c6c75f476 Mon Sep 17 00:00:00 2001 From: Jordan Harband Date: Fri, 16 Feb 2024 21:58:12 -0800 Subject: [PATCH 37/69] Editorial: main is now ES2025 --- spec.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spec.html b/spec.html index 890b049233..83dbb45476 100644 --- a/spec.html +++ b/spec.html @@ -42,7 +42,7 @@ }

  • + + + + + @@ -3535,7 +3545,17 @@

    Well-Known Intrinsic Objects

    + + + + + @@ -47336,7 +47356,7 @@

    GeneratorFunction.prototype.constructor

    GeneratorFunction.prototype.prototype

    -

    The initial value of `GeneratorFunction.prototype.prototype` is the Generator prototype object.

    +

    The initial value of `GeneratorFunction.prototype.prototype` is %GeneratorPrototype%.

    This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *true* }.

    @@ -47438,7 +47458,7 @@

    AsyncGeneratorFunction.prototype.constructor

    AsyncGeneratorFunction.prototype.prototype

    -

    The initial value of `AsyncGeneratorFunction.prototype.prototype` is the AsyncGenerator prototype object.

    +

    The initial value of `AsyncGeneratorFunction.prototype.prototype` is %AsyncGeneratorPrototype%.

    This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *true* }.

    @@ -47478,12 +47498,12 @@

    prototype

    Generator Objects

    -

    A Generator is an instance of a generator function and conforms to both the Iterator and Iterable interfaces.

    -

    Generator instances directly inherit properties from the object that is the initial value of the *"prototype"* property of the Generator function that created the instance. Generator instances indirectly inherit properties from the Generator Prototype intrinsic, %GeneratorFunction.prototype.prototype%.

    +

    A Generator is created by calling a generator function and conforms to both the Iterator and Iterable interfaces.

    +

    Generator instances directly inherit properties from the initial value of the *"prototype"* property of the generator function that created the instance. Generator instances indirectly inherit properties from %GeneratorPrototype%.

    -

    Properties of the Generator Prototype Object

    -

    The Generator prototype object:

    +

    The %GeneratorPrototype% Object

    +

    The %GeneratorPrototype% object:

    • is %GeneratorFunction.prototype.prototype%.
    • is an ordinary object.
    • @@ -47493,20 +47513,20 @@

      Properties of the Generator Prototype Object

    -

    Generator.prototype.constructor

    -

    The initial value of `Generator.prototype.constructor` is %GeneratorFunction.prototype%.

    +

    %GeneratorPrototype%.constructor

    +

    The initial value of %GeneratorPrototype%`.constructor` is %GeneratorFunction.prototype%.

    This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *true* }.

    -

    Generator.prototype.next ( _value_ )

    +

    %GeneratorPrototype%.next ( _value_ )

    1. Return ? GeneratorResume(*this* value, _value_, ~empty~).
    -

    Generator.prototype.return ( _value_ )

    +

    %GeneratorPrototype%.return ( _value_ )

    This method performs the following steps when called:

    1. Let _g_ be the *this* value. @@ -47516,7 +47536,7 @@

    Generator.prototype.return ( _value_ )

    -

    Generator.prototype.throw ( _exception_ )

    +

    %GeneratorPrototype%.throw ( _exception_ )

    This method performs the following steps when called:

    1. Let _g_ be the *this* value. @@ -47526,7 +47546,7 @@

    Generator.prototype.throw ( _exception_ )

    -

    Generator.prototype [ @@toStringTag ]

    +

    %GeneratorPrototype% [ @@toStringTag ]

    The initial value of the @@toStringTag property is the String value *"Generator"*.

    This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *true* }.

    @@ -47788,13 +47808,13 @@

    AsyncGenerator Objects

    -

    An AsyncGenerator is an instance of an async generator function and conforms to both the AsyncIterator and AsyncIterable interfaces.

    +

    An AsyncGenerator is created by calling an async generator function and conforms to both the AsyncIterator and AsyncIterable interfaces.

    -

    AsyncGenerator instances directly inherit properties from the object that is the initial value of the *"prototype"* property of the AsyncGenerator function that created the instance. AsyncGenerator instances indirectly inherit properties from the AsyncGenerator Prototype intrinsic, %AsyncGeneratorFunction.prototype.prototype%.

    +

    AsyncGenerator instances directly inherit properties from the initial value of the *"prototype"* property of the async generator function that created the instance. AsyncGenerator instances indirectly inherit properties from %AsyncGeneratorPrototype%.

    -

    Properties of the AsyncGenerator Prototype Object

    -

    The AsyncGenerator prototype object:

    +

    The %AsyncGeneratorPrototype% Object

    +

    The %AsyncGeneratorPrototype% object:

    • is %AsyncGeneratorFunction.prototype.prototype%.
    • is an ordinary object.
    • @@ -47804,13 +47824,13 @@

      Properties of the AsyncGenerator Prototype Object

    -

    AsyncGenerator.prototype.constructor

    -

    The initial value of `AsyncGenerator.prototype.constructor` is %AsyncGeneratorFunction.prototype%.

    +

    %AsyncGeneratorPrototype%.constructor

    +

    The initial value of %AsyncGeneratorPrototype%`.constructor` is %AsyncGeneratorFunction.prototype%.

    This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *true* }.

    -

    AsyncGenerator.prototype.next ( _value_ )

    +

    %AsyncGeneratorPrototype%.next ( _value_ )

    1. Let _generator_ be the *this* value. 1. Let _promiseCapability_ be ! NewPromiseCapability(%Promise%). @@ -47832,7 +47852,7 @@

    AsyncGenerator.prototype.next ( _value_ )

    -

    AsyncGenerator.prototype.return ( _value_ )

    +

    %AsyncGeneratorPrototype%.return ( _value_ )

    1. Let _generator_ be the *this* value. 1. Let _promiseCapability_ be ! NewPromiseCapability(%Promise%). @@ -47853,7 +47873,7 @@

    AsyncGenerator.prototype.return ( _value_ )

    -

    AsyncGenerator.prototype.throw ( _exception_ )

    +

    %AsyncGeneratorPrototype%.throw ( _exception_ )

    1. Let _generator_ be the *this* value. 1. Let _promiseCapability_ be ! NewPromiseCapability(%Promise%). @@ -47877,7 +47897,7 @@

    AsyncGenerator.prototype.throw ( _exception_ )

    -

    AsyncGenerator.prototype [ @@toStringTag ]

    +

    %AsyncGeneratorPrototype% [ @@toStringTag ]

    The initial value of the @@toStringTag property is the String value *"AsyncGenerator"*.

    This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *true* }.

    From 467819a42759a7ed6b5b30a4a65cd51afdcdb436 Mon Sep 17 00:00:00 2001 From: Mathias Bynens Date: Wed, 21 Feb 2024 15:41:00 -0800 Subject: [PATCH 47/69] Editorial: Remove special-casing of U+200C and U+200D (#3074) Unicode v15.1.0 makes both U+200C and U+200D `ID_Continue` characters, meaning we no longer need to explicitly special-case them for them to match `IdentifierPart`. Issue: #3073 --- spec.html | 68 ++----------------------------------------------------- 1 file changed, 2 insertions(+), 66 deletions(-) diff --git a/spec.html b/spec.html index 83f68e9cca..438f13e2c7 100644 --- a/spec.html +++ b/spec.html @@ -16257,69 +16257,7 @@

    Syntax

    Unicode Format-Control Characters

    The Unicode format-control characters (i.e., the characters in category “Cf” in the Unicode Character Database such as LEFT-TO-RIGHT MARK or RIGHT-TO-LEFT MARK) are control codes used to control the formatting of a range of text in the absence of higher-level protocols for this (such as mark-up languages).

    It is useful to allow format-control characters in source text to facilitate editing and display. All format control characters may be used within comments, and within string literals, template literals, and regular expression literals.

    -

    U+200C (ZERO WIDTH NON-JOINER) and U+200D (ZERO WIDTH JOINER) are format-control characters that are used to make necessary distinctions when forming words or phrases in certain languages. In ECMAScript source text these code points may also be used in an |IdentifierName| after the first character.

    -

    U+FEFF (ZERO WIDTH NO-BREAK SPACE) is a format-control character used primarily at the start of a text to mark it as Unicode and to allow detection of the text's encoding and byte order. <ZWNBSP> characters intended for this purpose can sometimes also appear after the start of a text, for example as a result of concatenating files. In ECMAScript source text <ZWNBSP> code points are treated as white space characters (see ).

    -

    The special treatment of certain format-control characters outside of comments, string literals, and regular expression literals is summarized in .

    - -

    - The constructor of async iterator objects () + The constructor of async generator function objects () +
    + %AsyncGeneratorPrototype% + + + The prototype of async generator objects ()
    - The constructor of Generators () + The constructor of generator function objects () +
    + %GeneratorPrototype% + + + The prototype of generator objects ()
    - - - - - - - - - - - - - - - - - - - - - - - - -
    - Code Point - - Name - - Abbreviation - - Usage -
    - `U+200C` - - ZERO WIDTH NON-JOINER - - <ZWNJ> - - |IdentifierPart| -
    - `U+200D` - - ZERO WIDTH JOINER - - <ZWJ> - - |IdentifierPart| -
    - `U+FEFF` - - ZERO WIDTH NO-BREAK SPACE - - <ZWNBSP> - - |WhiteSpace| -
    -
    +

    U+FEFF (ZERO WIDTH NO-BREAK SPACE) is a format-control character used primarily at the start of a text to mark it as Unicode and to allow detection of the text's encoding and byte order. <ZWNBSP> characters intended for this purpose can sometimes also appear after the start of a text, for example as a result of concatenating files. In ECMAScript source text <ZWNBSP> code points are treated as white space characters (see ) outside of comments, string literals, template literals, and regular expression literals.

    @@ -16568,7 +16506,7 @@

    Syntax

    Names and Keywords

    |IdentifierName| and |ReservedWord| are tokens that are interpreted according to the Default Identifier Syntax given in Unicode Standard Annex #31, Identifier and Pattern Syntax, with some small modifications. |ReservedWord| is an enumerated subset of |IdentifierName|. The syntactic grammar defines |Identifier| as an |IdentifierName| that is not a |ReservedWord|. The Unicode identifier grammar is based on character properties specified by the Unicode Standard. The Unicode code points in the specified categories in the latest version of the Unicode Standard must be treated as in those categories by all conforming ECMAScript implementations. ECMAScript implementations may recognize identifier code points defined in later editions of the Unicode Standard.

    -

    This standard specifies specific code point additions: U+0024 (DOLLAR SIGN) and U+005F (LOW LINE) are permitted anywhere in an |IdentifierName|, and the code points U+200C (ZERO WIDTH NON-JOINER) and U+200D (ZERO WIDTH JOINER) are permitted anywhere after the first code point of an |IdentifierName|.

    +

    This standard specifies specific code point additions: U+0024 (DOLLAR SIGN) and U+005F (LOW LINE) are permitted anywhere in an |IdentifierName|.

    Syntax

    @@ -16595,8 +16533,6 @@

    Syntax

    IdentifierPartChar :: UnicodeIDContinue `$` - <ZWNJ> - <ZWJ> // emu-format ignore AsciiLetter :: one of From f5529cab7c58e9cb2512c1c86c004bf903e25ef4 Mon Sep 17 00:00:00 2001 From: Michael Dyck Date: Wed, 21 Feb 2024 16:17:41 -0800 Subject: [PATCH 48/69] Editorial: Conform to conventions for comparisons (#3206) Specifically: - change `SameValue` to `is` for comparison of String values - change `SameValue` to `is` for comparison of Number values - change `is` to `=` for comparison of BigInts - change `is` to `=` for comparison of math values - change `is` to `are the same X Record` for comparison of Records --- spec.html | 52 ++++++++++++++++++++++++++-------------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/spec.html b/spec.html index 438f13e2c7..4c0dae3875 100644 --- a/spec.html +++ b/spec.html @@ -2355,7 +2355,7 @@

    - 1. If _x_ is *0*, return *0*. + 1. If _x_ = *0*, return *0*. 1. Return -_x_. @@ -2386,7 +2386,7 @@

    1. If _exponent_ < *0*, throw a *RangeError* exception. - 1. If _base_ is *0* and _exponent_ is *0*, return *1*. + 1. If _base_ = *0* and _exponent_ = *0*, return *1*. 1. Return _base_ raised to the power _exponent_. @@ -2416,7 +2416,7 @@

    - 1. If _y_ is *0*, throw a *RangeError* exception. + 1. If _y_ = *0*, throw a *RangeError* exception. 1. Let _quotient_ be ℝ(_x_) / ℝ(_y_). 1. Return ℤ(truncate(_quotient_)). @@ -2432,8 +2432,8 @@

    - 1. If _d_ is *0*, throw a *RangeError* exception. - 1. If _n_ is *0*, return *0*. + 1. If _d_ = *0*, throw a *RangeError* exception. + 1. If _n_ = *0*, return *0*. 1. Let _quotient_ be ℝ(_n_) / ℝ(_d_). 1. Let _q_ be ℤ(truncate(_quotient_)). 1. Return _n_ - (_d_ × _q_). @@ -13697,7 +13697,7 @@

    1. NOTE: A separate Environment Record is needed to ensure that bindings created by direct eval calls in the formal parameter list are outside the environment where parameters are declared. 1. Let _calleeEnv_ be the LexicalEnvironment of _calleeContext_. 1. Let _env_ be NewDeclarativeEnvironment(_calleeEnv_). - 1. Assert: The VariableEnvironment of _calleeContext_ is _calleeEnv_. + 1. Assert: The VariableEnvironment of _calleeContext_ and _calleeEnv_ are the same Environment Record. 1. Set the LexicalEnvironment of _calleeContext_ to _env_. 1. For each String _paramName_ of _parameterNames_, do 1. Let _alreadyDeclared_ be ! _env_.HasBinding(_paramName_). @@ -22327,7 +22327,7 @@

    %ForInIteratorPrototype%.next ( )

    1. Repeat, while _O_.[[RemainingKeys]] is not empty, 1. Let _r_ be the first element of _O_.[[RemainingKeys]]. 1. Remove the first element from _O_.[[RemainingKeys]]. - 1. If there does not exist an element _v_ of _O_.[[VisitedKeys]] such that SameValue(_r_, _v_) is *true*, then + 1. If _O_.[[VisitedKeys]] does not contain _r_, then 1. Let _desc_ be ? _object_.[[GetOwnProperty]](_r_). 1. If _desc_ is not *undefined*, then 1. Append _r_ to _O_.[[VisitedKeys]]. @@ -26684,7 +26684,7 @@

    Evaluate ( ): a Promise

    1. Set _m_.[[Status]] to ~evaluated~. 1. Set _m_.[[EvaluationError]] to _result_. 1. Assert: _module_.[[Status]] is ~evaluated~. - 1. Assert: _module_.[[EvaluationError]] is _result_. + 1. Assert: _module_.[[EvaluationError]] and _result_ are the same Completion Record. 1. Perform ! Call(_capability_.[[Reject]], *undefined*, « _result_.[[Value]] »). 1. Else, 1. Assert: _module_.[[Status]] is either ~evaluating-async~ or ~evaluated~. @@ -26843,7 +26843,7 @@

    1. Set _module_.[[AsyncEvaluation]] to *false*. 1. Set _module_.[[Status]] to ~evaluated~. 1. If _module_.[[TopLevelCapability]] is not ~empty~, then - 1. Assert: _module_.[[CycleRoot]] is _module_. + 1. Assert: _module_.[[CycleRoot]] and _module_ are the same Module Record. 1. Perform ! Call(_module_.[[TopLevelCapability]].[[Resolve]], *undefined*, « *undefined* »). 1. Let _execList_ be a new empty List. 1. Perform GatherAvailableAncestors(_module_, _execList_). @@ -26861,7 +26861,7 @@

    1. Else, 1. Set _m_.[[Status]] to ~evaluated~. 1. If _m_.[[TopLevelCapability]] is not ~empty~, then - 1. Assert: _m_.[[CycleRoot]] is _m_. + 1. Assert: _m_.[[CycleRoot]] and _m_ are the same Module Record. 1. Perform ! Call(_m_.[[TopLevelCapability]].[[Resolve]], *undefined*, « *undefined* »). 1. Return ~unused~. @@ -26888,7 +26888,7 @@

    1. For each Cyclic Module Record _m_ of _module_.[[AsyncParentModules]], do 1. Perform AsyncModuleExecutionRejected(_m_, _error_). 1. If _module_.[[TopLevelCapability]] is not ~empty~, then - 1. Assert: _module_.[[CycleRoot]] is _module_. + 1. Assert: _module_.[[CycleRoot]] and _module_ are the same Module Record. 1. Perform ! Call(_module_.[[TopLevelCapability]].[[Reject]], *undefined*, « _error_ »). 1. Return ~unused~. @@ -27869,7 +27869,7 @@

    1. Let _requestedModule_ be GetImportedModule(_module_, _e_.[[ModuleRequest]]). 1. Let _starNames_ be _requestedModule_.GetExportedNames(_exportStarSet_). 1. For each element _n_ of _starNames_, do - 1. If SameValue(_n_, *"default"*) is *false*, then + 1. If _n_ is not *"default"*, then 1. If _exportedNames_ does not contain _n_, then 1. Append _n_ to _exportedNames_. 1. Return _exportedNames_. @@ -27901,16 +27901,16 @@

    1. Assert: _module_.[[Status]] is not ~new~. 1. If _resolveSet_ is not present, set _resolveSet_ to a new empty List. 1. For each Record { [[Module]], [[ExportName]] } _r_ of _resolveSet_, do - 1. If _module_ and _r_.[[Module]] are the same Module Record and SameValue(_exportName_, _r_.[[ExportName]]) is *true*, then + 1. If _module_ and _r_.[[Module]] are the same Module Record and _exportName_ is _r_.[[ExportName]], then 1. Assert: This is a circular import request. 1. Return *null*. 1. Append the Record { [[Module]]: _module_, [[ExportName]]: _exportName_ } to _resolveSet_. 1. For each ExportEntry Record _e_ of _module_.[[LocalExportEntries]], do - 1. If SameValue(_exportName_, _e_.[[ExportName]]) is *true*, then + 1. If _e_.[[ExportName]] is _exportName_, then 1. Assert: _module_ provides the direct binding for this export. 1. Return ResolvedBinding Record { [[Module]]: _module_, [[BindingName]]: _e_.[[LocalName]] }. 1. For each ExportEntry Record _e_ of _module_.[[IndirectExportEntries]], do - 1. If SameValue(_exportName_, _e_.[[ExportName]]) is *true*, then + 1. If _e_.[[ExportName]] is _exportName_, then 1. Assert: _e_.[[ModuleRequest]] is not *null*. 1. Let _importedModule_ be GetImportedModule(_module_, _e_.[[ModuleRequest]]). 1. If _e_.[[ImportName]] is ~all~, then @@ -27919,7 +27919,7 @@

    1. Else, 1. Assert: _module_ imports a specific binding for this export. 1. Return _importedModule_.ResolveExport(_e_.[[ImportName]], _resolveSet_). - 1. If SameValue(_exportName_, *"default"*) is *true*, then + 1. If _exportName_ is *"default"*, then 1. Assert: A `default` export was not explicitly defined by this module. 1. Return *null*. 1. NOTE: A `default` export cannot be provided by an `export * from "mod"` declaration. @@ -27937,7 +27937,7 @@

    1. Assert: There is more than one `*` import that includes the requested name. 1. If _resolution_.[[Module]] and _starResolution_.[[Module]] are not the same Module Record, return ~ambiguous~. 1. If _resolution_.[[BindingName]] is not _starResolution_.[[BindingName]] and either _resolution_.[[BindingName]] or _starResolution_.[[BindingName]] is ~namespace~, return ~ambiguous~. - 1. If _resolution_.[[BindingName]] is a String, _starResolution_.[[BindingName]] is a String, and SameValue(_resolution_.[[BindingName]], _starResolution_.[[BindingName]]) is *false*, return ~ambiguous~. + 1. If _resolution_.[[BindingName]] is a String, _starResolution_.[[BindingName]] is a String, and _resolution_.[[BindingName]] is not _starResolution_.[[BindingName]], return ~ambiguous~. 1. Return _starResolution_. @@ -28979,7 +28979,7 @@

    1. NOTE: `eval` will not create a global var declaration that would be shadowed by a global lexical declaration. 1. Let _thisEnv_ be _lexEnv_. 1. Assert: The following loop will terminate. - 1. Repeat, while _thisEnv_ is not _varEnv_, + 1. Repeat, while _thisEnv_ and _varEnv_ are not the same Environment Record, 1. If _thisEnv_ is not an Object Environment Record, then 1. NOTE: The environment of with statements cannot contain any lexical declaration so it doesn't need to be checked for var/let hoisting conflicts. 1. For each element _name_ of _varNames_, do @@ -30575,7 +30575,7 @@

    Symbol.for ( _key_ )

    1. Let _stringKey_ be ? ToString(_key_). 1. For each element _e_ of the GlobalSymbolRegistry List, do - 1. If SameValue(_e_.[[Key]], _stringKey_) is *true*, return _e_.[[Symbol]]. + 1. If _e_.[[Key]] is _stringKey_, return _e_.[[Symbol]]. 1. Assert: GlobalSymbolRegistry does not currently contain an entry for _stringKey_. 1. Let _newSymbol_ be a new Symbol whose [[Description]] is _stringKey_. 1. Append the Record { [[Key]]: _stringKey_, [[Symbol]]: _newSymbol_ } to the GlobalSymbolRegistry List. @@ -37970,7 +37970,7 @@

    RegExp.prototype [ @@search ] ( _string_ )

    1. If _rx_ is not an Object, throw a *TypeError* exception. 1. Let _S_ be ? ToString(_string_). 1. Let _previousLastIndex_ be ? Get(_rx_, *"lastIndex"*). - 1. If SameValue(_previousLastIndex_, *+0*𝔽) is *false*, then + 1. If _previousLastIndex_ is not *+0*𝔽, then 1. Perform ? Set(_rx_, *"lastIndex"*, *+0*𝔽, *true*). 1. Let _result_ be ? RegExpExec(_rx_, _S_). 1. Let _currentLastIndex_ be ? Get(_rx_, *"lastIndex"*). @@ -39818,7 +39818,7 @@

    Array.prototype.toSpliced ( _start_, _skipCount_, ..._items_ )

    1. Let _O_ be ? ToObject(*this* value). 1. Let _len_ be ? LengthOfArrayLike(_O_). 1. Let _relativeStart_ be ? ToIntegerOrInfinity(_start_). - 1. If _relativeStart_ is -∞, let _actualStart_ be 0. + 1. If _relativeStart_ = -∞, let _actualStart_ be 0. 1. Else if _relativeStart_ < 0, let _actualStart_ be max(_len_ + _relativeStart_, 0). 1. Else, let _actualStart_ be min(_relativeStart_, _len_). 1. Let _insertCount_ be the number of elements in _items_. @@ -39926,7 +39926,7 @@

    Array.prototype.with ( _index_, _value_ )

    1. Let _k_ be 0. 1. Repeat, while _k_ < _len_, 1. Let _Pk_ be ! ToString(𝔽(_k_)). - 1. If _k_ is _actualIndex_, let _fromValue_ be _value_. + 1. If _k_ = _actualIndex_, let _fromValue_ be _value_. 1. Else, let _fromValue_ be ? Get(_O_, _Pk_). 1. Perform ! CreateDataPropertyOrThrow(_A_, _Pk_, _fromValue_). 1. Set _k_ to _k_ + 1. @@ -41234,7 +41234,7 @@

    %TypedArray%.prototype.with ( _index_, _value_ )

    1. Let _k_ be 0. 1. Repeat, while _k_ < _len_, 1. Let _Pk_ be ! ToString(𝔽(_k_)). - 1. If _k_ is _actualIndex_, let _fromValue_ be _numericValue_. + 1. If _k_ = _actualIndex_, let _fromValue_ be _numericValue_. 1. Else, let _fromValue_ be ! Get(_O_, _Pk_). 1. Perform ! Set(_A_, _Pk_, _fromValue_, *true*). 1. Set _k_ to _k_ + 1. @@ -44546,7 +44546,7 @@

    1. Perform ! CreateDataPropertyOrThrow(_resultObject_, *"async"*, *false*). 1. Perform ! CreateDataPropertyOrThrow(_resultObject_, *"value"*, *"not-equal"*). 1. Return _resultObject_. - 1. If _t_ is 0 and _mode_ is ~async~, then + 1. If _t_ = 0 and _mode_ is ~async~, then 1. NOTE: There is no special handling of synchronous immediate timeouts. Asynchronous immediate timeouts have special handling in order to fail fast and avoid unnecessary Promise jobs. 1. Perform LeaveCriticalSection(_WL_). 1. Perform ! CreateDataPropertyOrThrow(_resultObject_, *"async"*, *false*). @@ -49103,7 +49103,7 @@

    Tear Free Reads

    1. If _R_.[[NoTear]] is *true*, then 1. Assert: The remainder of dividing _R_.[[ByteIndex]] by _R_.[[ElementSize]] is 0. 1. For each event _W_ such that _execution_.[[ReadsFrom]] contains (_R_, _W_) and _W_.[[NoTear]] is *true*, do - 1. If _R_ and _W_ have equal ranges and there exists an event _V_ such that _V_ and _W_ have equal ranges, _V_.[[NoTear]] is *true*, _W_ is not _V_, and _execution_.[[ReadsFrom]] contains (_R_, _V_), then + 1. If _R_ and _W_ have equal ranges and there exists an event _V_ such that _V_ and _W_ have equal ranges, _V_.[[NoTear]] is *true*, _W_ and _V_ are not the same Shared Data Block event, and _execution_.[[ReadsFrom]] contains (_R_, _V_), then 1. Return *false*. 1. Return *true*.
    @@ -49163,7 +49163,7 @@

    Valid Executions

    Races

    For an execution _execution_, two events _E_ and _D_ in SharedDataBlockEventSet(_execution_) are in a race if the following algorithm returns *true*.

    - 1. If _E_ is not _D_, then + 1. If _E_ and _D_ are not the same Shared Data Block event, then 1. If the pairs (_E_, _D_) and (_D_, _E_) are not in _execution_.[[HappensBefore]], then 1. If _E_ and _D_ are both WriteSharedMemory or ReadModifyWriteSharedMemory events and _E_ and _D_ do not have disjoint ranges, then 1. Return *true*. From 6e2a6b689c9901938c4f0bcdba86279fc277870b Mon Sep 17 00:00:00 2001 From: Tooru Fujisawa Date: Wed, 21 Feb 2024 16:22:09 -0800 Subject: [PATCH 49/69] Editorial: Use "well-known symbol" term consistently (#3236) Fixes #3231. --- spec.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec.html b/spec.html index 4c0dae3875..2b3f0694f1 100644 --- a/spec.html +++ b/spec.html @@ -30565,7 +30565,7 @@

    Properties of the Symbol Constructor

    Symbol.asyncIterator

    -

    The initial value of `Symbol.asyncIterator` is the well known symbol @@asyncIterator ().

    +

    The initial value of `Symbol.asyncIterator` is the well-known symbol @@asyncIterator ().

    This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *false* }.

    From bb48543c298e014ada4c02760c4172a798ba86c8 Mon Sep 17 00:00:00 2001 From: Michael Dyck Date: Wed, 21 Feb 2024 16:25:21 -0800 Subject: [PATCH 50/69] Editorial: Consistify early error rules (#3266) Specifically, eliminate 6 `

    ` elements that give a condition under which early error rules are applied. --- spec.html | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/spec.html b/spec.html index 2b3f0694f1..2f3f62700c 100644 --- a/spec.html +++ b/spec.html @@ -20452,16 +20452,12 @@

    Syntax

    Static Semantics: Early Errors

    AssignmentExpression : LeftHandSideExpression `=` AssignmentExpression -

    If |LeftHandSideExpression| is either an |ObjectLiteral| or an |ArrayLiteral|, the following Early Error rules are applied:

    • - |LeftHandSideExpression| must cover an |AssignmentPattern|. + If |LeftHandSideExpression| is either an |ObjectLiteral| or an |ArrayLiteral|, |LeftHandSideExpression| must cover an |AssignmentPattern|.
    • -
    -

    If |LeftHandSideExpression| is neither an |ObjectLiteral| nor an |ArrayLiteral|, the following Early Error rule is applied:

    -
    • - It is a Syntax Error if AssignmentTargetType of |LeftHandSideExpression| is not ~simple~. + If |LeftHandSideExpression| is neither an |ObjectLiteral| nor an |ArrayLiteral|, it is a Syntax Error if AssignmentTargetType of |LeftHandSideExpression| is not ~simple~.
    @@ -20725,16 +20721,12 @@

    Static Semantics: Early Errors

    DestructuringAssignmentTarget : LeftHandSideExpression -

    If |LeftHandSideExpression| is either an |ObjectLiteral| or an |ArrayLiteral|, the following Early Error rules are applied:

    • - |LeftHandSideExpression| must cover an |AssignmentPattern|. + If |LeftHandSideExpression| is either an |ObjectLiteral| or an |ArrayLiteral|, |LeftHandSideExpression| must cover an |AssignmentPattern|.
    • -
    -

    If |LeftHandSideExpression| is neither an |ObjectLiteral| nor an |ArrayLiteral|, the following Early Error rule is applied:

    -
    • - It is a Syntax Error if AssignmentTargetType of |LeftHandSideExpression| is not ~simple~. + If |LeftHandSideExpression| is neither an |ObjectLiteral| nor an |ArrayLiteral|, it is a Syntax Error if AssignmentTargetType of |LeftHandSideExpression| is not ~simple~.
    @@ -21921,16 +21913,12 @@

    Static Semantics: Early Errors

    `for` `(` LeftHandSideExpression `of` AssignmentExpression `)` Statement `for` `await` `(` LeftHandSideExpression `of` AssignmentExpression `)` Statement -

    If |LeftHandSideExpression| is either an |ObjectLiteral| or an |ArrayLiteral|, the following Early Error rules are applied:

    • - |LeftHandSideExpression| must cover an |AssignmentPattern|. + If |LeftHandSideExpression| is either an |ObjectLiteral| or an |ArrayLiteral|, |LeftHandSideExpression| must cover an |AssignmentPattern|.
    • -
    -

    If |LeftHandSideExpression| is neither an |ObjectLiteral| nor an |ArrayLiteral|, the following Early Error rule is applied:

    -
    • - It is a Syntax Error if AssignmentTargetType of |LeftHandSideExpression| is not ~simple~. + If |LeftHandSideExpression| is neither an |ObjectLiteral| nor an |ArrayLiteral|, it is a Syntax Error if AssignmentTargetType of |LeftHandSideExpression| is not ~simple~.
    From f012b38779e8399191e25e82fe797cc9374f4288 Mon Sep 17 00:00:00 2001 From: Michael Ficarra Date: Wed, 21 Feb 2024 16:29:19 -0800 Subject: [PATCH 51/69] Editorial: refer to binary64 by their official name in more places (#3272) --- spec.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec.html b/spec.html index 2f3f62700c..e70494f477 100644 --- a/spec.html +++ b/spec.html @@ -1064,7 +1064,7 @@

    Mathematical Operations

    • Mathematical values: Arbitrary real numbers, used as the default numeric type.
    • Extended mathematical values: Mathematical values together with +∞ and -∞.
    • -
    • Numbers: IEEE 754-2019 double-precision floating point values.
    • +
    • Numbers: IEEE 754-2019 binary64 (double-precision floating point) values.
    • BigInts: ECMAScript language values representing arbitrary integers in a one-to-one correspondence.
    @@ -1820,7 +1820,7 @@

    Numeric Types

    The Number Type

    -

    The Number type has exactly 18,437,736,874,454,810,627 (that is, 264 - 253 + 3) values, representing the double-precision 64-bit format IEEE 754-2019 values as specified in the IEEE Standard for Binary Floating-Point Arithmetic, except that the 9,007,199,254,740,990 (that is, 253 - 2) distinct “Not-a-Number” values of the IEEE Standard are represented in ECMAScript as a single special *NaN* value. (Note that the *NaN* value is produced by the program expression `NaN`.) In some implementations, external code might be able to detect a difference between various Not-a-Number values, but such behaviour is implementation-defined; to ECMAScript code, all *NaN* values are indistinguishable from each other.

    +

    The Number type has exactly 18,437,736,874,454,810,627 (that is, 264 - 253 + 3) values, representing the double-precision floating point IEEE 754-2019 binary64 values as specified in the IEEE Standard for Binary Floating-Point Arithmetic, except that the 9,007,199,254,740,990 (that is, 253 - 2) distinct “Not-a-Number” values of the IEEE Standard are represented in ECMAScript as a single special *NaN* value. (Note that the *NaN* value is produced by the program expression `NaN`.) In some implementations, external code might be able to detect a difference between various Not-a-Number values, but such behaviour is implementation-defined; to ECMAScript code, all *NaN* values are indistinguishable from each other.

    The bit pattern that might be observed in an ArrayBuffer (see ) or a SharedArrayBuffer (see ) after a Number value has been stored into it is not necessarily the same as the internal representation of that Number value used by the ECMAScript implementation.

    From ae080b8a02a8ab58980219165378001607106b67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Wed, 28 Feb 2024 14:42:56 -0800 Subject: [PATCH 52/69] Normative: Restore params/body ToString order in `new Function` (#3288) --- spec.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec.html b/spec.html index e70494f477..4bf17001a3 100644 --- a/spec.html +++ b/spec.html @@ -30167,10 +30167,10 @@

    1. Let _parameterSym_ be the grammar symbol |FormalParameters[+Yield, +Await]|. 1. Let _fallbackProto_ be *"%AsyncGeneratorFunction.prototype%"*. 1. Let _argCount_ be the number of elements in _parameterArgs_. - 1. Let _bodyString_ be ? ToString(_bodyArg_). 1. Let _parameterStrings_ be a new empty List. 1. For each element _arg_ of _parameterArgs_, do 1. Append ? ToString(_arg_) to _parameterStrings_. + 1. Let _bodyString_ be ? ToString(_bodyArg_). 1. Let _currentRealm_ be the current Realm Record. 1. Perform ? HostEnsureCanCompileStrings(_currentRealm_, _parameterStrings_, _bodyString_, *false*). 1. Let _P_ be the empty String. From 1055ef2120384d3502d0d4ed35caddc767f13058 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Wed, 6 Mar 2024 16:06:46 -0800 Subject: [PATCH 53/69] Editorial: Fix `[[DFSIndex]]` in cyclic module record async evaluation example (#3030) --- spec.html | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/spec.html b/spec.html index 4bf17001a3..016136541d 100644 --- a/spec.html +++ b/spec.html @@ -26972,7 +26972,7 @@

    Example Cyclic Module Record Graphs

    _C_ - 2 + 3 0 ~evaluating-async~ *true* @@ -26981,7 +26981,7 @@

    Example Cyclic Module Record Graphs

    _D_ - 3 + 2 0 ~evaluating-async~ *true* @@ -27017,7 +27017,7 @@

    Example Cyclic Module Record Graphs

    _C_ - 2 + 3 0 ~evaluating-async~ *true* @@ -27062,7 +27062,7 @@

    Example Cyclic Module Record Graphs

    _C_ - 2 + 3 0 ~evaluating-async~ *true* @@ -27071,7 +27071,7 @@

    Example Cyclic Module Record Graphs

    _D_ - 3 + 2 0 ~evaluated~ *true* @@ -27107,7 +27107,7 @@

    Example Cyclic Module Record Graphs

    _C_ - 2 + 3 0 ~evaluated~ *true* @@ -27208,8 +27208,8 @@

    Example Cyclic Module Record Graphs

    _C_ - 2 - 1 + 3 + 0 ~evaluated~ *true* « _A_ » From 6c78dfcd5affaa0b3f3ef30bb2953fdf97593458 Mon Sep 17 00:00:00 2001 From: Linus Groh Date: Wed, 6 Mar 2024 16:12:56 -0800 Subject: [PATCH 54/69] Editorial: Remove redundant type assertion from AsyncBlockStart (#3293) This is already established via the parameter type annotation. --- spec.html | 1 - 1 file changed, 1 deletion(-) diff --git a/spec.html b/spec.html index 016136541d..38ddcfe724 100644 --- a/spec.html +++ b/spec.html @@ -48290,7 +48290,6 @@

    - 1. Assert: _promiseCapability_ is a PromiseCapability Record. 1. Let _runningContext_ be the running execution context. 1. Let _closure_ be a new Abstract Closure with no parameters that captures _promiseCapability_ and _asyncBody_ and performs the following steps when called: 1. Let _acAsyncContext_ be the running execution context. From aaef979f3882af0d6faa709c5676919e38fe755f Mon Sep 17 00:00:00 2001 From: Richard Gibson Date: Mon, 18 Mar 2024 11:46:49 -0700 Subject: [PATCH 55/69] Editorial: Introduce StringLastIndexOf (#3290) --- spec.html | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/spec.html b/spec.html index 38ddcfe724..70286aa4bc 100644 --- a/spec.html +++ b/spec.html @@ -1168,7 +1168,7 @@

    _string_: a String, _searchValue_: a String, _fromIndex_: a non-negative integer, - ): an integer + ): a non-negative integer or -1

    @@ -1188,6 +1188,30 @@

    This algorithm always returns -1 if _fromIndex_ + the length of _searchValue_ > the length of _string_.

    + + +

    + StringLastIndexOf ( + _string_: a String, + _searchValue_: a String, + _fromIndex_: a non-negative integer, + ): a non-negative integer or -1 +

    +
    +
    + + 1. Let _len_ be the length of _string_. + 1. Let _searchLen_ be the length of _searchValue_. + 1. Assert: _fromIndex_ + _searchLen_ ≤ _len_. + 1. For each integer _i_ such that 0 ≤ _i_ ≤ _fromIndex_, in descending order, do + 1. Let _candidate_ be the substring of _string_ from _i_ to _i_ + _searchLen_. + 1. If _candidate_ is _searchValue_, return _i_. + 1. Return -1. + + +

    If _searchValue_ is the empty String, this algorithm returns _fromIndex_. The empty String is effectively found at every position within a string, including after the last code unit.

    +
    +
    @@ -34646,11 +34670,7 @@

    String.prototype.lastIndexOf ( _searchString_ [ , _position_ ] )

    1. Let _len_ be the length of _S_. 1. Let _searchLen_ be the length of _searchStr_. 1. Let _start_ be the result of clamping _pos_ between 0 and _len_ - _searchLen_. - 1. If _searchStr_ is the empty String, return 𝔽(_start_). - 1. For each integer _i_ such that 0 ≤ _i_ ≤ _start_, in descending order, do - 1. Let _candidate_ be the substring of _S_ from _i_ to _i_ + _searchLen_. - 1. If _candidate_ is _searchStr_, return 𝔽(_i_). - 1. Return *-1*𝔽. + 1. Return 𝔽(StringLastIndexOf(_S_, _searchStr_, _start_)).

    This method is intentionally generic; it does not require that its *this* value be a String object. Therefore, it can be transferred to other kinds of objects for use as a method.

    From 97580adc1b85eb18a4d357a181f1c5f259d8b012 Mon Sep 17 00:00:00 2001 From: Richard Gibson Date: Wed, 20 Mar 2024 15:03:02 -0700 Subject: [PATCH 56/69] Editorial: Generalize ParseText to support String input (#3099) --- spec.html | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/spec.html b/spec.html index 70286aa4bc..3ebc012ea9 100644 --- a/spec.html +++ b/spec.html @@ -4995,8 +4995,7 @@

    - 1. Let _text_ be StringToCodePoints(_str_). - 1. Let _literal_ be ParseText(_text_, |StringNumericLiteral|). + 1. Let _literal_ be ParseText(_str_, |StringNumericLiteral|). 1. If _literal_ is a List of errors, return *NaN*. 1. Return StringNumericValue of _literal_. @@ -5379,8 +5378,7 @@

    - 1. Let _text_ be StringToCodePoints(_str_). - 1. Let _literal_ be ParseText(_text_, |StringIntegerLiteral|). + 1. Let _literal_ be ParseText(_str_, |StringIntegerLiteral|). 1. If _literal_ is a List of errors, return *undefined*. 1. Let _mv_ be the MV of _literal_. 1. Assert: _mv_ is an integer. @@ -16124,13 +16122,14 @@

    Static Semantics: ParseText ( - _sourceText_: a sequence of Unicode code points, + _sourceText_: a String or a sequence of Unicode code points, _goalSymbol_: a nonterminal in one of the ECMAScript grammars, ): a Parse Node or a non-empty List of *SyntaxError* objects

    + 1. If _sourceText_ is a String, set _sourceText_ to StringToCodePoints(_sourceText_). 1. Attempt to parse _sourceText_ using _goalSymbol_ as the goal symbol, and analyse the parse result for any early error conditions. Parsing and early error detection may be interleaved in an implementation-defined manner. 1. If the parse succeeded and no early errors were found, return the Parse Node (an instance of _goalSymbol_) at the root of the parse tree resulting from the parse. 1. Otherwise, return a List of one or more *SyntaxError* objects representing the parsing errors and/or early errors. If more than one parsing error or early error is present, the number and ordering of error objects in the list is implementation-defined, but at least one must be present. @@ -28899,7 +28898,7 @@

    1. Let _classFieldInitializerName_ be _F_.[[ClassFieldInitializerName]]. 1. If _classFieldInitializerName_ is not ~empty~, set _inClassFieldInitializer_ to *true*. 1. Perform the following substeps in an implementation-defined order, possibly interleaving parsing and error detection: - 1. Let _script_ be ParseText(StringToCodePoints(_x_), |Script|). + 1. Let _script_ be ParseText(_x_, |Script|). 1. If _script_ is a List of errors, throw a *SyntaxError* exception. 1. If _script_ Contains |ScriptBody| is *false*, return *undefined*. 1. Let _body_ be the |ScriptBody| of _script_. @@ -29314,7 +29313,7 @@

    1. Let _len_ be the length of _string_. 1. Assert: _position_ + 2 ≤ _len_. 1. Let _hexDigits_ be the substring of _string_ from _position_ to _position_ + 2. - 1. Let _parseResult_ be ParseText(StringToCodePoints(_hexDigits_), |HexDigits[~Sep]|). + 1. Let _parseResult_ be ParseText(_hexDigits_, |HexDigits[~Sep]|). 1. If _parseResult_ is not a Parse Node, return _parseResult_. 1. Let _n_ be the MV of _parseResult_. 1. Assert: _n_ is in the inclusive interval from 0 to 255. @@ -30208,9 +30207,9 @@

    1. Let _bodyParseString_ be the string-concatenation of 0x000A (LINE FEED), _bodyString_, and 0x000A (LINE FEED). 1. Let _sourceString_ be the string-concatenation of _prefix_, *" anonymous("*, _P_, 0x000A (LINE FEED), *") {"*, _bodyParseString_, and *"}"*. 1. Let _sourceText_ be StringToCodePoints(_sourceString_). - 1. Let _parameters_ be ParseText(StringToCodePoints(_P_), _parameterSym_). + 1. Let _parameters_ be ParseText(_P_, _parameterSym_). 1. If _parameters_ is a List of errors, throw a *SyntaxError* exception. - 1. Let _body_ be ParseText(StringToCodePoints(_bodyParseString_), _bodySym_). + 1. Let _body_ be ParseText(_bodyParseString_, _bodySym_). 1. If _body_ is a List of errors, throw a *SyntaxError* exception. 1. NOTE: The parameters and body are parsed separately to ensure that each is valid alone. For example, `new Function("/*", "*/ ) {")` does not evaluate to a function. 1. NOTE: If this step is reached, _sourceText_ must have the syntax of _exprSym_ (although the reverse implication does not hold). The purpose of the next two steps is to enforce any Early Error rules which apply to _exprSym_ directly. @@ -33230,7 +33229,7 @@

    The return value indicates whether _offsetString_ conforms to the grammar given by |UTCOffset|.
    - 1. Let _parseResult_ be ParseText(StringToCodePoints(_offsetString_), |UTCOffset|). + 1. Let _parseResult_ be ParseText(_offsetString_, |UTCOffset|). 1. If _parseResult_ is a List of errors, return *false*. 1. Return *true*. @@ -33247,7 +33246,7 @@

    The return value is the UTC offset, as a number of nanoseconds, that corresponds to the String _offsetString_.
    - 1. Let _parseResult_ be ParseText(StringToCodePoints(_offsetString_), |UTCOffset|). + 1. Let _parseResult_ be ParseText(_offsetString_, |UTCOffset|). 1. Assert: _parseResult_ is not a List of errors. 1. Assert: _parseResult_ contains a |TemporalSign| Parse Node. 1. Let _parsedSign_ be the source text matched by the |TemporalSign| Parse Node contained within _parseResult_. @@ -44944,7 +44943,7 @@

    JSON.parse ( _text_ [ , _reviver_ ] )

    1. Let _jsonString_ be ? ToString(_text_). 1. [id="step-json-parse-validate"] Parse StringToCodePoints(_jsonString_) as a JSON text as specified in ECMA-404. Throw a *SyntaxError* exception if it is not a valid JSON text as defined in that specification. 1. Let _scriptString_ be the string-concatenation of *"("*, _jsonString_, and *");"*. - 1. [id="step-json-parse-parse"] Let _script_ be ParseText(StringToCodePoints(_scriptString_), |Script|). + 1. [id="step-json-parse-parse"] Let _script_ be ParseText(_scriptString_, |Script|). 1. NOTE: The early error rules defined in have special handling for the above invocation of ParseText. 1. Assert: _script_ is a Parse Node. 1. [id="step-json-parse-eval"] Let _completion_ be Completion(Evaluation of _script_). @@ -50143,7 +50142,7 @@

    unescape ( _string_ )

    1. Else if _k_ + 3 ≤ _len_, then 1. Set _hexDigits_ to the substring of _string_ from _k_ + 1 to _k_ + 3. 1. Set _optionalAdvance_ to 2. - 1. Let _parseResult_ be ParseText(StringToCodePoints(_hexDigits_), |HexDigits[~Sep]|). + 1. Let _parseResult_ be ParseText(_hexDigits_, |HexDigits[~Sep]|). 1. If _parseResult_ is a Parse Node, then 1. Let _n_ be the MV of _parseResult_. 1. Set _C_ to the code unit whose numeric value is _n_. From 80c4419202b4ce213d30a9e6003b8b92a913edb4 Mon Sep 17 00:00:00 2001 From: Michael Dyck Date: Wed, 20 Mar 2024 15:59:47 -0700 Subject: [PATCH 57/69] Editorial: Introduce IsStrict() abstract operation (#3209) (The pre-existing "IsStrict" AO is renamed to "ScriptIsStrict".) --- spec.html | 85 ++++++++++++++++++++++++++++++++----------------------- 1 file changed, 49 insertions(+), 36 deletions(-) diff --git a/spec.html b/spec.html index 3ebc012ea9..1259b79998 100644 --- a/spec.html +++ b/spec.html @@ -9699,7 +9699,7 @@

    Static Semantics: AssignmentTargetType ( ): ~simple~ or ~invalid~

    IdentifierReference : Identifier - 1. If this |IdentifierReference| is contained in strict mode code and StringValue of |Identifier| is either *"eval"* or *"arguments"*, return ~invalid~. + 1. If IsStrict(this |IdentifierReference|) is *true* and StringValue of |Identifier| is either *"eval"* or *"arguments"*, return ~invalid~. 1. Return ~simple~. @@ -11841,7 +11841,7 @@

    1. If _env_ is not present or _env_ is *undefined*, then 1. Set _env_ to the running execution context's LexicalEnvironment. 1. Assert: _env_ is an Environment Record. - 1. If the source text matched by the syntactic production that is being evaluated is contained in strict mode code, let _strict_ be *true*; else let _strict_ be *false*. + 1. Let _strict_ be IsStrict(the syntactic production that is being evaluated). 1. Return ? GetIdentifierReference(_env_, _name_, _strict_). @@ -13477,7 +13477,7 @@

    1. Set _F_.[[SourceText]] to _sourceText_. 1. Set _F_.[[FormalParameters]] to _ParameterList_. 1. Set _F_.[[ECMAScriptCode]] to _Body_. - 1. If the source text matched by _Body_ is strict mode code, let _Strict_ be *true*; else let _Strict_ be *false*. + 1. Let _Strict_ be IsStrict(_Body_). 1. Set _F_.[[Strict]] to _Strict_. 1. If _thisMode_ is ~lexical-this~, set _F_.[[ThisMode]] to ~lexical~. 1. Else if _Strict_ is *true*, set _F_.[[ThisMode]] to ~strict~. @@ -16209,6 +16209,19 @@

    Strict Mode Code

    ECMAScript code that is not strict mode code is called non-strict code.

    + + +

    + Static Semantics: IsStrict ( + _node_: a Parse Node, + ): a Boolean +

    +
    +
    + + 1. If the source text matched by _node_ is strict mode code, return *true*; else return *false*. + +
    @@ -16878,7 +16891,7 @@

    Static Semantics: Early Errors

    DecimalIntegerLiteral :: NonOctalDecimalIntegerLiteral
      -
    • It is a Syntax Error if the source text matched by this production is strict mode code.
    • +
    • It is a Syntax Error if IsStrict(this production) is *true*.
    In non-strict code, this syntax is Legacy.
    @@ -17145,7 +17158,7 @@

    Static Semantics: Early Errors

    NonOctalDecimalEscapeSequence
      -
    • It is a Syntax Error if the source text matched by this production is strict mode code.
    • +
    • It is a Syntax Error if IsStrict(this production) is *true*.
    In non-strict code, this syntax is Legacy. @@ -18002,7 +18015,7 @@

    Static Semantics: Early Errors

    BindingIdentifier : Identifier
    • - It is a Syntax Error if the source text matched by this production is contained in strict mode code and the StringValue of |Identifier| is either *"arguments"* or *"eval"*. + It is a Syntax Error if IsStrict(this production) is *true* and the StringValue of |Identifier| is either *"arguments"* or *"eval"*.
    @@ -18014,7 +18027,7 @@

    Static Semantics: Early Errors

    • - It is a Syntax Error if the source text matched by this production is contained in strict mode code. + It is a Syntax Error if IsStrict(this production) is *true*.
    @@ -18063,7 +18076,7 @@

    Static Semantics: Early Errors

    Identifier : IdentifierName but not ReservedWord
    • - It is a Syntax Error if this phrase is contained in strict mode code and the StringValue of |IdentifierName| is one of *"implements"*, *"interface"*, *"let"*, *"package"*, *"private"*, *"protected"*, *"public"*, *"static"*, or *"yield"*. + It is a Syntax Error if IsStrict(this phrase) is *true* and the StringValue of |IdentifierName| is one of *"implements"*, *"interface"*, *"let"*, *"package"*, *"private"*, *"protected"*, *"public"*, *"static"*, or *"yield"*.
    • It is a Syntax Error if the goal symbol of the syntactic grammar is |Module| and the StringValue of |IdentifierName| is *"await"*. @@ -19096,14 +19109,14 @@

      Runtime Semantics: Evaluation

      1. Let _baseReference_ be ? Evaluation of |MemberExpression|. 1. Let _baseValue_ be ? GetValue(_baseReference_). - 1. If the source text matched by this |MemberExpression| is strict mode code, let _strict_ be *true*; else let _strict_ be *false*. + 1. Let _strict_ be IsStrict(this |MemberExpression|). 1. Return ? EvaluatePropertyAccessWithExpressionKey(_baseValue_, |Expression|, _strict_). MemberExpression : MemberExpression `.` IdentifierName 1. Let _baseReference_ be ? Evaluation of |MemberExpression|. 1. Let _baseValue_ be ? GetValue(_baseReference_). - 1. If the source text matched by this |MemberExpression| is strict mode code, let _strict_ be *true*; else let _strict_ be *false*. + 1. Let _strict_ be IsStrict(this |MemberExpression|). 1. Return EvaluatePropertyAccessWithIdentifierKey(_baseValue_, |IdentifierName|, _strict_). MemberExpression : MemberExpression `.` PrivateIdentifier @@ -19117,14 +19130,14 @@

      Runtime Semantics: Evaluation

      1. Let _baseReference_ be ? Evaluation of |CallExpression|. 1. Let _baseValue_ be ? GetValue(_baseReference_). - 1. If the source text matched by this |CallExpression| is strict mode code, let _strict_ be *true*; else let _strict_ be *false*. + 1. Let _strict_ be IsStrict(this |CallExpression|). 1. Return ? EvaluatePropertyAccessWithExpressionKey(_baseValue_, |Expression|, _strict_). CallExpression : CallExpression `.` IdentifierName 1. Let _baseReference_ be ? Evaluation of |CallExpression|. 1. Let _baseValue_ be ? GetValue(_baseReference_). - 1. If the source text matched by this |CallExpression| is strict mode code, let _strict_ be *true*; else let _strict_ be *false*. + 1. Let _strict_ be IsStrict(this |CallExpression|). 1. Return EvaluatePropertyAccessWithIdentifierKey(_baseValue_, |IdentifierName|, _strict_). CallExpression : CallExpression `.` PrivateIdentifier @@ -19225,7 +19238,7 @@

      Runtime Semantics: Evaluation

      1. Let _argList_ be ? ArgumentListEvaluation of _arguments_. 1. If _argList_ has no elements, return *undefined*. 1. Let _evalArg_ be the first element of _argList_. - 1. If the source text matched by this |CallExpression| is strict mode code, let _strictCaller_ be *true*. Otherwise let _strictCaller_ be *false*. + 1. If IsStrict(this |CallExpression|) is *true*, let _strictCaller_ be *true*. Otherwise let _strictCaller_ be *false*. 1. [id="step-callexpression-evaluation-direct-eval"] Return ? PerformEval(_evalArg_, _strictCaller_, *true*). 1. Let _thisCall_ be this |CallExpression|. 1. Let _tailCall_ be IsInTailPosition(_thisCall_). @@ -19284,7 +19297,7 @@

      Runtime Semantics: Evaluation

      1. Let _propertyNameReference_ be ? Evaluation of |Expression|. 1. Let _propertyNameValue_ be ? GetValue(_propertyNameReference_). 1. Let _propertyKey_ be ? ToPropertyKey(_propertyNameValue_). - 1. If the source text matched by this |SuperProperty| is strict mode code, let _strict_ be *true*; else let _strict_ be *false*. + 1. Let _strict_ be IsStrict(this |SuperProperty|). 1. Return ? MakeSuperPropertyReference(_actualThis_, _propertyKey_, _strict_). SuperProperty : `super` `.` IdentifierName @@ -19292,7 +19305,7 @@

      Runtime Semantics: Evaluation

      1. Let _env_ be GetThisEnvironment(). 1. Let _actualThis_ be ? _env_.GetThisBinding(). 1. Let _propertyKey_ be StringValue of |IdentifierName|. - 1. If the source text matched by this |SuperProperty| is strict mode code, let _strict_ be *true*; else let _strict_ be *false*. + 1. Let _strict_ be IsStrict(this |SuperProperty|). 1. Return ? MakeSuperPropertyReference(_actualThis_, _propertyKey_, _strict_). SuperCall : `super` Arguments @@ -19475,12 +19488,12 @@

      OptionalChain : `?.` `[` Expression `]` - 1. If the source text matched by this |OptionalChain| is strict mode code, let _strict_ be *true*; else let _strict_ be *false*. + 1. Let _strict_ be IsStrict(this |OptionalChain|). 1. Return ? EvaluatePropertyAccessWithExpressionKey(_baseValue_, |Expression|, _strict_). OptionalChain : `?.` IdentifierName - 1. If the source text matched by this |OptionalChain| is strict mode code, let _strict_ be *true*; else let _strict_ be *false*. + 1. Let _strict_ be IsStrict(this |OptionalChain|). 1. Return EvaluatePropertyAccessWithIdentifierKey(_baseValue_, |IdentifierName|, _strict_). OptionalChain : `?.` PrivateIdentifier @@ -19502,7 +19515,7 @@

      1. Let _optionalChain_ be |OptionalChain|. 1. Let _newReference_ be ? ChainEvaluation of _optionalChain_ with arguments _baseValue_ and _baseReference_. 1. Let _newValue_ be ? GetValue(_newReference_). - 1. If the source text matched by this |OptionalChain| is strict mode code, let _strict_ be *true*; else let _strict_ be *false*. + 1. Let _strict_ be IsStrict(this |OptionalChain|). 1. Return ? EvaluatePropertyAccessWithExpressionKey(_newValue_, |Expression|, _strict_). OptionalChain : OptionalChain `.` IdentifierName @@ -19510,7 +19523,7 @@

      1. Let _optionalChain_ be |OptionalChain|. 1. Let _newReference_ be ? ChainEvaluation of _optionalChain_ with arguments _baseValue_ and _baseReference_. 1. Let _newValue_ be ? GetValue(_newReference_). - 1. If the source text matched by this |OptionalChain| is strict mode code, let _strict_ be *true*; else let _strict_ be *false*. + 1. Let _strict_ be IsStrict(this |OptionalChain|). 1. Return EvaluatePropertyAccessWithIdentifierKey(_newValue_, |IdentifierName|, _strict_). OptionalChain : OptionalChain `.` PrivateIdentifier @@ -19816,7 +19829,7 @@

      Static Semantics: Early Errors

      UnaryExpression : `delete` UnaryExpression
      • - It is a Syntax Error if the |UnaryExpression| is contained in strict mode code and the derived |UnaryExpression| is PrimaryExpression : IdentifierReference, MemberExpression : MemberExpression `.` PrivateIdentifier, CallExpression : CallExpression `.` PrivateIdentifier, OptionalChain : `?.` PrivateIdentifier, or OptionalChain : OptionalChain `.` PrivateIdentifier. + It is a Syntax Error if IsStrict(the |UnaryExpression|) is *true* and the derived |UnaryExpression| is PrimaryExpression : IdentifierReference, MemberExpression : MemberExpression `.` PrivateIdentifier, CallExpression : CallExpression `.` PrivateIdentifier, OptionalChain : `?.` PrivateIdentifier, or OptionalChain : OptionalChain `.` PrivateIdentifier.
      • @@ -22536,7 +22549,7 @@

        Static Semantics: Early Errors

        WithStatement : `with` `(` Expression `)` Statement
        • - It is a Syntax Error if the source text matched by this production is contained in strict mode code. + It is a Syntax Error if IsStrict(this production) is *true*.
        • It is a Syntax Error if IsLabelledFunction(|Statement|) is *true*. @@ -23324,10 +23337,10 @@

          Static Semantics: Early Errors

          • - If the source text matched by |FormalParameters| is strict mode code, the Early Error rules for UniqueFormalParameters : FormalParameters are applied. + If IsStrict(|FormalParameters|) is *true*, the Early Error rules for UniqueFormalParameters : FormalParameters are applied.
          • - If |BindingIdentifier| is present and the source text matched by |BindingIdentifier| is strict mode code, it is a Syntax Error if the StringValue of |BindingIdentifier| is either *"eval"* or *"arguments"*. + If |BindingIdentifier| is present and IsStrict(|BindingIdentifier|) is *true*, it is a Syntax Error if the StringValue of |BindingIdentifier| is either *"eval"* or *"arguments"*.
          • It is a Syntax Error if FunctionBodyContainsUseStrict of |FunctionBody| is *true* and IsSimpleParameterList of |FormalParameters| is *false*. @@ -23893,10 +23906,10 @@

            Static Semantics: Early Errors

            • - If the source text matched by |FormalParameters| is strict mode code, the Early Error rules for UniqueFormalParameters : FormalParameters are applied. + If IsStrict(|FormalParameters|) is *true*, the Early Error rules for UniqueFormalParameters : FormalParameters are applied.
            • - If |BindingIdentifier| is present and the source text matched by |BindingIdentifier| is strict mode code, it is a Syntax Error if the StringValue of |BindingIdentifier| is either *"eval"* or *"arguments"*. + If |BindingIdentifier| is present and IsStrict(|BindingIdentifier|) is *true*, it is a Syntax Error if the StringValue of |BindingIdentifier| is either *"eval"* or *"arguments"*.
            • It is a Syntax Error if FunctionBodyContainsUseStrict of |GeneratorBody| is *true* and IsSimpleParameterList of |FormalParameters| is *false*. @@ -24134,8 +24147,8 @@

              Static Semantics: Early Errors

              `async` `function` `*` BindingIdentifier? `(` FormalParameters `)` `{` AsyncGeneratorBody `}`
                -
              • If the source text matched by |FormalParameters| is strict mode code, the Early Error rules for UniqueFormalParameters : FormalParameters are applied.
              • -
              • If |BindingIdentifier| is present and the source text matched by |BindingIdentifier| is strict mode code, it is a Syntax Error if the StringValue of |BindingIdentifier| is either *"eval"* or *"arguments"*.
              • +
              • If IsStrict(|FormalParameters|) is *true*, the Early Error rules for UniqueFormalParameters : FormalParameters are applied.
              • +
              • If |BindingIdentifier| is present and IsStrict(|BindingIdentifier|) is *true*, it is a Syntax Error if the StringValue of |BindingIdentifier| is either *"eval"* or *"arguments"*.
              • It is a Syntax Error if FunctionBodyContainsUseStrict of |AsyncGeneratorBody| is *true* and IsSimpleParameterList of |FormalParameters| is *false*.
              • It is a Syntax Error if any element of the BoundNames of |FormalParameters| also occurs in the LexicallyDeclaredNames of |AsyncGeneratorBody|.
              • It is a Syntax Error if |FormalParameters| Contains |YieldExpression| is *true*.
              • @@ -25080,8 +25093,8 @@

                Static Semantics: Early Errors

                • It is a Syntax Error if FunctionBodyContainsUseStrict of |AsyncFunctionBody| is *true* and IsSimpleParameterList of |FormalParameters| is *false*.
                • It is a Syntax Error if |FormalParameters| Contains |AwaitExpression| is *true*.
                • -
                • If the source text matched by |FormalParameters| is strict mode code, the Early Error rules for UniqueFormalParameters : FormalParameters are applied.
                • -
                • If |BindingIdentifier| is present and the source text matched by |BindingIdentifier| is strict mode code, it is a Syntax Error if the StringValue of |BindingIdentifier| is either *"eval"* or *"arguments"*.
                • +
                • If IsStrict(|FormalParameters|) is *true*, the Early Error rules for UniqueFormalParameters : FormalParameters are applied.
                • +
                • If |BindingIdentifier| is present and IsStrict(|BindingIdentifier|) is *true*, it is a Syntax Error if the StringValue of |BindingIdentifier| is either *"eval"* or *"arguments"*.
                • It is a Syntax Error if any element of the BoundNames of |FormalParameters| also occurs in the LexicallyDeclaredNames of |AsyncFunctionBody|.
                • It is a Syntax Error if |FormalParameters| Contains |SuperProperty| is *true*.
                • It is a Syntax Error if |AsyncFunctionBody| Contains |SuperProperty| is *true*.
                • @@ -25353,7 +25366,7 @@

                  - 1. If the source text matched by _call_ is non-strict code, return *false*. + 1. If IsStrict(_call_) is *false*, return *false*. 1. If _call_ is not contained within a |FunctionBody|, a |ConciseBody|, or an |AsyncConciseBody|, return *false*. 1. Let _body_ be the |FunctionBody|, |ConciseBody|, or |AsyncConciseBody| that most closely contains _call_. 1. If _body_ is the |FunctionBody| of a |GeneratorBody|, return *false*. @@ -25767,8 +25780,8 @@

                  Static Semantics: Early Errors

                - -

                Static Semantics: IsStrict ( ): a Boolean

                + +

                Static Semantics: ScriptIsStrict ( ): a Boolean

                Script : ScriptBody? @@ -28907,7 +28920,7 @@

                1. If _inDerivedConstructor_ is *false* and _body_ Contains |SuperCall|, throw a *SyntaxError* exception. 1. If _inClassFieldInitializer_ is *true* and ContainsArguments of _body_ is *true*, throw a *SyntaxError* exception. 1. If _strictCaller_ is *true*, let _strictEval_ be *true*. - 1. Else, let _strictEval_ be IsStrict of _script_. + 1. Else, let _strictEval_ be ScriptIsStrict of _script_. 1. Let _runningContext_ be the running execution context. 1. NOTE: If _direct_ is *true*, _runningContext_ will be the execution context that performed the direct eval. If _direct_ is *false*, _runningContext_ will be the execution context for the invocation of the `eval` function. 1. If _direct_ is *true*, then @@ -50523,7 +50536,7 @@

                Changes to GlobalDeclarationInstantiation

                During GlobalDeclarationInstantiation the following steps are performed in place of step :

                1. Perform the following steps: - 1. Let _strict_ be IsStrict of _script_. + 1. Let _strict_ be ScriptIsStrict of _script_. 1. If _strict_ is *false*, then 1. Let _declaredFunctionOrVarNames_ be the list-concatenation of _declaredFunctionNames_ and _declaredVarNames_. 1. For each |FunctionDeclaration| _f_ that is directly contained in the |StatementList| of a |Block|, |CaseClause|, or |DefaultClause| Contained within _script_, do @@ -50594,7 +50607,7 @@

                Changes to Block Static Semantics: Early Errors

                Block : `{` StatementList `}`
                • - It is a Syntax Error if the LexicallyDeclaredNames of |StatementList| contains any duplicate entries, unless the source text matched by this production is not strict mode code and the duplicate entries are only bound by FunctionDeclarations. + It is a Syntax Error if the LexicallyDeclaredNames of |StatementList| contains any duplicate entries, unless IsStrict(this production) is *false* and the duplicate entries are only bound by FunctionDeclarations.
                • It is a Syntax Error if any element of the LexicallyDeclaredNames of |StatementList| also occurs in the VarDeclaredNames of |StatementList|. @@ -50608,7 +50621,7 @@

                  Changes to `switch` Statement Static Semantics: Early Errors

                  SwitchStatement : `switch` `(` Expression `)` CaseBlock
                  • - It is a Syntax Error if the LexicallyDeclaredNames of |CaseBlock| contains any duplicate entries, unless the source text matched by this production is not strict mode code and the duplicate entries are only bound by FunctionDeclarations. + It is a Syntax Error if the LexicallyDeclaredNames of |CaseBlock| contains any duplicate entries, unless IsStrict(this production) is *false* and the duplicate entries are only bound by FunctionDeclarations.
                  • It is a Syntax Error if any element of the LexicallyDeclaredNames of |CaseBlock| also occurs in the VarDeclaredNames of |CaseBlock|. From 810037a974122625cb68103a2a4b86b0ed9f58f5 Mon Sep 17 00:00:00 2001 From: Michael Ficarra Date: Wed, 20 Mar 2024 16:07:48 -0700 Subject: [PATCH 58/69] Editorial: reorganize the mathematical operations section a bit (#3271) --- spec.html | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/spec.html b/spec.html index 1259b79998..6b0f85cee2 100644 --- a/spec.html +++ b/spec.html @@ -1068,12 +1068,10 @@

                    Mathematical Operations

                  • BigInts: ECMAScript language values representing arbitrary integers in a one-to-one correspondence.
                  -

                  In the language of this specification, numerical values are distinguished among different numeric kinds using subscript suffixes. The subscript 𝔽 refers to Numbers, and the subscript refers to BigInts. Numeric values without a subscript suffix refer to mathematical values.

                  -

                  Numeric operators such as +, ×, =, and ≥ refer to those operations as determined by the type of the operands. When applied to mathematical values, the operators refer to the usual mathematical operations. When applied to extended mathematical values, the operators refer to the usual mathematical operations over the extended real numbers; indeterminate forms are not defined and their use in this specification should be considered an editorial error. When applied to Numbers, the operators refer to the relevant operations within IEEE 754-2019. When applied to BigInts, the operators refer to the usual mathematical operations applied to the mathematical value of the BigInt.

                  +

                  In the language of this specification, numerical values are distinguished among different numeric kinds using subscript suffixes. The subscript 𝔽 refers to Numbers, and the subscript refers to BigInts. Numeric values without a subscript suffix refer to mathematical values. This specification denotes most numeric values in base 10; it also uses numeric values of the form 0x followed by digits 0-9 or A-F as base-16 values.

                  In general, when this specification refers to a numerical value, such as in the phrase, "the length of _y_" or "the integer represented by the four hexadecimal digits ...", without explicitly specifying a numeric kind, the phrase refers to a mathematical value. Phrases which refer to a Number or a BigInt value are explicitly annotated as such; for example, "the Number value for the number of code points in …" or "the BigInt value for …".

                  -

                  Numeric operators applied to mixed-type operands (such as a Number and a mathematical value) are not defined and should be considered an editorial error in this specification.

                  -

                  This specification denotes most numeric values in base 10; it also uses numeric values of the form 0x followed by digits 0-9 or A-F as base-16 values.

                  When the term integer is used in this specification, it refers to a mathematical value which is in the set of integers, unless otherwise stated. When the term integral Number is used in this specification, it refers to a Number value whose mathematical value is in the set of integers.

                  +

                  Numeric operators such as +, ×, =, and ≥ refer to those operations as determined by the type of the operands. When applied to mathematical values, the operators refer to the usual mathematical operations. When applied to extended mathematical values, the operators refer to the usual mathematical operations over the extended real numbers; indeterminate forms are not defined and their use in this specification should be considered an editorial error. When applied to Numbers, the operators refer to the relevant operations within IEEE 754-2019. When applied to BigInts, the operators refer to the usual mathematical operations applied to the mathematical value of the BigInt. Numeric operators applied to mixed-type operands (such as a Number and a mathematical value) are not defined and should be considered an editorial error in this specification.

                  Conversions between mathematical values and Numbers or BigInts are always explicit in this document. A conversion from a mathematical value or extended mathematical value _x_ to a Number is denoted as "the Number value for _x_" or 𝔽(_x_), and is defined in . A conversion from an integer _x_ to a BigInt is denoted as "the BigInt value for _x_" or ℤ(_x_). A conversion from a Number or BigInt _x_ to a mathematical value is denoted as "the mathematical value of _x_", or ℝ(_x_). The mathematical value of *+0*𝔽 and *-0*𝔽 is the mathematical value 0. The mathematical value of non-finite values is not defined. The extended mathematical value of _x_ is the mathematical value of _x_ for finite values, and is +∞ and -∞ for *+∞*𝔽 and *-∞*𝔽 respectively; it is not defined for *NaN*.

                  The mathematical function abs(_x_) produces the absolute value of _x_, which is -_x_ if _x_ < 0 and otherwise is _x_ itself.

                  The mathematical function min(_x1_, _x2_, … , _xN_) produces the mathematically smallest of _x1_ through _xN_. The mathematical function max(_x1_, _x2_, ..., _xN_) produces the mathematically largest of _x1_ through _xN_. The domain and range of these mathematical functions are the extended mathematical values.

                  From 3d5a70b1b543a776dd5e255f8bfd877bf08bdc74 Mon Sep 17 00:00:00 2001 From: Andrew Drake Date: Thu, 21 Mar 2024 09:54:54 -0700 Subject: [PATCH 59/69] Editorial: Remove "message" property from list of Error differences (#3292) This language is a holdover from ES3, the "message" property of all Error prototype objects is defined to be the empty string since ES5. Co-authored-by: Andrew Drake Co-authored-by: Kevin Gibbons --- spec.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec.html b/spec.html index 6b0f85cee2..0f9b7ab32a 100644 --- a/spec.html +++ b/spec.html @@ -30859,7 +30859,7 @@

                  Error Objects

                  Instances of Error objects are thrown as exceptions when runtime errors occur. The Error objects may also serve as base objects for user-defined exception classes.

                  -

                  When an ECMAScript implementation detects a runtime error, it throws a new instance of one of the _NativeError_ objects defined in or a new instance of AggregateError object defined in . Each of these objects has the structure described below, differing only in the name used as the constructor name instead of _NativeError_, in the *"name"* property of the prototype object, in the implementation-defined *"message"* property of the prototype object, and in the presence of the %AggregateError%-specific *"errors"* property.

                  +

                  When an ECMAScript implementation detects a runtime error, it throws a new instance of one of the _NativeError_ objects defined in or a new instance of the AggregateError object defined in .

                  The Error Constructor

                  @@ -30991,7 +30991,7 @@

                  URIError

                  _NativeError_ Object Structure

                  -

                  When an ECMAScript implementation detects a runtime error, it throws a new instance of one of the _NativeError_ objects defined in . Each of these objects has the structure described below, differing only in the name used as the constructor name instead of _NativeError_, in the *"name"* property of the prototype object, and in the implementation-defined *"message"* property of the prototype object.

                  +

                  Each of these objects has the structure described below, differing only in the name used as the constructor name and in the *"name"* property of the prototype object.

                  For each error object, references to _NativeError_ in the definition should be replaced with the appropriate error object name from .

                  From 210ef20192a4c9b365460db996a0e19b70dff561 Mon Sep 17 00:00:00 2001 From: Michael Ficarra Date: Wed, 27 Mar 2024 15:22:44 -0700 Subject: [PATCH 60/69] Meta: changes for printing (#3296) --- package-lock.json | 5532 +++++++++++++++++++++++++-------------------- package.json | 7 +- spec.html | 20 +- 3 files changed, 3049 insertions(+), 2510 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5dceaad343..bd2ac49ed1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,19 +1,19 @@ { "name": "ecma262", "version": "1.0.0", - "lockfileVersion": 2, + "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ecma262", "version": "1.0.0", "license": "SEE LICENSE IN https://tc39.es/ecma262/#sec-copyright-and-software-license", - "dependencies": { - "ecmarkup": "^18.1.3" - }, "devDependencies": { + "ecmarkup": "^18.3.1", "glob": "^7.1.6", "jsdom": "^15.0.0", + "pagedjs": "^0.4.3", + "pagedjs-cli": "^0.4.3", "tar-stream": "^2.2.0", "tiny-json-http": "^7.1.2" } @@ -22,25 +22,26 @@ "version": "7.12.11", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, "dependencies": { "@babel/highlight": "^7.10.4" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "version": "7.22.20", + "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", - "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "version": "7.23.4", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, "engines": { @@ -49,8 +50,8 @@ }, "node_modules/@babel/highlight/node_modules/ansi-styles": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -60,8 +61,8 @@ }, "node_modules/@babel/highlight/node_modules/chalk": { "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -71,97 +72,99 @@ "node": ">=4" } }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" + "color-name": "1.1.3" } }, - "node_modules/@esfx/async-canceltoken": { - "version": "1.0.0-pre.30", - "resolved": "https://registry.npmjs.org/@esfx/async-canceltoken/-/async-canceltoken-1.0.0-pre.30.tgz", - "integrity": "sha512-4he0W+ZKH4OO4RvGfmATIibO5JzGLQqwm4Dp3X15bWnguDTmmOFt3Qt169Doij/gXxn2aPpZvxUaYIEebi8Xig==", - "dependencies": { - "@esfx/cancelable": "^1.0.0-pre.30", - "@esfx/collections-linkedlist": "^1.0.0-pre.24", - "@esfx/disposable": "^1.0.0-pre.30", - "@esfx/internal-guards": "^1.0.0-pre.23", - "@esfx/internal-tag": "^1.0.0-pre.19", - "tslib": "^2.1.0" - } + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "dev": true, + "license": "MIT" }, - "node_modules/@esfx/cancelable": { - "version": "1.0.0-pre.30", - "resolved": "https://registry.npmjs.org/@esfx/cancelable/-/cancelable-1.0.0-pre.30.tgz", - "integrity": "sha512-fo0+/D3tEcSOHdZ8HiCR7qOKl5Tkk6Nw6QJNNXSQ0ejlpP3HU4S2i0rb/tjHQ1EkUcWZfB3g2jzfL0ioQSEgGg==", + "node_modules/@babel/polyfill": { + "version": "7.12.1", + "dev": true, + "license": "MIT", "dependencies": { - "@esfx/disposable": "^1.0.0-pre.30", - "@esfx/internal-deprecate": "^1.0.0-pre.24", - "@esfx/internal-guards": "^1.0.0-pre.23", - "@esfx/internal-tag": "^1.0.0-pre.19" + "core-js": "^2.6.5", + "regenerator-runtime": "^0.13.4" } }, - "node_modules/@esfx/collection-core": { - "version": "1.0.0-pre.24", - "resolved": "https://registry.npmjs.org/@esfx/collection-core/-/collection-core-1.0.0-pre.24.tgz", - "integrity": "sha512-OIgMS91JmjSoRWD7u/DfnDzo8vDggeTeUPRi1p5WhyboY0+IwmetEqgeHZb8bpka/SsmtYX5qxqEjeqNXqh+pA==", + "node_modules/@babel/runtime": { + "version": "7.24.0", + "dev": true, + "license": "MIT", "dependencies": { - "@esfx/internal-deprecate": "^1.0.0-pre.24", - "@esfx/internal-guards": "^1.0.0-pre.23" + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@esfx/collections-linkedlist": { - "version": "1.0.0-pre.24", - "resolved": "https://registry.npmjs.org/@esfx/collections-linkedlist/-/collections-linkedlist-1.0.0-pre.24.tgz", - "integrity": "sha512-Maya8jXH0xvzyfeSH88/j2b5gavO/mluslgIC2Ttdz8rh6+3o8/pVYriceH/Jinn4pgTEzDhO6Rn/aruZG0+Ug==", + "node_modules/@babel/runtime/node_modules/regenerator-runtime": { + "version": "0.14.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@esfx/async-canceltoken": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@esfx/async-canceltoken/-/async-canceltoken-1.0.0.tgz", + "integrity": "sha512-3Ps/4NPd7qFltmHL+CYXCjZtNXcQGV9BZmpzu8Rt3/0SZMtbQve0gtX0uJDJGvAWa6w3IB4HrKVP12VPoFONmA==", + "dev": true, "dependencies": { - "@esfx/collection-core": "^1.0.0-pre.24", - "@esfx/equatable": "^1.0.0-pre.19", - "@esfx/internal-guards": "^1.0.0-pre.23" + "@esfx/cancelable": "^1.0.0", + "@esfx/canceltoken": "^1.0.0", + "@esfx/disposable": "^1.0.0", + "tslib": "^2.4.0" } }, - "node_modules/@esfx/disposable": { - "version": "1.0.0-pre.30", - "resolved": "https://registry.npmjs.org/@esfx/disposable/-/disposable-1.0.0-pre.30.tgz", - "integrity": "sha512-njBGIQO+HW+lMqqMjURC+MWn+55ufulgebPLXzlxbwVSz5hZkoCsv6n9sIBQbnvg/PYQmWK5Dk6gDSmFfihTUg==" - }, - "node_modules/@esfx/equatable": { - "version": "1.0.0-pre.19", - "resolved": "https://registry.npmjs.org/@esfx/equatable/-/equatable-1.0.0-pre.19.tgz", - "integrity": "sha512-+f6Xm6GOigyGx7t0D0IyG9Z0AuYDhNWjwV49vs5uNG/+0VQAOSYjmnpSzTZRYcYwxW52DmWJWFYNY8bvCDD2ag==" + "node_modules/@esfx/async-canceltoken/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, - "node_modules/@esfx/internal-deprecate": { - "version": "1.0.0-pre.24", - "resolved": "https://registry.npmjs.org/@esfx/internal-deprecate/-/internal-deprecate-1.0.0-pre.24.tgz", - "integrity": "sha512-TSU5k04+nuVQdyfYhaVXxyskdiwYQHgwN20J3cbyRrm/YFi2dOoFSLFvkMNh7LNOPGWSOg6pfAm3kd23ISR3Ow==" + "node_modules/@esfx/cancelable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@esfx/cancelable/-/cancelable-1.0.0.tgz", + "integrity": "sha512-2dry/TuOT9ydpw86f396v09cyi/gLeGPIZSH4Gx+V/qKQaS/OXCRurCY+Cn8zkBfTAgFsjk9NE15d+LPo2kt9A==", + "dev": true, + "dependencies": { + "@esfx/disposable": "^1.0.0" + } }, - "node_modules/@esfx/internal-guards": { - "version": "1.0.0-pre.23", - "resolved": "https://registry.npmjs.org/@esfx/internal-guards/-/internal-guards-1.0.0-pre.23.tgz", - "integrity": "sha512-y2svuwRERA2eKF1T/Stq+O8kPjicFQcUTob5je3L6iloOHnOD0sX6aQLvheWmTXXS7hAnjlyMeSN/ec84BRyHg==", + "node_modules/@esfx/canceltoken": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@esfx/canceltoken/-/canceltoken-1.0.0.tgz", + "integrity": "sha512-/TgdzC5O89w5v0TgwE2wcdtampWNAFOxzurCtb4RxYVr3m72yk3Bg82vMdznx+H9nnf28zVDR0PtpZO9FxmOkw==", + "dev": true, "dependencies": { - "@esfx/type-model": "^1.0.0-pre.23" + "@esfx/cancelable": "^1.0.0", + "@esfx/disposable": "^1.0.0", + "tslib": "^2.4.0" } }, - "node_modules/@esfx/internal-tag": { - "version": "1.0.0-pre.19", - "resolved": "https://registry.npmjs.org/@esfx/internal-tag/-/internal-tag-1.0.0-pre.19.tgz", - "integrity": "sha512-/v1D5LfvBnbvHzL22Vh6yobrOTVCBhsW/l9M+/GRA51eqCN27yTmWGaYUSd1QXp2vxHwNr0sfckVoNtTzeaIqQ==" + "node_modules/@esfx/canceltoken/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, - "node_modules/@esfx/type-model": { - "version": "1.0.0-pre.23", - "resolved": "https://registry.npmjs.org/@esfx/type-model/-/type-model-1.0.0-pre.23.tgz", - "integrity": "sha512-jwcSY9pqEmGoDNhfT+0LUmSTyk6zXF/pbgKb7KU7mTfCrWfVCT/ve61cD1CreerDRBSat/s55se0lJXwDSjhuA==" + "node_modules/@esfx/disposable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@esfx/disposable/-/disposable-1.0.0.tgz", + "integrity": "sha512-hu7EI+YxlEWEKrb2himbS13HNaq5mlUePASf99KeQqkiNeqiAZbKqG4w59uDcLZs8JrV3qJqS/NYib5ZMhbfTQ==", + "dev": true }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -174,6 +177,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, "engines": { "node": ">= 8" } @@ -182,6 +186,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -190,23 +195,127 @@ "node": ">= 8" } }, + "node_modules/@pdf-lib/standard-fonts": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "pako": "^1.0.6" + } + }, + "node_modules/@pdf-lib/upng": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "pako": "^1.0.10" + } + }, + "node_modules/@puppeteer/browsers": { + "version": "1.4.6", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "debug": "4.3.4", + "extract-zip": "2.0.1", + "progress": "2.0.3", + "proxy-agent": "6.3.0", + "tar-fs": "3.0.4", + "unbzip2-stream": "1.4.3", + "yargs": "17.7.1" + }, + "bin": { + "browsers": "lib/cjs/main-cli.js" + }, + "engines": { + "node": ">=16.3.0" + }, + "peerDependencies": { + "typescript": ">= 4.7.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@puppeteer/browsers/node_modules/debug": { + "version": "4.3.4", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@puppeteer/browsers/node_modules/ms": { + "version": "2.1.2", + "dev": true, + "license": "MIT" + }, "node_modules/@tootallnate/once": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, "engines": { "node": ">= 10" } }, + "node_modules/@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "20.11.25", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/yauzl": { + "version": "2.10.3", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/abab": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==" + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "deprecated": "Use your platform's native atob() and btoa() methods instead", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.8", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } }, "node_modules/acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true, "bin": { "acorn": "bin/acorn" }, @@ -216,9 +325,8 @@ }, "node_modules/acorn-globals": { "version": "4.3.4", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", - "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", "dev": true, + "license": "MIT", "dependencies": { "acorn": "^6.0.1", "acorn-walk": "^6.0.1" @@ -226,9 +334,8 @@ }, "node_modules/acorn-globals/node_modules/acorn": { "version": "6.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", - "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -238,29 +345,48 @@ }, "node_modules/acorn-walk": { "version": "6.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", - "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.4.0" } }, "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "version": "7.1.0", + "dev": true, + "license": "MIT", "dependencies": { - "debug": "4" + "debug": "^4.3.4" }, "engines": { - "node": ">= 6.0.0" + "node": ">= 14" + } + }, + "node_modules/agent-base/node_modules/debug": { + "version": "4.3.4", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, + "node_modules/agent-base/node_modules/ms": { + "version": "2.1.2", + "dev": true, + "license": "MIT" + }, "node_modules/ajv": { "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -272,10 +398,21 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/ansi-regex": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, "node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -286,92 +423,98 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/ansi-styles/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/ansi-styles/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dependencies": { - "sprintf-js": "~1.0.2" - } + "version": "2.0.1", + "dev": true, + "license": "Python-2.0" }, "node_modules/array-back": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", + "dev": true, "engines": { "node": ">=6" } }, "node_modules/array-equal": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "dev": true, + "license": "MIT" }, "node_modules/asn1": { "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", "dev": true, + "license": "MIT", "dependencies": { "safer-buffer": "~2.1.0" } }, "node_modules/assert-plus": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8" } }, + "node_modules/ast-types": { + "version": "0.13.4", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ast-types/node_modules/tslib": { + "version": "2.6.2", + "dev": true, + "license": "0BSD" + }, "node_modules/asynckit": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "dev": true, + "license": "MIT" }, "node_modules/aws-sign2": { "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", "dev": true, + "license": "Apache-2.0", "engines": { "node": "*" } }, "node_modules/aws4": { "version": "1.9.1", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", - "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/b4a": { + "version": "1.6.6", + "dev": true, + "license": "Apache-2.0" }, "node_modules/balanced-match": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/bare-events": { + "version": "2.2.1", + "dev": true, + "license": "Apache-2.0", + "optional": true }, "node_modules/base64-js": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "dev": true, "funding": [ { @@ -386,33 +529,76 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" + }, + "node_modules/basic-ftp": { + "version": "5.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } }, "node_modules/bcrypt-pbkdf": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "tweetnacl": "^0.14.3" } }, "node_modules/bl": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, + "license": "MIT", "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", "readable-stream": "^3.4.0" } }, + "node_modules/body-parser": { + "version": "1.20.2", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/qs": { + "version": "6.11.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -422,6 +608,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, "dependencies": { "fill-range": "^7.0.1" }, @@ -431,13 +618,11 @@ }, "node_modules/browser-process-hrtime": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/buffer": { "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "dev": true, "funding": [ { @@ -453,49 +638,171 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" } }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true + "node_modules/buffer-crc32": { + "version": "0.2.13", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/bytes": { + "version": "3.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" + "node_modules/callsites": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" } }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "node_modules/caseless": { + "version": "0.12.0", + "dev": true, + "license": "Apache-2.0" }, - "node_modules/combined-stream": { + "node_modules/chalk": { + "version": "5.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chromium-bidi": { + "version": "0.4.16", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "mitt": "3.0.0" + }, + "peerDependencies": { + "devtools-protocol": "*" + } + }, + "node_modules/clear-cut": { + "version": "2.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/cli-cursor": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/combined-stream": { "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "license": "MIT", "dependencies": { "delayed-stream": "~1.0.0" }, @@ -507,6 +814,7 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", + "dev": true, "dependencies": { "array-back": "^3.1.0", "find-replace": "^3.0.0", @@ -518,13 +826,14 @@ } }, "node_modules/command-line-usage": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.1.tgz", - "integrity": "sha512-F59pEuAR9o1SF/bD0dQBDluhpT4jJQNWUHEuVBqpDmCUo6gPjCi+m9fCWnWZVR/oG6cMTUms4h+3NPl74wGXvA==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz", + "integrity": "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==", + "dev": true, "dependencies": { - "array-back": "^4.0.1", + "array-back": "^4.0.2", "chalk": "^2.4.2", - "table-layout": "^1.0.1", + "table-layout": "^1.0.2", "typical": "^5.2.0" }, "engines": { @@ -535,6 +844,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -546,6 +856,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true, "engines": { "node": ">=8" } @@ -554,6 +865,7 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -563,46 +875,152 @@ "node": ">=4" } }, - "node_modules/command-line-usage/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/command-line-usage/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" + "color-name": "1.1.3" } }, + "node_modules/command-line-usage/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, "node_modules/command-line-usage/node_modules/typical": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, "engines": { "node": ">=8" } }, + "node_modules/commander": { + "version": "11.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + } + }, "node_modules/concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.5.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "dev": true, + "license": "MIT" + }, + "node_modules/core-js": { + "version": "2.6.12", + "dev": true, + "hasInstallScript": true, + "license": "MIT" }, "node_modules/core-util-is": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/cosmiconfig": { + "version": "8.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + } + }, + "node_modules/cross-fetch": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "node-fetch": "^2.6.12" + } + }, + "node_modules/cross-fetch/node_modules/node-fetch": { + "version": "2.7.0", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/css-tree": { + "version": "1.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } }, "node_modules/cssom": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", - "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==" + "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", + "dev": true }, "node_modules/cssstyle": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "license": "MIT", "dependencies": { "cssom": "~0.3.6" }, @@ -612,14 +1030,25 @@ }, "node_modules/cssstyle/node_modules/cssom": { "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" + "dev": true, + "license": "MIT" + }, + "node_modules/d": { + "version": "1.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "es5-ext": "^0.10.64", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.12" + } }, "node_modules/dashdash": { "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "dev": true, + "license": "MIT", "dependencies": { "assert-plus": "^1.0.0" }, @@ -627,11 +1056,18 @@ "node": ">=0.10" } }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, "node_modules/data-urls": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", "dev": true, + "license": "MIT", "dependencies": { "abab": "^2.0.0", "whatwg-mimetype": "^2.2.0", @@ -640,9 +1076,8 @@ }, "node_modules/data-urls/node_modules/whatwg-url": { "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", "dev": true, + "license": "MIT", "dependencies": { "lodash.sortby": "^4.7.0", "tr46": "^1.0.1", @@ -650,66 +1085,149 @@ } }, "node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "version": "2.6.9", + "dev": true, + "license": "MIT", "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "ms": "2.0.0" } }, "node_modules/decimal.js": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", - "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==" + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "dev": true }, "node_modules/dedent-js": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dedent-js/-/dedent-js-1.0.1.tgz", - "integrity": "sha1-vuX7fJ5yfYXf+iRZDRDsGrElUwU=" + "integrity": "sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==", + "dev": true }, "node_modules/deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, "engines": { "node": ">=4.0.0" } }, "node_modules/deep-is": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + "dev": true, + "license": "MIT" + }, + "node_modules/defaults": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/degenerator": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/degenerator/node_modules/escodegen": { + "version": "2.1.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/degenerator/node_modules/estraverse": { + "version": "5.3.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } }, "node_modules/delayed-stream": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true, + "license": "MIT", "engines": { "node": ">=0.4.0" } }, + "node_modules/depd": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/devtools-protocol": { + "version": "0.0.1147663", + "dev": true, + "license": "BSD-3-Clause" + }, "node_modules/domexception": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", "dev": true, + "license": "MIT", "dependencies": { "webidl-conversions": "^4.0.2" } }, "node_modules/ecc-jsbn": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", "dev": true, + "license": "MIT", "dependencies": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -719,14 +1237,16 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/ecmarkdown/-/ecmarkdown-8.1.0.tgz", "integrity": "sha512-dx6cM6RFjzAXkWr2KQRikED4gy70NFQ0vTI4XUQM/LWcjUYRJUbGdd7nd++trXi5az1JSe49TeeCIVMKDXOtcQ==", + "dev": true, "dependencies": { "escape-html": "^1.0.1" } }, "node_modules/ecmarkup": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/ecmarkup/-/ecmarkup-18.1.3.tgz", - "integrity": "sha512-grvHr/9NlFnOJQ9rL2+AlD1Q/IGT4siTdl1nsSi6gZVrOxIma6sBR9WStlr9s2TxtKXx7ouM18HsZ+RF9OJlHA==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/ecmarkup/-/ecmarkup-18.3.1.tgz", + "integrity": "sha512-ouyfwgVjtvyF9AdAQnI9krCWNE5srK90XGPym8vs6WPtjUso6Pq887DwAYBDbga9lrfwezWo5n8hGu9amYYu1g==", + "dev": true, "dependencies": { "chalk": "^4.1.2", "command-line-args": "^5.2.0", @@ -735,7 +1255,7 @@ "ecmarkdown": "^8.1.0", "eslint-formatter-codeframe": "^7.32.1", "fast-glob": "^3.2.7", - "grammarkdown": "^3.2.0", + "grammarkdown": "^3.3.2", "highlight.js": "11.0.1", "html-escape": "^1.0.2", "js-yaml": "^3.13.1", @@ -757,6 +1277,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, "dependencies": { "acorn": "^7.1.1", "acorn-walk": "^7.1.1" @@ -766,6 +1287,7 @@ "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, "bin": { "acorn": "bin/acorn" }, @@ -777,27 +1299,98 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true, "engines": { "node": ">=0.4.0" } }, + "node_modules/ecmarkup/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ecmarkup/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/ecmarkup/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/ecmarkup/node_modules/data-urls": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.1.tgz", - "integrity": "sha512-Ds554NeT5Gennfoo9KN50Vh6tpgtvYEwraYjejXnyTpu1C7oXKxdFk75REooENHE8ndTVOJuv+BEs4/J/xcozw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", + "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "dev": true, "dependencies": { - "abab": "^2.0.3", + "abab": "^2.0.6", "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^10.0.0" + "whatwg-url": "^11.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/ecmarkup/node_modules/data-urls/node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dev": true, + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" }, "engines": { "node": ">=12" } }, + "node_modules/ecmarkup/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/ecmarkup/node_modules/domexception": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "deprecated": "Use your platform's native DOMException instead", + "dev": true, "dependencies": { "webidl-conversions": "^7.0.0" }, @@ -806,14 +1399,14 @@ } }, "node_modules/ecmarkup/node_modules/escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, "dependencies": { "esprima": "^4.0.1", "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" + "esutils": "^2.0.2" }, "bin": { "escodegen": "bin/escodegen.js", @@ -830,6 +1423,7 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, "engines": { "node": ">=4.0" } @@ -838,6 +1432,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -847,10 +1442,20 @@ "node": ">= 6" } }, + "node_modules/ecmarkup/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/ecmarkup/node_modules/html-encoding-sniffer": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "dev": true, "dependencies": { "whatwg-encoding": "^2.0.0" }, @@ -858,10 +1463,38 @@ "node": ">=12" } }, + "node_modules/ecmarkup/node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/ecmarkup/node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/ecmarkup/node_modules/iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -869,10 +1502,24 @@ "node": ">=0.10.0" } }, + "node_modules/ecmarkup/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/ecmarkup/node_modules/jsdom": { "version": "19.0.0", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-19.0.0.tgz", "integrity": "sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A==", + "dev": true, "dependencies": { "abab": "^2.0.5", "acorn": "^8.5.0", @@ -914,10 +1561,17 @@ } } }, + "node_modules/ecmarkup/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, "node_modules/ecmarkup/node_modules/saxes": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, "dependencies": { "xmlchars": "^2.2.0" }, @@ -925,23 +1579,65 @@ "node": ">=10" } }, + "node_modules/ecmarkup/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/ecmarkup/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/ecmarkup/node_modules/tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", + "dev": true, "dependencies": { "psl": "^1.1.33", "punycode": "^2.1.1", - "universalify": "^0.1.2" + "universalify": "^0.2.0", + "url-parse": "^1.5.3" }, "engines": { "node": ">=6" } }, + "node_modules/ecmarkup/node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dev": true, + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/ecmarkup/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/ecmarkup/node_modules/w3c-xmlserializer": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz", "integrity": "sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==", + "dev": true, "dependencies": { "xml-name-validator": "^4.0.0" }, @@ -953,6 +1649,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, "engines": { "node": ">=12" } @@ -961,6 +1658,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dev": true, "dependencies": { "iconv-lite": "0.6.3" }, @@ -972,6 +1670,20 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/ecmarkup/node_modules/whatwg-url": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-10.0.0.tgz", + "integrity": "sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==", + "dev": true, + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, "engines": { "node": ">=12" } @@ -980,37 +1692,126 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, "engines": { "node": ">=12" } }, + "node_modules/ee-first": { + "version": "1.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/end-of-stream": { "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, + "license": "MIT", "dependencies": { "once": "^1.4.0" } }, + "node_modules/error-ex": { + "version": "1.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es5-ext": { + "version": "0.10.64", + "dev": true, + "hasInstallScript": true, + "license": "ISC", + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "esniff": "^2.0.1", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.4", + "dev": true, + "license": "ISC", + "dependencies": { + "d": "^1.0.2", + "ext": "^1.7.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/escape-html": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + "dev": true, + "license": "MIT" }, "node_modules/escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/escodegen": { "version": "1.14.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.1.tgz", - "integrity": "sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esprima": "^4.0.1", "estraverse": "^4.2.0", @@ -1032,6 +1833,7 @@ "version": "7.32.1", "resolved": "https://registry.npmjs.org/eslint-formatter-codeframe/-/eslint-formatter-codeframe-7.32.1.tgz", "integrity": "sha512-DK/3Q3+zVKq/7PdSYiCxPrsDF8H/TRMK5n8Hziwr4IMkMy+XiKSwbpj25AdajS63I/B61Snetq4uVvX9fOLyAg==", + "dev": true, "dependencies": { "@babel/code-frame": "7.12.11", "chalk": "^4.0.0" @@ -1040,60 +1842,233 @@ "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" + "node_modules/eslint-formatter-codeframe/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "node_modules/eslint-formatter-codeframe/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": ">=4.0" + "node": ">=8" } }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "node_modules/eslint-formatter-codeframe/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + } + }, + "node_modules/esniff": { + "version": "2.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-emitter": { + "version": "0.3.5", + "dev": true, + "license": "MIT", + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "node_modules/express": { + "version": "4.18.3", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/qs": { + "version": "6.11.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ext": { + "version": "1.7.0", + "dev": true, + "license": "ISC", + "dependencies": { + "type": "^2.7.2" } }, "node_modules/extend": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/extract-zip/node_modules/debug": { + "version": "4.3.4", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/extract-zip/node_modules/ms": { + "version": "2.1.2", + "dev": true, + "license": "MIT" }, "node_modules/extsprintf": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", "dev": true, "engines": [ "node >=0.6.0" - ] + ], + "license": "MIT" }, "node_modules/fast-deep-equal": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "dev": true, + "license": "MIT" }, "node_modules/fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -1102,32 +2077,63 @@ "micromatch": "^4.0.4" }, "engines": { - "node": ">=8" + "node": ">=8.6.0" } }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + "dev": true, + "license": "MIT" }, "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, "dependencies": { "reusify": "^1.0.4" } }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -1135,10 +2141,28 @@ "node": ">=8" } }, + "node_modules/finalhandler": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/find-replace": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", + "dev": true, "dependencies": { "array-back": "^3.0.1" }, @@ -1148,18 +2172,16 @@ }, "node_modules/forever-agent": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", "dev": true, + "license": "Apache-2.0", "engines": { "node": "*" } }, "node_modules/form-data": { "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "dev": true, + "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -1169,32 +2191,159 @@ "node": ">= 0.12" } }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "dev": true, + "license": "MIT", + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/fs-constants": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/fs-extra": { + "version": "11.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } }, "node_modules/fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true + "dev": true, + "license": "ISC" + }, + "node_modules/function-bind": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stream": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-uri": { + "version": "6.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^6.0.2", + "debug": "^4.3.4", + "fs-extra": "^11.2.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/get-uri/node_modules/data-uri-to-buffer": { + "version": "6.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/get-uri/node_modules/debug": { + "version": "4.3.4", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/get-uri/node_modules/ms": { + "version": "2.1.2", + "dev": true, + "license": "MIT" }, "node_modules/getpass": { "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "dev": true, + "license": "MIT", "dependencies": { "assert-plus": "^1.0.0" } }, "node_modules/glob": { "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -1214,6 +2363,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -1221,13 +2371,31 @@ "node": ">= 6" } }, + "node_modules/gopd": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "dev": true, + "license": "ISC" + }, "node_modules/grammarkdown": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/grammarkdown/-/grammarkdown-3.2.0.tgz", - "integrity": "sha512-pEVUvG2Kxv/PwM3Dm3kFEU1/GHRkNcFWmk/zkqN/y0uoQtPaZ+5VaBacMQAaFOIL9WGYjHXtqpkT5YRvySsISQ==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/grammarkdown/-/grammarkdown-3.3.2.tgz", + "integrity": "sha512-inNbeEotDr7MENqoZlms3x4gBzvK73wR2NGpNVnw4oEZcsq2METUbAh0J3VWtEqd9t2+U3poEqiJ9CDgBXr5Tg==", + "dev": true, "dependencies": { "@esfx/async-canceltoken": "^1.0.0-pre.13", - "@esfx/cancelable": "^1.0.0-pre.13" + "@esfx/cancelable": "^1.0.0-pre.13", + "@esfx/disposable": "^1.0.0-pre.13" }, "bin": { "grammarkdown": "bin/grammarkdown" @@ -1235,19 +2403,16 @@ }, "node_modules/har-schema": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", "dev": true, + "license": "ISC", "engines": { "node": ">=4" } }, "node_modules/har-validator": { "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", - "deprecated": "this library is no longer supported", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.5.5", "har-schema": "^2.0.0" @@ -1258,52 +2423,146 @@ }, "node_modules/has-flag": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, - "node_modules/highlight.js": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.0.1.tgz", - "integrity": "sha512-EqYpWyTF2s8nMfttfBA2yLKPNoZCO33pLS4MnbXQ4hECf1TKujCt1Kq7QAdrio7roL4+CqsfjqwYj4tYgq0pJQ==", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/html-encoding-sniffer": { + "node_modules/has-property-descriptors": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", "dev": true, + "license": "MIT", "dependencies": { - "whatwg-encoding": "^1.0.1" + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/html-escape": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-escape/-/html-escape-1.0.2.tgz", - "integrity": "sha1-X6eHwFaAkP4zLtWzz0qk9kZCGnQ=" + "node_modules/has-proto": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" + "node_modules/has-symbols": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" }, "engines": { - "node": ">= 6" + "node": ">= 0.4" + } + }, + "node_modules/highlight.js": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.0.1.tgz", + "integrity": "sha512-EqYpWyTF2s8nMfttfBA2yLKPNoZCO33pLS4MnbXQ4hECf1TKujCt1Kq7QAdrio7roL4+CqsfjqwYj4tYgq0pJQ==", + "dev": true, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^1.0.1" + } + }, + "node_modules/html-entities": { + "version": "2.5.2", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ], + "license": "MIT" + }, + "node_modules/html-escape": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-escape/-/html-escape-1.0.2.tgz", + "integrity": "sha512-r4cqVc7QAX1/jpPsW9OJNsTTtFhcf+ZBqoA3rWOddMg/y+n6ElKfz+IGKbvV2RTeECDzyrQXa2rpo3IFFrANWg==", + "dev": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/http-proxy-agent/node_modules/debug": { + "version": "4.3.4", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, + "node_modules/http-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "dev": true, + "license": "MIT" + }, "node_modules/http-signature": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "dev": true, + "license": "MIT", "dependencies": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", @@ -1315,22 +2574,42 @@ } }, "node_modules/https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "version": "7.0.4", + "dev": true, + "license": "MIT", "dependencies": { - "agent-base": "6", + "agent-base": "^7.0.2", "debug": "4" }, "engines": { - "node": ">= 6" + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent/node_modules/debug": { + "version": "4.3.4", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, + "node_modules/https-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "dev": true, + "license": "MIT" + }, "node_modules/iconv-lite": { "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -1340,8 +2619,6 @@ }, "node_modules/ieee754": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "dev": true, "funding": [ { @@ -1356,13 +2633,28 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "BSD-3-Clause" + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, + "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -1370,31 +2662,69 @@ }, "node_modules/inherits": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "dev": true, + "license": "ISC" + }, + "node_modules/ip-address": { + "version": "9.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/ip-address/node_modules/jsbn": { + "version": "1.1.0", + "dev": true, + "license": "MIT" }, "node_modules/ip-regex": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "dev": true, + "license": "MIT" + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, "engines": { "node": ">=0.10.0" } }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, "dependencies": { "is-extglob": "^2.1.1" }, @@ -1402,10 +2732,22 @@ "node": ">=0.10.0" } }, + "node_modules/is-interactive": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, "engines": { "node": ">=0.12.0" } @@ -1413,32 +2755,41 @@ "node_modules/is-potential-custom-element-name": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true }, "node_modules/is-typedarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/is-unicode-supported": { + "version": "1.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/isstream": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/js-tokens": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "dev": true, + "license": "MIT" }, "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "4.1.0", + "dev": true, + "license": "MIT", "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" @@ -1446,15 +2797,13 @@ }, "node_modules/jsbn": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/jsdom": { "version": "15.2.1", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.2.1.tgz", - "integrity": "sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g==", "dev": true, + "license": "MIT", "dependencies": { "abab": "^2.0.0", "acorn": "^7.1.0", @@ -1497,9 +2846,8 @@ }, "node_modules/jsdom/node_modules/acorn": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.2.0.tgz", - "integrity": "sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -1509,21 +2857,18 @@ }, "node_modules/jsdom/node_modules/cssom": { "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/jsdom/node_modules/parse5": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", - "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/jsdom/node_modules/tough-cookie": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", - "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "ip-regex": "^2.1.0", "psl": "^1.1.28", @@ -1535,9 +2880,8 @@ }, "node_modules/jsdom/node_modules/whatwg-url": { "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", "dev": true, + "license": "MIT", "dependencies": { "lodash.sortby": "^4.7.0", "tr46": "^1.0.1", @@ -1546,9 +2890,8 @@ }, "node_modules/jsdom/node_modules/ws": { "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.3.0" }, @@ -1565,32 +2908,43 @@ } } }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "dev": true, + "license": "MIT" + }, "node_modules/json-schema": { "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha512-a3xHnILGMtk+hDOqNwHzF6e2fNbiMrXZvxKQiEv2MlgQP+pjIOzqAmKYD2mDpXYE/44M7g+n9p2bKkYWDUcXCQ==", "dev": true }, "node_modules/json-schema-traverse": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-stringify-safe": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true + "dev": true, + "license": "ISC" + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } }, "node_modules/jsprim": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", "dev": true, "engines": [ "node >=0.6.0" ], + "license": "MIT", "dependencies": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -1598,10 +2952,33 @@ "verror": "1.10.0" } }, + "node_modules/katex": { + "version": "0.16.9", + "dev": true, + "funding": [ + "https://opencollective.com/katex", + "https://github.com/sponsors/katex" + ], + "license": "MIT", + "dependencies": { + "commander": "^8.3.0" + }, + "bin": { + "katex": "cli.js" + } + }, + "node_modules/katex/node_modules/commander": { + "version": "8.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, "node_modules/levn": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "~1.1.2", "type-check": "~0.3.2" @@ -1610,67 +2987,145 @@ "node": ">= 0.8.0" } }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "dev": true, + "license": "MIT" + }, "node_modules/lodash": { "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true }, "node_modules/lodash.sortby": { "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "5.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^5.0.0", + "is-unicode-supported": "^1.1.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lru-cache": { + "version": "7.18.3", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/mathjax": { + "version": "3.2.2", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/mdn-data": { + "version": "2.0.14", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "dev": true, + "license": "MIT" }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, "engines": { "node": ">= 8" } }, + "node_modules/methods": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "braces": "^3.0.2", + "picomatch": "^2.3.1" }, "engines": { "node": ">=8.6" } }, + "node_modules/mime": { + "version": "1.6.0", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/mime-db": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", + "version": "1.52.0", + "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { - "version": "2.1.27", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", - "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "version": "2.1.35", + "dev": true, + "license": "MIT", "dependencies": { - "mime-db": "1.44.0" + "mime-db": "1.52.0" }, "engines": { "node": ">= 0.6" } }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/minimatch": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -1678,38 +3133,135 @@ "node": "*" } }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "node_modules/mitt": { + "version": "3.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "dev": true, + "license": "MIT" + }, + "node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/netmask": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/next-tick": { + "version": "1.1.0", + "dev": true, + "license": "ISC" + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-fetch": { + "version": "3.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } }, "node_modules/nwsapi": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==" + "dev": true, + "license": "MIT" }, "node_modules/oauth-sign": { "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "*" } }, + "node_modules/object-inspect": { + "version": "1.13.1", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, + "license": "ISC", "dependencies": { "wrappy": "1" } }, + "node_modules/onetime": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/optionator": { "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "license": "MIT", "dependencies": { "deep-is": "~0.1.3", "fast-levenshtein": "~2.0.6", @@ -1722,30 +3274,207 @@ "node": ">= 0.8.0" } }, + "node_modules/ora": { + "version": "6.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^5.0.0", + "cli-cursor": "^4.0.0", + "cli-spinners": "^2.6.1", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^1.1.0", + "log-symbols": "^5.1.0", + "stdin-discarder": "^0.1.0", + "strip-ansi": "^7.0.1", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pac-proxy-agent": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.2", + "pac-resolver": "^7.0.0", + "socks-proxy-agent": "^8.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-proxy-agent/node_modules/debug": { + "version": "4.3.4", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/pac-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/pac-resolver": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "degenerator": "^5.0.0", + "netmask": "^2.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pagedjs": { + "version": "0.4.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/polyfill": "^7.10.1", + "@babel/runtime": "^7.21.0", + "clear-cut": "^2.0.2", + "css-tree": "^1.1.3", + "event-emitter": "^0.3.5" + } + }, + "node_modules/pagedjs-cli": { + "version": "0.4.3", + "dev": true, + "license": "MIT", + "dependencies": { + "commander": "^11.0.0", + "express": "^4.18.2", + "html-entities": "^2.4.0", + "katex": "^0.16.8", + "lodash": "^4.17.21", + "mathjax": "^3.2.2", + "node-fetch": "^3.3.1", + "ora": "^6.3.1", + "pagedjs": "^0.4.3", + "pdf-lib": "1.17.1", + "puppeteer": "^20.9.0", + "replace-ext": "^2.0.0" + }, + "bin": { + "pagedjs-cli": "src/cli.js" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "dev": true, + "license": "(MIT AND Zlib)" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/parse5": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/parseurl": { + "version": "1.3.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } }, "node_modules/path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "dev": true, + "license": "MIT" + }, + "node_modules/path-type": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pdf-lib": { + "version": "1.17.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@pdf-lib/standard-fonts": "^1.0.0", + "@pdf-lib/upng": "^1.0.1", + "pako": "^1.0.11", + "tslib": "^1.11.1" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "dev": true, + "license": "MIT" + }, "node_modules/performance-now": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, "engines": { "node": ">=8.6" }, @@ -1755,58 +3484,197 @@ }, "node_modules/pn": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/prelude-ls": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true, "engines": { "node": ">= 0.8.0" } }, "node_modules/prex": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/prex/-/prex-0.4.7.tgz", - "integrity": "sha512-ulhl3iyjmAW/GroRQJN4CG+pC6KJ+W+deNRBkEShQwe16wLP9k92+x6RmLJuLiVSGkbxhnAqHpGdJJCh3bRpUQ==", + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/prex/-/prex-0.4.9.tgz", + "integrity": "sha512-pQCB9AH8MXQRBaelDkhnTkqY6GRiXt1xWlx2hBReZYZwVA0m7EQcnF/K55zr87cCADDHmdD+qq7G6a8Pu+BRFA==", + "deprecated": "This package has been deprecated in favor of several '@esfx/*' packages that replace it. Please see the README for more information", + "dev": true, "dependencies": { - "@esfx/cancelable": "^1.0.0-pre.13", - "@esfx/disposable": "^1.0.0-pre.13" + "@esfx/cancelable": "^1.0.0 || >=1.0.0-pre.13", + "@esfx/disposable": "^1.0.0 || >=1.0.0-pre.13" + } + }, + "node_modules/progress": { + "version": "2.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" } }, "node_modules/promise-debounce": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-debounce/-/promise-debounce-1.0.1.tgz", - "integrity": "sha1-btdvj3nQFE/b0BzBVYnOV/nXHng=" + "integrity": "sha512-jq3Crngf1DaaOXQIOUkPr7LsW4UsWyn0KW1MJ+yMn5njTJ+F1AuHmjjwJhod9HuoNSSMspSLS9PS3V7BrexwjQ==", + "dev": true + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-agent": { + "version": "6.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.0.0", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-agent/node_modules/debug": { + "version": "4.3.4", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/proxy-agent/node_modules/ms": { + "version": "2.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "dev": true, + "license": "MIT" }, "node_modules/psl": { "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + "dev": true, + "license": "MIT" + }, + "node_modules/pump": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } }, "node_modules/punycode": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, + "node_modules/puppeteer": { + "version": "20.9.0", + "dev": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@puppeteer/browsers": "1.4.6", + "cosmiconfig": "8.2.0", + "puppeteer-core": "20.9.0" + }, + "engines": { + "node": ">=16.3.0" + } + }, + "node_modules/puppeteer-core": { + "version": "20.9.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@puppeteer/browsers": "1.4.6", + "chromium-bidi": "0.4.16", + "cross-fetch": "4.0.0", + "debug": "4.3.4", + "devtools-protocol": "0.0.1147663", + "ws": "8.13.0" + }, + "engines": { + "node": ">=16.3.0" + }, + "peerDependencies": { + "typescript": ">= 4.7.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/puppeteer-core/node_modules/debug": { + "version": "4.3.4", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/puppeteer-core/node_modules/ms": { + "version": "2.1.2", + "dev": true, + "license": "MIT" + }, "node_modules/qs": { "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.6" } }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, "funding": [ { "type": "github", @@ -1822,11 +3690,37 @@ } ] }, - "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "node_modules/queue-tick": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/range-parser": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -1840,16 +3734,28 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", + "dev": true, "engines": { "node": ">=6" } }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "dev": true, + "license": "MIT" + }, + "node_modules/replace-ext": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, "node_modules/request": { "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", "dev": true, + "license": "Apache-2.0", "dependencies": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -1878,9 +3784,8 @@ }, "node_modules/request-promise-core": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz", - "integrity": "sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==", "dev": true, + "license": "ISC", "dependencies": { "lodash": "^4.17.15" }, @@ -1893,10 +3798,8 @@ }, "node_modules/request-promise-native": { "version": "1.0.8", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.8.tgz", - "integrity": "sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ==", - "deprecated": "request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142", "dev": true, + "license": "ISC", "dependencies": { "request-promise-core": "1.1.3", "stealthy-require": "^1.1.1", @@ -1909,10 +3812,48 @@ "request": "^2.34" } }, + "node_modules/require-directory": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/restore-cursor": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -1922,6 +3863,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, "funding": [ { "type": "github", @@ -1942,8 +3884,6 @@ }, "node_modules/safe-buffer": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true, "funding": [ { @@ -1958,18 +3898,18 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/safer-buffer": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "dev": true, + "license": "MIT" }, "node_modules/saxes": { "version": "3.1.11", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", - "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", "dev": true, + "license": "ISC", "dependencies": { "xmlchars": "^2.1.1" }, @@ -1977,25 +3917,164 @@ "node": ">=8" } }, + "node_modules/send": { + "version": "0.18.0", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/serve-static": { + "version": "1.15.0", + "dev": true, + "license": "MIT", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.2", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "dev": true, + "license": "ISC" + }, + "node_modules/side-channel": { + "version": "1.0.6", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "dev": true, + "license": "ISC" + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "socks": "^2.7.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/socks-proxy-agent/node_modules/debug": { + "version": "4.3.4", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socks-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "dev": true, + "license": "MIT" + }, "node_modules/source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "optional": true, + "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "version": "1.1.3", + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/sshpk": { "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", "dev": true, + "license": "MIT", "dependencies": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -2016,52 +4095,156 @@ "node": ">=0.10.0" } }, + "node_modules/statuses": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stdin-discarder": { + "version": "0.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "bl": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stdin-discarder/node_modules/bl": { + "version": "5.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^6.0.3", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/stdin-discarder/node_modules/buffer": { + "version": "6.0.3", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, "node_modules/stealthy-require": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", "dev": true, + "license": "ISC", "engines": { "node": ">=0.10.0" } }, + "node_modules/streamx": { + "version": "2.16.1", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-fifo": "^1.1.0", + "queue-tick": "^1.0.1" + }, + "optionalDependencies": { + "bare-events": "^2.2.0" + } + }, "node_modules/string_decoder": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" } }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/string-width": { + "version": "4.2.3", + "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { "node": ">=8" } }, - "node_modules/supports-color/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/string-width/node_modules/ansi-regex": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, "engines": { "node": ">=8" } }, + "node_modules/strip-ansi": { + "version": "7.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/symbol-tree": { "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" + "dev": true, + "license": "MIT" }, "node_modules/table-layout": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", + "dev": true, "dependencies": { "array-back": "^4.0.1", "deep-extend": "~0.6.0", @@ -2076,6 +4259,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true, "engines": { "node": ">=8" } @@ -2084,2091 +4268,457 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", "dev": true, - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tiny-json-http": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/tiny-json-http/-/tiny-json-http-7.2.0.tgz", - "integrity": "sha512-blMwK3w6R+9/ZCMAlrAw4/yOmym6SNaF8LNHqjVnugtDAWNK/+HxK9AgEy8ynagRniMIiWhUcVst16Qumf66QQ==", - "dev": true - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dependencies": { - "is-number": "^7.0.0" - }, "engines": { - "node": ">=8.0" + "node": ">=8" } }, - "node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true - }, - "node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/typical": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", - "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true, - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "node_modules/w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "dependencies": { - "browser-process-hrtime": "^1.0.0" - } - }, - "node_modules/w3c-xmlserializer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", - "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", - "dev": true, - "dependencies": { - "domexception": "^1.0.1", - "webidl-conversions": "^4.0.2", - "xml-name-validator": "^3.0.0" - } - }, - "node_modules/webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - }, - "node_modules/whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "dependencies": { - "iconv-lite": "0.4.24" - } - }, - "node_modules/whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, - "node_modules/whatwg-url": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-10.0.0.tgz", - "integrity": "sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==", - "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-url/node_modules/tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-url/node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "engines": { - "node": ">=12" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wordwrapjs": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", - "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", - "dependencies": { - "reduce-flatten": "^2.0.0", - "typical": "^5.2.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/wordwrapjs/node_modules/typical": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "node_modules/ws": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", - "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" - } - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==" - }, - "@babel/highlight": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", - "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@esfx/async-canceltoken": { - "version": "1.0.0-pre.30", - "resolved": "https://registry.npmjs.org/@esfx/async-canceltoken/-/async-canceltoken-1.0.0-pre.30.tgz", - "integrity": "sha512-4he0W+ZKH4OO4RvGfmATIibO5JzGLQqwm4Dp3X15bWnguDTmmOFt3Qt169Doij/gXxn2aPpZvxUaYIEebi8Xig==", - "requires": { - "@esfx/cancelable": "^1.0.0-pre.30", - "@esfx/collections-linkedlist": "^1.0.0-pre.24", - "@esfx/disposable": "^1.0.0-pre.30", - "@esfx/internal-guards": "^1.0.0-pre.23", - "@esfx/internal-tag": "^1.0.0-pre.19", - "tslib": "^2.1.0" - } - }, - "@esfx/cancelable": { - "version": "1.0.0-pre.30", - "resolved": "https://registry.npmjs.org/@esfx/cancelable/-/cancelable-1.0.0-pre.30.tgz", - "integrity": "sha512-fo0+/D3tEcSOHdZ8HiCR7qOKl5Tkk6Nw6QJNNXSQ0ejlpP3HU4S2i0rb/tjHQ1EkUcWZfB3g2jzfL0ioQSEgGg==", - "requires": { - "@esfx/disposable": "^1.0.0-pre.30", - "@esfx/internal-deprecate": "^1.0.0-pre.24", - "@esfx/internal-guards": "^1.0.0-pre.23", - "@esfx/internal-tag": "^1.0.0-pre.19" - } - }, - "@esfx/collection-core": { - "version": "1.0.0-pre.24", - "resolved": "https://registry.npmjs.org/@esfx/collection-core/-/collection-core-1.0.0-pre.24.tgz", - "integrity": "sha512-OIgMS91JmjSoRWD7u/DfnDzo8vDggeTeUPRi1p5WhyboY0+IwmetEqgeHZb8bpka/SsmtYX5qxqEjeqNXqh+pA==", - "requires": { - "@esfx/internal-deprecate": "^1.0.0-pre.24", - "@esfx/internal-guards": "^1.0.0-pre.23" - } - }, - "@esfx/collections-linkedlist": { - "version": "1.0.0-pre.24", - "resolved": "https://registry.npmjs.org/@esfx/collections-linkedlist/-/collections-linkedlist-1.0.0-pre.24.tgz", - "integrity": "sha512-Maya8jXH0xvzyfeSH88/j2b5gavO/mluslgIC2Ttdz8rh6+3o8/pVYriceH/Jinn4pgTEzDhO6Rn/aruZG0+Ug==", - "requires": { - "@esfx/collection-core": "^1.0.0-pre.24", - "@esfx/equatable": "^1.0.0-pre.19", - "@esfx/internal-guards": "^1.0.0-pre.23" - } - }, - "@esfx/disposable": { - "version": "1.0.0-pre.30", - "resolved": "https://registry.npmjs.org/@esfx/disposable/-/disposable-1.0.0-pre.30.tgz", - "integrity": "sha512-njBGIQO+HW+lMqqMjURC+MWn+55ufulgebPLXzlxbwVSz5hZkoCsv6n9sIBQbnvg/PYQmWK5Dk6gDSmFfihTUg==" - }, - "@esfx/equatable": { - "version": "1.0.0-pre.19", - "resolved": "https://registry.npmjs.org/@esfx/equatable/-/equatable-1.0.0-pre.19.tgz", - "integrity": "sha512-+f6Xm6GOigyGx7t0D0IyG9Z0AuYDhNWjwV49vs5uNG/+0VQAOSYjmnpSzTZRYcYwxW52DmWJWFYNY8bvCDD2ag==" - }, - "@esfx/internal-deprecate": { - "version": "1.0.0-pre.24", - "resolved": "https://registry.npmjs.org/@esfx/internal-deprecate/-/internal-deprecate-1.0.0-pre.24.tgz", - "integrity": "sha512-TSU5k04+nuVQdyfYhaVXxyskdiwYQHgwN20J3cbyRrm/YFi2dOoFSLFvkMNh7LNOPGWSOg6pfAm3kd23ISR3Ow==" - }, - "@esfx/internal-guards": { - "version": "1.0.0-pre.23", - "resolved": "https://registry.npmjs.org/@esfx/internal-guards/-/internal-guards-1.0.0-pre.23.tgz", - "integrity": "sha512-y2svuwRERA2eKF1T/Stq+O8kPjicFQcUTob5je3L6iloOHnOD0sX6aQLvheWmTXXS7hAnjlyMeSN/ec84BRyHg==", - "requires": { - "@esfx/type-model": "^1.0.0-pre.23" - } - }, - "@esfx/internal-tag": { - "version": "1.0.0-pre.19", - "resolved": "https://registry.npmjs.org/@esfx/internal-tag/-/internal-tag-1.0.0-pre.19.tgz", - "integrity": "sha512-/v1D5LfvBnbvHzL22Vh6yobrOTVCBhsW/l9M+/GRA51eqCN27yTmWGaYUSd1QXp2vxHwNr0sfckVoNtTzeaIqQ==" - }, - "@esfx/type-model": { - "version": "1.0.0-pre.23", - "resolved": "https://registry.npmjs.org/@esfx/type-model/-/type-model-1.0.0-pre.23.tgz", - "integrity": "sha512-jwcSY9pqEmGoDNhfT+0LUmSTyk6zXF/pbgKb7KU7mTfCrWfVCT/ve61cD1CreerDRBSat/s55se0lJXwDSjhuA==" - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==" - }, - "abab": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==" - }, - "acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==" - }, - "acorn-globals": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", - "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", - "dev": true, - "requires": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" - }, - "dependencies": { - "acorn": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", - "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", - "dev": true - } - } - }, - "acorn-walk": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", - "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", - "dev": true - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "requires": { - "debug": "4" - } - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - }, - "dependencies": { - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - } - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "array-back": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", - "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==" - }, - "array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", - "dev": true - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dev": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true - }, - "aws4": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", - "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "requires": { - "fill-range": "^7.0.1" - } - }, - "browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "command-line-args": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", - "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", - "requires": { - "array-back": "^3.1.0", - "find-replace": "^3.0.0", - "lodash.camelcase": "^4.3.0", - "typical": "^4.0.0" - } - }, - "command-line-usage": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.1.tgz", - "integrity": "sha512-F59pEuAR9o1SF/bD0dQBDluhpT4jJQNWUHEuVBqpDmCUo6gPjCi+m9fCWnWZVR/oG6cMTUms4h+3NPl74wGXvA==", - "requires": { - "array-back": "^4.0.1", - "chalk": "^2.4.2", - "table-layout": "^1.0.1", - "typical": "^5.2.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "array-back": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", - "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==" - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - }, - "typical": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==" - } - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "cssom": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", - "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==" - }, - "cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "requires": { - "cssom": "~0.3.6" - }, - "dependencies": { - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" - } - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", - "dev": true, - "requires": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" - }, - "dependencies": { - "whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - } - } - }, - "debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "requires": { - "ms": "2.1.2" - } - }, - "decimal.js": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", - "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==" - }, - "dedent-js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dedent-js/-/dedent-js-1.0.1.tgz", - "integrity": "sha1-vuX7fJ5yfYXf+iRZDRDsGrElUwU=" - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, - "domexception": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", - "dev": true, - "requires": { - "webidl-conversions": "^4.0.2" - } - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dev": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "ecmarkdown": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/ecmarkdown/-/ecmarkdown-8.1.0.tgz", - "integrity": "sha512-dx6cM6RFjzAXkWr2KQRikED4gy70NFQ0vTI4XUQM/LWcjUYRJUbGdd7nd++trXi5az1JSe49TeeCIVMKDXOtcQ==", - "requires": { - "escape-html": "^1.0.1" - } - }, - "ecmarkup": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/ecmarkup/-/ecmarkup-18.1.3.tgz", - "integrity": "sha512-grvHr/9NlFnOJQ9rL2+AlD1Q/IGT4siTdl1nsSi6gZVrOxIma6sBR9WStlr9s2TxtKXx7ouM18HsZ+RF9OJlHA==", - "requires": { - "chalk": "^4.1.2", - "command-line-args": "^5.2.0", - "command-line-usage": "^6.1.1", - "dedent-js": "^1.0.1", - "ecmarkdown": "^8.1.0", - "eslint-formatter-codeframe": "^7.32.1", - "fast-glob": "^3.2.7", - "grammarkdown": "^3.2.0", - "highlight.js": "11.0.1", - "html-escape": "^1.0.2", - "js-yaml": "^3.13.1", - "jsdom": "^19.0.0", - "nwsapi": "2.2.0", - "parse5": "^6.0.1", - "prex": "^0.4.7", - "promise-debounce": "^1.0.1" - }, - "dependencies": { - "acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "requires": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - }, - "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" - } - } - }, - "acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==" - }, - "data-urls": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.1.tgz", - "integrity": "sha512-Ds554NeT5Gennfoo9KN50Vh6tpgtvYEwraYjejXnyTpu1C7oXKxdFk75REooENHE8ndTVOJuv+BEs4/J/xcozw==", - "requires": { - "abab": "^2.0.3", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^10.0.0" - } - }, - "domexception": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", - "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", - "requires": { - "webidl-conversions": "^7.0.0" - } - }, - "escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", - "requires": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - }, - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", - "requires": { - "whatwg-encoding": "^2.0.0" - } - }, - "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - }, - "jsdom": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-19.0.0.tgz", - "integrity": "sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A==", - "requires": { - "abab": "^2.0.5", - "acorn": "^8.5.0", - "acorn-globals": "^6.0.0", - "cssom": "^0.5.0", - "cssstyle": "^2.3.0", - "data-urls": "^3.0.1", - "decimal.js": "^10.3.1", - "domexception": "^4.0.0", - "escodegen": "^2.0.0", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^3.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^10.0.0", - "ws": "^8.2.3", - "xml-name-validator": "^4.0.0" - } - }, - "saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "requires": { - "xmlchars": "^2.2.0" - } - }, - "tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", - "requires": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.1.2" - } - }, - "w3c-xmlserializer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz", - "integrity": "sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==", - "requires": { - "xml-name-validator": "^4.0.0" - } - }, - "webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==" - }, - "whatwg-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", - "requires": { - "iconv-lite": "0.6.3" - } - }, - "whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==" - }, - "xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==" - } - } - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - }, - "escodegen": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.1.tgz", - "integrity": "sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ==", - "dev": true, - "requires": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - } - }, - "eslint-formatter-codeframe": { - "version": "7.32.1", - "resolved": "https://registry.npmjs.org/eslint-formatter-codeframe/-/eslint-formatter-codeframe-7.32.1.tgz", - "integrity": "sha512-DK/3Q3+zVKq/7PdSYiCxPrsDF8H/TRMK5n8Hziwr4IMkMy+XiKSwbpj25AdajS63I/B61Snetq4uVvX9fOLyAg==", - "requires": { - "@babel/code-frame": "7.12.11", - "chalk": "^4.0.0" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", - "dev": true - }, - "fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" - }, - "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "requires": { - "reusify": "^1.0.4" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-replace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", - "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", - "requires": { - "array-back": "^3.0.1" - } - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "requires": { - "is-glob": "^4.0.1" - } - }, - "grammarkdown": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/grammarkdown/-/grammarkdown-3.2.0.tgz", - "integrity": "sha512-pEVUvG2Kxv/PwM3Dm3kFEU1/GHRkNcFWmk/zkqN/y0uoQtPaZ+5VaBacMQAaFOIL9WGYjHXtqpkT5YRvySsISQ==", - "requires": { - "@esfx/async-canceltoken": "^1.0.0-pre.13", - "@esfx/cancelable": "^1.0.0-pre.13" - } - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true - }, - "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", - "dev": true, - "requires": { - "ajv": "^6.5.5", - "har-schema": "^2.0.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "highlight.js": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.0.1.tgz", - "integrity": "sha512-EqYpWyTF2s8nMfttfBA2yLKPNoZCO33pLS4MnbXQ4hECf1TKujCt1Kq7QAdrio7roL4+CqsfjqwYj4tYgq0pJQ==" - }, - "html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", - "dev": true, - "requires": { - "whatwg-encoding": "^1.0.1" - } - }, - "html-escape": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-escape/-/html-escape-1.0.2.tgz", - "integrity": "sha1-X6eHwFaAkP4zLtWzz0qk9kZCGnQ=" - }, - "http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "requires": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - }, - "is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true - }, - "jsdom": { - "version": "15.2.1", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.2.1.tgz", - "integrity": "sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g==", - "dev": true, - "requires": { - "abab": "^2.0.0", - "acorn": "^7.1.0", - "acorn-globals": "^4.3.2", - "array-equal": "^1.0.0", - "cssom": "^0.4.1", - "cssstyle": "^2.0.0", - "data-urls": "^1.1.0", - "domexception": "^1.0.1", - "escodegen": "^1.11.1", - "html-encoding-sniffer": "^1.0.2", - "nwsapi": "^2.2.0", - "parse5": "5.1.0", - "pn": "^1.1.0", - "request": "^2.88.0", - "request-promise-native": "^1.0.7", - "saxes": "^3.1.9", - "symbol-tree": "^3.2.2", - "tough-cookie": "^3.0.1", - "w3c-hr-time": "^1.0.1", - "w3c-xmlserializer": "^1.1.2", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^7.0.0", - "ws": "^7.0.0", - "xml-name-validator": "^3.0.0" - }, - "dependencies": { - "acorn": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.2.0.tgz", - "integrity": "sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ==", - "dev": true - }, - "cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true - }, - "parse5": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", - "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", - "dev": true - }, - "tough-cookie": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", - "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", - "dev": true, - "requires": { - "ip-regex": "^2.1.0", - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "dev": true, - "requires": {} - } - } - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha512-a3xHnILGMtk+hDOqNwHzF6e2fNbiMrXZvxKQiEv2MlgQP+pjIOzqAmKYD2mDpXYE/44M7g+n9p2bKkYWDUcXCQ==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" - }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" - }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, - "mime-db": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" - }, - "mime-types": { - "version": "2.1.27", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", - "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", - "requires": { - "mime-db": "1.44.0" - } - }, - "minimatch": { + "node_modules/tar-fs": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==" - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, - "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==" - }, - "pn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", - "dev": true - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" - }, - "prex": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/prex/-/prex-0.4.7.tgz", - "integrity": "sha512-ulhl3iyjmAW/GroRQJN4CG+pC6KJ+W+deNRBkEShQwe16wLP9k92+x6RmLJuLiVSGkbxhnAqHpGdJJCh3bRpUQ==", - "requires": { - "@esfx/cancelable": "^1.0.0-pre.13", - "@esfx/disposable": "^1.0.0-pre.13" - } - }, - "promise-debounce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-debounce/-/promise-debounce-1.0.1.tgz", - "integrity": "sha1-btdvj3nQFE/b0BzBVYnOV/nXHng=" - }, - "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "reduce-flatten": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", - "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==" - }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - } - }, - "request-promise-core": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz", - "integrity": "sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==", - "dev": true, - "requires": { - "lodash": "^4.17.15" - } - }, - "request-promise-native": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.8.tgz", - "integrity": "sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ==", - "dev": true, - "requires": { - "request-promise-core": "1.1.3", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - } - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "saxes": { - "version": "3.1.11", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", - "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", - "dev": true, - "requires": { - "xmlchars": "^2.1.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "optional": true - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, - "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "dev": true, - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", - "dev": true - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - }, + "dev": true, + "license": "MIT", "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - } + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^3.1.5" } }, - "symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" - }, - "table-layout": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", - "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", - "requires": { - "array-back": "^4.0.1", - "deep-extend": "~0.6.0", - "typical": "^5.2.0", - "wordwrapjs": "^4.0.0" - }, + "node_modules/tar-fs/node_modules/tar-stream": { + "version": "3.1.7", + "dev": true, + "license": "MIT", "dependencies": { - "array-back": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", - "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==" - }, - "typical": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==" - } + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" } }, - "tar-stream": { + "node_modules/tar-stream": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", "fs-constants": "^1.0.0", "inherits": "^2.0.3", "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" } }, - "tiny-json-http": { + "node_modules/through": { + "version": "2.3.8", + "dev": true, + "license": "MIT" + }, + "node_modules/tiny-json-http": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/tiny-json-http/-/tiny-json-http-7.2.0.tgz", - "integrity": "sha512-blMwK3w6R+9/ZCMAlrAw4/yOmym6SNaF8LNHqjVnugtDAWNK/+HxK9AgEy8ynagRniMIiWhUcVst16Qumf66QQ==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, - "to-regex-range": { + "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "requires": { + "dev": true, + "dependencies": { "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6" } }, - "tough-cookie": { + "node_modules/tough-cookie": { "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", "dev": true, - "requires": { + "license": "BSD-3-Clause", + "dependencies": { "psl": "^1.1.28", "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" } }, - "tr46": { + "node_modules/tr46": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "punycode": "^2.1.0" } }, - "tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + "node_modules/tslib": { + "version": "1.14.1", + "dev": true, + "license": "0BSD" }, - "tunnel-agent": { + "node_modules/tunnel-agent": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "dev": true, - "requires": { + "license": "Apache-2.0", + "dependencies": { "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" } }, - "tweetnacl": { + "node_modules/tweetnacl": { "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true + "dev": true, + "license": "Unlicense" }, - "type-check": { + "node_modules/type": { + "version": "2.7.2", + "dev": true, + "license": "ISC" + }, + "node_modules/type-check": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "requires": { + "dev": true, + "license": "MIT", + "dependencies": { "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" } }, - "typical": { + "node_modules/type-is": { + "version": "1.6.18", + "dev": true, + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typical": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", - "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==" + "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + "node_modules/unbzip2-stream": { + "version": "1.4.3", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/universalify": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } }, - "uri-js": { + "node_modules/uri-js": { "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", "dev": true, - "requires": { + "license": "BSD-2-Clause", + "dependencies": { "punycode": "^2.1.0" } }, - "util-deprecate": { + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } }, - "uuid": { + "node_modules/uuid": { "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true + "dev": true, + "license": "MIT", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } }, - "verror": { + "node_modules/verror": { "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "dev": true, - "requires": { + "engines": [ + "node >=0.6.0" + ], + "license": "MIT", + "dependencies": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", "extsprintf": "^1.2.0" } }, - "w3c-hr-time": { + "node_modules/w3c-hr-time": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "requires": { + "dev": true, + "license": "MIT", + "dependencies": { "browser-process-hrtime": "^1.0.0" } }, - "w3c-xmlserializer": { + "node_modules/w3c-xmlserializer": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", - "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "domexception": "^1.0.1", "webidl-conversions": "^4.0.2", "xml-name-validator": "^3.0.0" } }, - "webidl-conversions": { + "node_modules/wcwidth": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/web-streams-polyfill": { + "version": "3.3.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/webidl-conversions": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, - "whatwg-encoding": { + "node_modules/whatwg-encoding": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "iconv-lite": "0.4.24" } }, - "whatwg-mimetype": { + "node_modules/whatwg-mimetype": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true + "dev": true, + "license": "MIT" }, - "whatwg-url": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-10.0.0.tgz", - "integrity": "sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==", - "requires": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "dev": true, + "license": "MIT", "dependencies": { - "tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", - "requires": { - "punycode": "^2.1.1" - } - }, - "webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==" - } + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } }, - "word-wrap": { + "node_modules/whatwg-url/node_modules/tr46": { + "version": "0.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/whatwg-url/node_modules/webidl-conversions": { + "version": "3.0.1", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/word-wrap": { "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } }, - "wordwrapjs": { + "node_modules/wordwrapjs": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", - "requires": { + "dev": true, + "dependencies": { "reduce-flatten": "^2.0.0", "typical": "^5.2.0" }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/wordwrapjs/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "dev": true, + "license": "MIT", "dependencies": { - "typical": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==" - } + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "wrappy": { + "node_modules/wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "dev": true, + "license": "ISC" }, - "ws": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", - "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", - "requires": {} + "node_modules/ws": { + "version": "8.13.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } }, - "xml-name-validator": { + "node_modules/xml-name-validator": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, - "xmlchars": { + "node_modules/xmlchars": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + "dev": true, + "license": "MIT" + }, + "node_modules/y18n": { + "version": "5.0.8", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "17.7.1", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } } } } diff --git a/package.json b/package.json index 5b4aa5d191..99a69bd79c 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,8 @@ "prebuild-only": "npm run clean && mkdir out && cp -R img out", "build-only": "ecmarkup --verbose spec.html --multipage out", "build": "npm run build-head", - "build-for-pdf": "npm run build-head -- --old-toc", + "build-for-pdf": "ecmarkup --verbose spec.html --old-toc --assets external out/index.html", + "pdf": "npm run build-for-pdf && pagedjs-cli --page-size a4 out/index.html -o out/index.pdf", "prebuild-snapshot": "npm run clean", "build-snapshot": "npm run build-head && node scripts/insert_snapshot_warning.js", "clean": "rm -rf out", @@ -23,11 +24,13 @@ "license": "SEE LICENSE IN https://tc39.es/ecma262/#sec-copyright-and-software-license", "homepage": "https://tc39.es/ecma262/", "dependencies": { - "ecmarkup": "^18.1.3" }, "devDependencies": { + "ecmarkup": "^18.3.1", "glob": "^7.1.6", "jsdom": "^15.0.0", + "pagedjs": "^0.4.3", + "pagedjs-cli": "^0.4.3", "tar-stream": "^2.2.0", "tiny-json-http": "^7.1.2" } diff --git a/spec.html b/spec.html index 0f9b7ab32a..a580ad3d24 100644 --- a/spec.html +++ b/spec.html @@ -3,27 +3,11 @@