diff --git a/README.md b/README.md
index 0505e41..3176db5 100644
--- a/README.md
+++ b/README.md
@@ -1,129 +1,126 @@
-# `Map.prototype.emplace`
+# Proposal Upsert
-ECMAScript proposal and reference implementation for `Map.prototype.emplace`.
+ECMAScript proposal and reference implementation for `Map.prototype.getOrInsert` and `Map.prototype.getOrInsertComputed`.
-**Author:** Brad Farias (GoDaddy)
+**Authors:** Daniel Minor (Mozilla) Lauritz Thoresen Angeltveit (Bergen) Jonas Haukenes (Bergen) Sune Lianes (Bergen) Vetle Larsen (Bergen) Mathias Hop Ness (Bergen)
-**Champion:** Erica Pramer (GoDaddy)
+**Champion:** Daniel Minor (Mozilla)
+
+**Original Author:** Brad Farias (GoDaddy)
+
+**Former Champion:** Erica Pramer (GoDaddy)
**Stage:** 2
## Motivation
-Adding and updating values of a Map are tasks that developers often perform
-in conjunction. There are currently no `Map` prototype methods for either of
-those two things, let alone a method that does both. The workarounds involve
-multiple lookups and developer inconvenience while avoiding encouraging code
-that is surprising or is potentially error prone.
+A common problem when using a `Map` is how to handle doing an update when
+you're not sure if the key already exists in the `Map`. This can be handled
+by first checking if the key is present, and then inserting or updating
+depending upon the result, but this is both inconvenient for the developer,
+and less than optimal, because it requires multiple lookups in the `Map`
+that could otherwise be handled in a single call.
-## Solution: `emplace`
+## Solution: `getOrInsert`
-We propose the addition of a method that will add a value to a map if the map
-does not already have something at `key`, and will also update an existing
-value at `key`.
-It’s worthwhile having this API for the average case to cut down on lookups.
-It is also worthwhile for developer convenience and expression of intent.
-
-## Examples & Proposed API
+We propose the addition of a method that will return the value associated
+with `key` if it is already present in the dictionary, and otherwise insert
+the `key` with the provided default value, or the result of calling a provided
+callback function, and then return that value.
-The following examples would all be optimized and made simpler by `emplace`.
-The proposed API allows a developer to do one lookup and update in place:
+Earlier versions of this proposal had an `getOrInsert` method that provided two callbacks,
+one for `insert` and the other for `update`, however the current champion thinks
+that the get / insert if necessary is a sufficiently common usecase that it makes
+sense to focus on it, rather than trying to create an API with maximum flexibility.
+It also strongly follows precedent from other languages, in particular Python.
-```js
-// given counts is a Map of object => id
-counts.emplace(key, {
- insert(key, map) {
- return 0;
- },
- update(existing, key, map) {
- return existing + 1;
- }
-});
-```
+## Examples & Proposed API
-### Normalization of values during insertion
+### Handling default values
-Currently you would need to do 3 lookups:
+Using `getOrInsert` simplifies handling default values because it will not overwrite
+an existing value.
```js
-if (!map.has(key)) {
- map.set(key, value);
+// Currently
+let prefs = new getUserPrefs();
+if (!prefs.has("useDarkmode")) {
+ prefs.set("useDarkmode", true); // default to true
}
-map.get(key).doThing();
+
+// Using getOrInsert
+let prefs = new getUserPrefs();
+prefs.getOrInsert("useDarkmode", true); // default to true
```
-With this proposal:
+By using `getOrInsert`, default values can be applied at different times, with the
+assurance that later defaults will not overwrite an existing value. For example,
+in a situation where there are user preferences, operating system preferences,
+and application defaults, we can use getOrInsert to apply the user preferences,
+and then the operating system preferences, and then the application defaults,
+without worrying about overwriting the user's preferences.
-```js
-map.emplace(key, {
- insert: () => value
-}).doThing();
-```
+### Grouping data incrementally
-### Either update or insert for a specific key
-You might get new data and want to calculate some aggregate if the key exists,
-but just insert if it's the first value at that key.
+A typical usecase is grouping data based upon key as new values become available.
+This is simplified by being able to specify a default value rather than having to
+check for whether the key is already present in the `Map` before trying to update.
```js
-// two lookups
-old = map.get(key);
-if (!old) {
- map.set(key, value);
-} else {
- map.set(key, updated);
+// Currently
+let grouped = new Map();
+for (let [key, ...values] of data) {
+ if (grouped.has(key)) {
+ grouped.get(key).push(...values);
+ } else {
+ grouped.set(key, ...values);
+ }
}
-```
-
-With this proposal:
-```js
-map.emplace(key, {
- update: () => updated,
- insert: () => value
-});
+// Using getOrInsert
+let grouped = new Map();
+for (let [key, ...values] of data) {
+ grouped.getOrInsert(key, []).push(...values);
+}
```
-### Just insert if missing
+It's true that a common usecase for this pattern is already covered by
+`Map.groupBy`. However, that method requires that all data be available
+prior to building the groups; using `getOrInsert` would allow the Map to be
+built and used incrementally. It also provides flexibility to work with
+data other than objects, such as the array example above.
-You might omit an update if you're handling data that doesn't change, but
-can still be appended.
+### Maintaining a counter
+
+Another common use case is maintaining a counter associated with a
+particular key. Using `getOrInsert` makes this more concise, and is the
+kind of access and then mutate pattern that is easily optimizable
+by engines.
```js
-// two lookups
-if (!map1.has(key)) {
- map1.set(key, value);
+// Currently
+let counts = new Map();
+if (counts.has(key)) {
+ counts.set(key, counts.get(key) + 1);
+} else {
+ counts.set(key, 1);
}
-```
-
-With this proposal:
-```js
-map.emplace(key, {
- insert: () => value
-});
+// Using getOrInsert
+let counts = new Map();
+counts.set(key, m.getOrInsert(key, 0) + 1);
```
-### Just update if present
+### Computing a default value
-You might want to omit an insert if you want to perform a function on
-all existing values in a Map (ex. normalization).
+For some usecases, determining the default value is potentially a costly operation that
+would be best avoided if it will not be used. In this case, we can use `getOrInsertComputed`.
-```js
-// three lookups
-if (map.has(key)) {
- old = map.get(key);
- updated = old.doThing();
- map.set(key, updated);
-}
```
-
-With this proposal:
-
-```js
-if (map.has(key)) {
- map.emplace(key, {
- update: (old) => old.doThing()
- });
+// Using getOrInsertComputed
+let grouped = new Map();
+for (let [key, ...values] of data) {
+ grouped.getOrInsertComputed(key, () => []).push(...values);
}
```
@@ -142,7 +139,7 @@ the insertion value with a mapping function
* [`emplace`](https://en.cppreference.com/w/cpp/container/map/emplace) inserts if missing
* [`map[] assignment opts`](https://en.cppreference.com/w/cpp/container/map/operator_at) inserts if missing
at `key` but also returns a value if it exists at `key`
-* [`insert_or_assign`](https://en.cppreference.com/w/cpp/container/map/insert_or_assign) inserts if missing. updates existing value by replacing with a
+* [`insert_or_assign`](https://en.cppreference.com/w/cpp/container/map/insert_or_assign) inserts if missing. updates existing value by replacing with a
specific new one, not by applying a function to the existing value
**Rust**
@@ -153,280 +150,14 @@ a mapping function
**Python**
-* [`setDefault`](https://docs.python.org/3/library/stdtypes.html#dict.setdefault)
+* [`setdefault`](https://docs.python.org/3/library/stdtypes.html#dict.setdefault)
Performs a `get` and an `insert`
+* [`defaultdict`](https://docs.python.org/3/library/collections.html#defaultdict-objects)
+A subclass of `dict` that takes a callback function that is used to construct missing values on `get`.
**Elixir**
-* [`Map.update/4`](https://hexdocs.pm/elixir/Map.html#update/4) Updates the item with given function if key exists, otherwise inserts given initial value
-
-## FAQ
-
-### Is the goal to simplify the API or to optimize it?
-
- - This proposal seeks to simplify expressing intent for programmers, and
- should ease optimization without complex analysis. For engines without
- complex analysis like IOT VMs this should see wins by avoiding multiple
- entry lookups, at potential call stack cost.
-
-### Why not use existing JS engines that optimize by coalescing the lookup and mutation?
-
- - This does not cover all patterns (of which there are many), things such as
- ordering can cause the optimization to fail.
-
- ```mjs
- if (!x.has(a)) x.set(a, []);
- if (!y.has(b)) y.set(b, []);
- x.get(a).push(1);
- y.get(b).push(2);
- ```
-
-### Why error if the key doesn't exist and no `insert` handler is provided.
-
- - This keeps the return type constrained to the union of insert and update without adding `undefined`. This alleviates a variety of static checker errors from code such as the following.
-
- ```mjs
- // map is a Map of object values
- let x;
- if (map.has(key)) {
- x = map.get(key); // can return undefined
- } else {
- x = {};
- map.set(key, x);
- }
- // x's type is `undefined | object`
- ```
-
- The proposal could guarantee that the type does not include `undefined`:
-
- ```mjs
- // map is a Map of object values
- let x = map.emplace(key, {
- insert: () => { return {}; }
- });
- // x's type is `object`
- ```
-
-### Why not have a single function that has a boolean if performing an update and the potentially existing value?
-
- - By naming the handlers, you can increase readability and reduce overall boilerplate. Additionally, generally there are not common workflows that have code paths that cover both updating and insertion. See the following which only seeks to insert a value if none exists:
-
- ```mjs
- x = map.emplace(key, (updating, value) => updating ? value : []);
- ```
-
- The proposal allows a handler to avoid the boilerplate condition and focus only on the relevant workflows:
-
- ```mjs
- x = map.emplace(key, {
- insert: () => []
- });
- ```
-
-### Why not have a single function that inserts the value if no such key is mapped?
-
- - By only having a single function that inserts a variety of workflows become
- less clear. In particular, by only having insert, a usage of a default value must
- be inserted with an anti-update operation already applied.
-
- ```mjs
- // have to set the default value to -1, not 0
- const n = counts.emplace(key, () => -1);
- // have to perform an additional set afterwards
- counts.set(key, n + 1);
- ```
-
- The proposal allows a handler to avoid the odd default value and avoid the
- extra `.set`. This does still require coding logic for both, but keeps the
- intent more readable and localized.
-
- ```mjs
- counts.emplace(key, {
- insert: () => 0,
- update: (v) => v + 1
- });
- ```
-
- - This can also lead to insertion of values that are incomplete/invalid regarding
- the intended type of the Map:
-
-
- ```mjs
- updateNameOf(key) {
- // contacts only has objects which must have a string value
- const contact = contacts.insert(key, () => ({name:null}));
- // inserted and can be assured of same reference on .get
- contact.name = getName();
- // if getName throws, contact is incomplete/invalid
- // .name remains null
- }
- ```
-
- This can be rewritten to be less error prone by moving `getName` above
-
- ```mjs
- updateNameOf(key) {
- const name = getName();
- const contact = contacts.insert(key, () => ({name:null}));
- contact.name = name;
- }
- ```
-
- This code is less error prone (unless contact.name fails assignment for
- example), but it still has an invalid value being inserted into the map.
-
- This can again be rewritten to be less constraint breaking by avoiding
- `insert()` entirely.
-
- ```mjs
- updateNameOf(key) {
- const name = getName();
- const existing = contacts.get(key) ?? {name:null};
- contact.name = name;
- contacts.set(key);
- }
- ```
-
- This design does avoid ever inserting the invalid value into the map, but is
- a bit confusing to read. This proposal by combining update and insert can be
- a little clearer:
-
- ```mjs
- updateNameOf(key, name) {
- const name = getName();
- contacts.emplace(key, {
- insert: () => ({name}),
- update: (contact) => {
- contact.name = name;
- return contact;
- }
- });
- }
- ```
-
- by having both operations co-located it would feel odd to try and `getName`
- after `.emplace` and no invalid value is inserted into the map.
-
-### Why not have a single function that updates the value if no if the key is mapped?
-
- - By only having a single function that updates a variety of workflows
- become less clear. In particular in order to guarantee that the result type
- is not a union with `undefined` it should error if the key is not mapped.
-
- ```mjs
- let n;
- try {
- n = counts.emplace(key, (existing) => existing + 1);
- } catch (e) {
- // this is a fragile detection and quite hard to determine it was
- // counts.emplace that caused an error, and not something internal to
- // the update callback
- if (e instanceof MissingEntryError) {
- counts.set(key, n = 0);
- }
- }
- if (n > RETRIES) {
- // ...
- }
- ```
-
- A alteration to return a boolean to see if an action is taken requires
- boilerplate and reduces the utility of the return value:
-
- ```mjs
- let updated = counts.emplace(key, (existing) => existing + 1);
- if (!updated) {
- counts.set(key, 0);
- }
- let n = counts.get(key);
- if (n > RETRIES) {
- // ...
- }
- ```
-
- The proposal allows a handler to avoid the odd default value and avoid the
- extra `.set`.
-
- ```mjs
- let n = counts.emplace(key, {
- insert: () => 0,
- update: (v) => v + 1
- });
- if (n > RETRIES) {
- // ...
- }
- ```
-
-### Why not have an API that exposes an Entry to collection types?
-
- - An Entry API is not prevented by this proposal. Explicit thought about
- re-entrancy was taken into consideration and was designed not to conflict with
- such an API. Desires for such an API should be done in a separate proposal.
- - An Entry API has much stricter implications on how implementations must
- store the backing data for a collection due to creating persistent references.
- - An Entry API is extremely complex regarding shared mutability and should be
- considered to be an extreme increase in scope to the goals of this proposal.
- See complexity such as the following about needing to think of an design an
- entire lifecycle and sharing scheme for multiple entry references:
-
- ```mjs
- let entry1 = map.mutableEntry(key);
- let entry2 = map.mutableEntry(key);
- entry2.remove();
- entry1.insertIfMissing(0);
- ```
-
-### Why use functions instead of values for the parameters?
-
- - You may want to apply a factory function when inserting to avoid costs of
- potentially heavy allocation, or the key may be determined at insertion time.
-
- ```mjs
- // an example of when eager allocation of the value
- // is undesirable
- const sharedRequests = new Map();
- function request(url) {
- return sharedRequests.emplace(url, {
- insert: () => {
- return fetch(url).then(() => {
- sharedRequests.delete(url);
- });
- }
- });
- }
- ```
-
- - When updating, we will be able to perform a function on the existing value
- instead of just replacing the value. The action may also cause mutation or
- side-effects, which would want to be avoided if not updating.
-
- ```mjs
- const eventCounts = new Map();
- obj.onevent(
- (eventName) => {
- // this API allows working with value type and primitive values
- eventCounts.emplace(eventName, {
- update: (n) => n + 1,
- insert: () => 1
- });
- }
- );
- ```
-
- This is important as primitives like [BigInt], [Records, and Tuples](Records and Tuples), etc. are added to the language. This API should continue to be able to handle and work with such values as they are added.
-
-### Why are we calling this `emplace`?
-
- - `updateOrInsert` and `insertOrUpdate` seem too wordy.
- - in the case that only an `insert` operation is provided it may do neither update nor insert.
- - `upsert` was seen as too unique a term and the ordering was problematic as there was a desire to focus on insertion.
- - ~~It is a combination of "update" & "insert" that is already used in other programming situations and many SQL variants use that exact term.~~
- - `emplace` matches a naming precedent from C++.
-
-### What happens during re-entrancy?
-
- - Other methods like Array methods while iterating using a higher order function do not re-iterate if mutated in a re-entrant manner. This method will modify the underlying storage cell that contains the existing value and any mutation of the map will act on new storage cells if that cell is removed from the map. This method will not perform a second lookup if the storage cell in the collection for the key is replaced with a new one.
- - See [issue #9] for more.
+* [`Map.update/4`](https://hexdocs.pm/elixir/Map.html#update/4) Updates the item with given function if key exists, otherwise inserts given initial value
## Specification
@@ -435,8 +166,22 @@ Performs a `get` and an `insert`
## Polyfill
-A polyfill is available in the [core-js](https://github.com/zloirock/core-js) library. You can find it in the [ECMAScript proposals section](https://github.com/zloirock/core-js#mapupsert).
+The proposal is trivially polyfillable:
-[BigInt]: https://tc39.es/ecma262/#sec-terms-and-definitions-bigint-value
-[Records and Tuples]: https://github.com/tc39/proposal-record-tuple
-[issue #9]: https://github.com/tc39/proposal-upsert/issues/9#issuecomment-552490289
+```js
+Map.prototype.getOrInsert = function (key, defaultValue) {
+ if (this.has(key)) {
+ return this.get(key);
+ }
+ this.set(key, defaultValue);
+ return this.get(key);
+};
+
+Map.prototype.getOrInsertComputed = function (key, callbackFunction) {
+ if (this.has(key)) {
+ return this.get(key);
+ }
+ this.set(key, callbackFunction());
+ return this.get(key);
+};
+```
diff --git a/index.html b/index.html
index 68d688f..49e4fd8 100644
--- a/index.html
+++ b/index.html
@@ -1,10 +1,95 @@
-
-
+
+
-Map.prototype.emplace Stage 2 Draft / July 20, 2020 Map.prototype.emplace
+@page :first {
+ @top-center {
+ content: none;
+ }
+}
+
+:root {
+ --page-number-style: decimal;
+}
+
+#toc {
+ page: toc;
+}
+@page toc {
+ --page-number-style: lower-roman;
+}
+emu-intro {
+ page: intro;
+}
+@page intro {
+ --page-number-style: lower-roman;
+}
+
+#toc {
+ counter-reset: page 1;
+}
+#spec-container > emu-clause:first-of-type {
+ counter-reset: page 1;
+}
+
+@page :left {
+ @bottom-left {
+ content: counter(page, var(--page-number-style));
+ }
+}
+@page :right {
+ @bottom-right {
+ content: counter(page, var(--page-number-style));
+ }
+}
+
+@page :first {
+ @bottom-left {
+ content: '';
+ }
+ @bottom-right {
+ content: '';
+ }
+}
+
+}
+
+ Toggle shortcuts help ?
+ Toggle "can call user code" annotations u
+
+ Jump to search box /
+ Toggle pinning of the current clause p
+ Jump to n th pin 1-9
+ Stage 2 Draft / October 16, 2024 Map.prototype.getOrInsert
Introduction
- Given a key
and a handler object, the emplace
method will either remap an existing entry, insert a new entry from a mapping function, or both. emplace
will return
- the updated or inserted value.
+ Given a key
and a value, the getOrInsert
method will return the existing value if it exists, or otherwise
+ insert the provided default value and return that value.
+ Similarly, given a key
and a callback function, the getOrInsert
method will return the existing value if it
+ exists, or otherwise insert the returned value of the callback function, and return that value.
-
- 1 Map.prototype.emplace ( key , handler )
- When the emplace method is called the following steps are taken:
- Let M be the this value. Perform ? RequireInternalSlot (M , [[MapData]]). Let entries be the List that is M .[[MapData]]. For each Record { [[Key]], [[Value]] } e that is an element of entries , doIf e .[[Key]] is not empty and SameValueZero (e .[[Key]], key ) is true , thenIf HasProperty (handler , "update") is true , thenLet updateFn be ? Get (handler , "update"). Let updated be ? Call (updateFn , handler , « e.[[Value]], key , M »). Set e .[[Value]] to updated . Return e .[[Value]]. Let insertFn be ? Get (handler , "insert"). Let inserted be ? Call (insertFn , handler , « e.[[Value]], key , M »). Set e .[[Value]] to inserted . Return e .[[Value]].
+
+ 1 Map.prototype.getOrInsert ( key , value )
+ When the getOrInsert method is called the following steps are taken:
+ Let M be the this value. Perform ? RequireInternalSlot (M , [[MapData]] ). For each Record { [[Key]] , [[Value]] } p of M .[[MapData]] , doIf p .[[Key]] is not empty and SameValueZero (p .[[Key]] , key ) is true , return p .[[Value]] . Set p .[[Value]] to value . Return p .[[Value]] .
+
+
+
+ 2 Map.prototype.getOrInsertComputed ( key , callbackfn )
+ When the getOrInsertComputed method is called the following steps are taken:
+ Let M be the this value. Perform ? RequireInternalSlot (M , [[MapData]] ). If IsCallable (callbackfn ) is false, throw a TypeError exception. For each Record { [[Key]] , [[Value]] } p of M .[[MapData]] , doIf p .[[Key]] is not empty and SameValueZero (p .[[Key]] , key ) is true , return p .[[Value]] . Let value be ? Call (callbackfn , key ). Set p .[[Value]] to value . Return p .[[Value]] .
+
+
+
+ 3 WeakMap.prototype.getOrInsert ( key , value )
+ When the getOrInsert method is called the following steps are taken:
+ Let M be the this value. Perform ? RequireInternalSlot (M , [[WeakMapData]] ). For each Record { [[Key]] , [[Value]] } p of M .[[MapData]] , doIf p .[[Key]] is not empty and SameValueZero (p .[[Key]] , key ) is true , return p .[[Value]] . Set p .[[Value]] to value . Return p .[[Value]] .
-
- 2 WeakMap.prototype.emplace ( key , handler )
- When the emplace method is called the following steps are taken:
- Let M be the this value. Perform ? RequireInternalSlot (M , [[WeakMapData]]). Let entries be the List that is M .[[WeakMapData]]. For each Record { [[Key]], [[Value]] } e that is an element of entries , doIf e .[[Key]] is not empty and SameValueZero (e .[[Key]], key ) is true , thenIf HasProperty (handler , "update") is true , thenLet updateFn be ? Get (handler , "update"). Let updated be ? Call (updateFn , handler , « e.[[Value]], key , M ») Set e .[[Value]] to updated . Return e .[[Value]]. Let insertFn be ? Get (handler , "insert"). Let inserted be ? Call (insertFn , handler , « e.[[Value]], key , M ») Set e .[[Value]] to inserted . Return e .[[Value]].
+
+ 4 WeakMap.prototype.getOrInsertComputed ( key , callbackfn )
+ When the getOrInsertComputed method is called the following steps are taken:
+ Let M be the this value. Perform ? RequireInternalSlot (M , [[WeakMapData]] ). If IsCallable (callbackfn ) is false, throw a TypeError exception. For each Record { [[Key]] , [[Value]] } p of M .[[MapData]] , doIf p .[[Key]] is not empty and SameValueZero (p .[[Key]] , key ) is true , return p .[[Value]] . Let value be ? Call (callbackfn , key ). Set p .[[Value]] to value . Return p .[[Value]] .
A Copyright & Software License
Copyright Notice
- © 2020 Erica Pramer
+ © 2024 Jonas Haukenes, Daniel Minor
Software License
- All Software contained in this document ("Software") is protected by copyright and is being made available under the "BSD License", included below. This Software may be subject to third party rights (rights from parties other than Ecma International), including patent rights, and no licenses under such third party rights are granted under this license even if the third party concerned is a member of Ecma International. SEE THE ECMA CODE OF CONDUCT IN PATENT MATTERS AVAILABLE AT https://ecma-international.org/memento/codeofconduct.htm FOR INFORMATION REGARDING THE LICENSING OF PATENT CLAIMS THAT ARE REQUIRED TO IMPLEMENT ECMA INTERNATIONAL STANDARDS.
+ All Software contained in this document ("Software") is protected by copyright and is being made available under the "BSD License", included below. This Software may be subject to third party rights (rights from parties other than Ecma International), including patent rights, and no licenses under such third party rights are granted under this license even if the third party concerned is a member of Ecma International. SEE THE ECMA CODE OF CONDUCT IN PATENT MATTERS AVAILABLE AT https://ecma-international.org/memento/codeofconduct.htm FOR INFORMATION REGARDING THE LICENSING OF PATENT CLAIMS THAT ARE REQUIRED TO IMPLEMENT ECMA INTERNATIONAL STANDARDS.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
@@ -1882,5 +3341,4 @@ Software License
THIS SOFTWARE IS PROVIDED BY THE ECMA INTERNATIONAL "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ECMA INTERNATIONAL BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 2bc2984..9186fd0 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,1089 +1,1440 @@
{
"name": "proposal-upsert",
+ "lockfileVersion": 3,
"requires": true,
- "lockfileVersion": 1,
- "dependencies": {
- "@esfx/cancelable": {
- "version": "1.0.0-pre.13",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/@esfx/cancelable/-/cancelable-1.0.0-pre.13.tgz",
- "integrity": "sha1-XfaSgOLvfNdahDbnv3tPd9SFnBY=",
+ "packages": {
+ "": {
+ "name": "proposal-upsert",
+ "license": "MIT",
+ "devDependencies": {
+ "@tc39/ecma262-biblio": "^2.1.2771",
+ "ecmarkup": "^19.1.0"
+ }
+ },
+ "node_modules/@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==",
"dev": true,
- "requires": {
- "@esfx/disposable": "^1.0.0-pre.13",
- "@esfx/internal-deprecate": "^1.0.0-pre.13",
- "@esfx/internal-guards": "^1.0.0-pre.11",
- "@esfx/internal-tag": "^1.0.0-pre.6",
- "tslib": "^1.9.3"
+ "dependencies": {
+ "@babel/highlight": "^7.10.4"
}
},
- "@esfx/disposable": {
- "version": "1.0.0-pre.13",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/@esfx/disposable/-/disposable-1.0.0-pre.13.tgz",
- "integrity": "sha1-CEFaLYQIoANQlPW1rr2EuckzNmI=",
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
+ "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==",
"dev": true,
- "requires": {
- "@esfx/internal-deprecate": "^1.0.0-pre.13",
- "@esfx/internal-guards": "^1.0.0-pre.11",
- "@esfx/internal-tag": "^1.0.0-pre.6",
- "tslib": "^1.9.3"
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "@esfx/internal-deprecate": {
- "version": "1.0.0-pre.13",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/@esfx/internal-deprecate/-/internal-deprecate-1.0.0-pre.13.tgz",
- "integrity": "sha1-mfZDTpMGt19yDgrFFSdXpNeqMeo=",
+ "node_modules/@babel/highlight": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz",
+ "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==",
"dev": true,
- "requires": {
- "tslib": "^1.9.3"
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.24.7",
+ "chalk": "^2.4.2",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "@esfx/internal-guards": {
- "version": "1.0.0-pre.11",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/@esfx/internal-guards/-/internal-guards-1.0.0-pre.11.tgz",
- "integrity": "sha1-eBS4wSjjuNzqoLBl1Bn0EoDgQTM=",
+ "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,
- "requires": {
- "@esfx/type-model": "^1.0.0-pre.11",
- "tslib": "^1.9.3"
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
}
},
- "@esfx/internal-tag": {
- "version": "1.0.0-pre.6",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/@esfx/internal-tag/-/internal-tag-1.0.0-pre.6.tgz",
- "integrity": "sha1-FPycU5dlrHY0BHTM50eWXhm1GDM=",
- "dev": true
+ "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,
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
},
- "@esfx/type-model": {
- "version": "1.0.0-pre.11",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/@esfx/type-model/-/type-model-1.0.0-pre.11.tgz",
- "integrity": "sha1-fLoYrlhiOqOnwqwPFLD2/8RiAps=",
+ "node_modules/@babel/highlight/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,
- "requires": {
- "tslib": "^1.9.3"
+ "dependencies": {
+ "color-name": "1.1.3"
}
},
- "abab": {
- "version": "1.0.4",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/abab/-/abab-1.0.4.tgz",
- "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=",
+ "node_modules/@babel/highlight/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
},
- "acorn": {
- "version": "5.7.4",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz",
- "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==",
- "dev": true
+ "node_modules/@babel/highlight/node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
},
- "acorn-globals": {
- "version": "4.3.4",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/acorn-globals/-/acorn-globals-4.3.4.tgz",
- "integrity": "sha1-n6GSat3BHJcwjE5m163Q1Awycuc=",
+ "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==",
"dev": true,
- "requires": {
- "acorn": "^6.0.1",
- "acorn-walk": "^6.0.1"
+ "dependencies": {
+ "has-flag": "^3.0.0"
},
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "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": {
- "acorn": {
- "version": "6.4.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz",
- "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==",
- "dev": true
- }
+ "@esfx/cancelable": "^1.0.0",
+ "@esfx/canceltoken": "^1.0.0",
+ "@esfx/disposable": "^1.0.0",
+ "tslib": "^2.4.0"
}
},
- "acorn-walk": {
- "version": "6.2.0",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/acorn-walk/-/acorn-walk-6.2.0.tgz",
- "integrity": "sha1-Ejy487hMIXHx9/slJhWxx4prGow=",
+ "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/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/cancelable": "^1.0.0",
+ "@esfx/disposable": "^1.0.0",
+ "tslib": "^2.4.0"
+ }
+ },
+ "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
},
- "ajv": {
- "version": "6.10.2",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/ajv/-/ajv-6.10.2.tgz",
- "integrity": "sha1-086gTWsBeyiUrWkED+yLYj60vVI=",
+ "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,
- "requires": {
- "fast-deep-equal": "^2.0.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
}
},
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "node_modules/@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==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@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==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@tc39/ecma262-biblio": {
+ "version": "2.1.2771",
+ "resolved": "https://registry.npmjs.org/@tc39/ecma262-biblio/-/ecma262-biblio-2.1.2771.tgz",
+ "integrity": "sha512-9qB9Gp3kdPGTVG0Y253dIY9fwDDUyfHJNXInekOS70/rGLUqJe+Jtn84Bp1DfYK5z5x45rUiYX5kTUS4xDLwiA==",
"dev": true
},
- "ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "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/abab": {
+ "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
},
- "argparse": {
+ "node_modules/acorn": {
+ "version": "8.12.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz",
+ "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==",
+ "dev": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/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==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^7.1.1",
+ "acorn-walk": "^7.1.1"
+ }
+ },
+ "node_modules/acorn-globals/node_modules/acorn": {
+ "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"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/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==",
+ "dev": true,
+ "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==",
+ "dev": true,
+ "dependencies": {
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6.0.0"
+ }
+ },
+ "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,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/argparse": {
"version": "1.0.10",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
"dev": true,
- "requires": {
+ "dependencies": {
"sprintf-js": "~1.0.2"
}
},
- "array-equal": {
- "version": "1.0.0",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/array-equal/-/array-equal-1.0.0.tgz",
- "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=",
+ "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/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
"dev": true
},
- "asn1": {
- "version": "0.2.4",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/asn1/-/asn1-0.2.4.tgz",
- "integrity": "sha1-jSR136tVO7M+d7VOWeiAu4ziMTY=",
+ "node_modules/braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"dev": true,
- "requires": {
- "safer-buffer": "~2.1.0"
+ "dependencies": {
+ "fill-range": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "assert-plus": {
+ "node_modules/browser-process-hrtime": {
"version": "1.0.0",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+ "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz",
+ "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==",
"dev": true
},
- "async-limiter": {
- "version": "1.0.1",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/async-limiter/-/async-limiter-1.0.1.tgz",
- "integrity": "sha1-3TeelPDbgxCwgpH51kwyCXZmF/0=",
- "dev": true
+ "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"
+ }
},
- "asynckit": {
- "version": "0.4.0",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
- "dev": true
+ "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==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
},
- "aws-sign2": {
- "version": "0.7.0",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/aws-sign2/-/aws-sign2-0.7.0.tgz",
- "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
+ "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==",
"dev": true
},
- "aws4": {
- "version": "1.8.0",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/aws4/-/aws4-1.8.0.tgz",
- "integrity": "sha1-8OAD2cqef1nHpQiUXXsu+aBKVC8=",
- "dev": true
+ "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,
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
},
- "bcrypt-pbkdf": {
- "version": "1.0.2",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
- "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
+ "node_modules/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==",
"dev": true,
- "requires": {
- "tweetnacl": "^0.14.3"
+ "dependencies": {
+ "array-back": "^3.1.0",
+ "find-replace": "^3.0.0",
+ "lodash.camelcase": "^4.3.0",
+ "typical": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=4.0.0"
}
},
- "bluebird": {
- "version": "3.5.5",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/bluebird/-/bluebird-3.5.5.tgz",
- "integrity": "sha1-qNCv1zJR7/u9X+OEp31zADwXpx8=",
- "dev": true
+ "node_modules/command-line-usage": {
+ "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.2",
+ "chalk": "^2.4.2",
+ "table-layout": "^1.0.2",
+ "typical": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
},
- "browser-process-hrtime": {
- "version": "0.1.3",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz",
- "integrity": "sha1-YW8A+u8d9+wbW/nP4r3DFw8mx7Q=",
- "dev": true
+ "node_modules/command-line-usage/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,
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
},
- "caseless": {
- "version": "0.12.0",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/caseless/-/caseless-0.12.0.tgz",
- "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
- "dev": true
+ "node_modules/command-line-usage/node_modules/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==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
},
- "chalk": {
+ "node_modules/command-line-usage/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,
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "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": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/command-line-usage/node_modules/color-name": {
"version": "1.1.3",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "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/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
"dev": true,
- "requires": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
+ "engines": {
+ "node": ">=4"
}
},
- "combined-stream": {
- "version": "1.0.8",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha1-w9RaizT9cwYxoRCoolIGgrMdWn8=",
+ "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==",
"dev": true,
- "requires": {
- "delayed-stream": "~1.0.0"
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
}
},
- "core-util-is": {
- "version": "1.0.2",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/core-util-is/-/core-util-is-1.0.2.tgz",
- "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+ "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/cssom": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz",
+ "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==",
"dev": true
},
- "cssom": {
+ "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,
+ "dependencies": {
+ "cssom": "~0.3.6"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cssstyle/node_modules/cssom": {
"version": "0.3.8",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/cssom/-/cssom-0.3.8.tgz",
- "integrity": "sha1-nxJ29bK0Y/IRTT8sdSUK+MGjb0o=",
+ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
+ "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==",
"dev": true
},
- "cssstyle": {
- "version": "0.2.37",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/cssstyle/-/cssstyle-0.2.37.tgz",
- "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=",
+ "node_modules/data-urls": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz",
+ "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==",
"dev": true,
- "requires": {
- "cssom": "0.3.x"
+ "dependencies": {
+ "abab": "^2.0.6",
+ "whatwg-mimetype": "^3.0.0",
+ "whatwg-url": "^11.0.0"
+ },
+ "engines": {
+ "node": ">=12"
}
},
- "dashdash": {
- "version": "1.14.1",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/dashdash/-/dashdash-1.14.1.tgz",
- "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+ "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,
- "requires": {
- "assert-plus": "^1.0.0"
+ "dependencies": {
+ "tr46": "^3.0.0",
+ "webidl-conversions": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
}
},
- "data-urls": {
- "version": "1.1.0",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/data-urls/-/data-urls-1.1.0.tgz",
- "integrity": "sha1-Fe4Fgrql4iu1nHcUDaj5x2lju/4=",
+ "node_modules/debug": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
"dev": true,
- "requires": {
- "abab": "^2.0.0",
- "whatwg-mimetype": "^2.2.0",
- "whatwg-url": "^7.0.0"
- },
"dependencies": {
- "abab": {
- "version": "2.0.1",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/abab/-/abab-2.0.1.tgz",
- "integrity": "sha1-P6F3lwMrcUEOw3LhFmj0tP/IaoI=",
- "dev": true
- },
- "whatwg-url": {
- "version": "7.0.0",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/whatwg-url/-/whatwg-url-7.0.0.tgz",
- "integrity": "sha1-/ekm+lSlmfOt+C3/Jan3vgLcbt0=",
- "dev": true,
- "requires": {
- "lodash.sortby": "^4.7.0",
- "tr46": "^1.0.1",
- "webidl-conversions": "^4.0.2"
- }
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
}
}
},
- "deep-is": {
- "version": "0.1.3",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/deep-is/-/deep-is-0.1.3.tgz",
- "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
+ "node_modules/decimal.js": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz",
+ "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==",
"dev": true
},
- "delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
+ "node_modules/dedent-js": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/dedent-js/-/dedent-js-1.0.1.tgz",
+ "integrity": "sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==",
"dev": true
},
- "domexception": {
- "version": "1.0.1",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/domexception/-/domexception-1.0.1.tgz",
- "integrity": "sha1-k3RCZEymoxJh7zbj7Gd/6AVYLJA=",
+ "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,
- "requires": {
- "webidl-conversions": "^4.0.2"
+ "engines": {
+ "node": ">=4.0.0"
}
},
- "ecc-jsbn": {
- "version": "0.1.2",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
- "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
"dev": true,
- "requires": {
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.1.0"
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "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"
+ },
+ "engines": {
+ "node": ">=12"
}
},
- "ecmarkdown": {
- "version": "3.0.9",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/ecmarkdown/-/ecmarkdown-3.0.9.tgz",
- "integrity": "sha1-Pl5oc7SO9YRHN8s4jMq9hQYaevE=",
+ "node_modules/ecmarkdown": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/ecmarkdown/-/ecmarkdown-8.1.0.tgz",
+ "integrity": "sha512-dx6cM6RFjzAXkWr2KQRikED4gy70NFQ0vTI4XUQM/LWcjUYRJUbGdd7nd++trXi5az1JSe49TeeCIVMKDXOtcQ==",
"dev": true,
- "requires": {
+ "dependencies": {
"escape-html": "^1.0.1"
}
},
- "ecmarkup": {
- "version": "3.16.0",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/ecmarkup/-/ecmarkup-3.16.0.tgz",
- "integrity": "sha1-yah3I37FSwFYGX+eO0YohuQUoSs=",
+ "node_modules/ecmarkup": {
+ "version": "19.1.0",
+ "resolved": "https://registry.npmjs.org/ecmarkup/-/ecmarkup-19.1.0.tgz",
+ "integrity": "sha512-+mh2vIcRCJtr8poJl64yulZkSSWpd7TQpORj+WVRmFe5omdS33eF94XjPa8QN0TiNz7gaCwJygKUF4COO142mA==",
"dev": true,
- "requires": {
- "bluebird": "^3.4.5",
- "chalk": "^1.1.1",
- "ecmarkdown": "^3.0.9",
- "grammarkdown": "^2.0.11",
- "he": "^1.1.1",
- "highlight.js": "^9.0.0",
+ "dependencies": {
+ "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.3.2",
+ "highlight.js": "11.0.1",
"html-escape": "^1.0.2",
- "js-yaml": "^3.4.6",
- "jsdom": "11.10.0",
- "nomnom": "^1.8.1",
- "prex": "^0.4.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"
+ },
+ "bin": {
+ "ecmarkup": "bin/ecmarkup.js",
+ "emu-format": "bin/emu-format.js"
+ },
+ "engines": {
+ "node": ">= 12 || ^11.10.1 || ^10.13 || ^8.10"
}
},
- "escape-html": {
+ "node_modules/escape-html": {
"version": "1.0.3",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/escape-html/-/escape-html-1.0.3.tgz",
- "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
"dev": true
},
- "escape-string-regexp": {
+ "node_modules/escape-string-regexp": {
"version": "1.0.5",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
- "dev": true
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
},
- "escodegen": {
- "version": "1.12.0",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/escodegen/-/escodegen-1.12.0.tgz",
- "integrity": "sha1-92Pa+ECvFyuzorbdchnA4X9/9UE=",
+ "node_modules/escodegen": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
+ "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
"dev": true,
- "requires": {
- "esprima": "^3.1.3",
- "estraverse": "^4.2.0",
- "esutils": "^2.0.2",
- "optionator": "^0.8.1",
- "source-map": "~0.6.1"
+ "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/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==",
+ "dev": true,
"dependencies": {
- "esprima": {
- "version": "3.1.3",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/esprima/-/esprima-3.1.3.tgz",
- "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=",
- "dev": true
- }
+ "@babel/code-frame": "7.12.11",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
}
},
- "esprima": {
+ "node_modules/esprima": {
"version": "4.0.1",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha1-E7BM2z5sXRnfkatph6hpVhmwqnE=",
- "dev": true
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true,
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
},
- "estraverse": {
- "version": "4.3.0",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/estraverse/-/estraverse-4.3.0.tgz",
- "integrity": "sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0=",
- "dev": true
+ "node_modules/estraverse": {
+ "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"
+ }
},
- "esutils": {
+ "node_modules/esutils": {
"version": "2.0.3",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha1-dNLrTeC42hKTcRkQ1Qd1ubcQ72Q=",
- "dev": true
- },
- "extend": {
- "version": "3.0.2",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/extend/-/extend-3.0.2.tgz",
- "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo=",
- "dev": true
- },
- "extsprintf": {
- "version": "1.3.0",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/extsprintf/-/extsprintf-1.3.0.tgz",
- "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
- "dev": true
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "fast-deep-equal": {
- "version": "2.0.1",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
- "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
- "dev": true
+ "node_modules/fast-glob": {
+ "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",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
},
- "fast-json-stable-stringify": {
- "version": "2.0.0",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
- "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
- "dev": true
+ "node_modules/fastq": {
+ "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"
+ }
},
- "fast-levenshtein": {
- "version": "2.0.6",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
- "dev": true
+ "node_modules/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "dev": true,
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
},
- "forever-agent": {
- "version": "0.6.1",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/forever-agent/-/forever-agent-0.6.1.tgz",
- "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
- "dev": true
+ "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"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
},
- "form-data": {
- "version": "2.3.3",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/form-data/-/form-data-2.3.3.tgz",
- "integrity": "sha1-3M5SwF9kTymManq5Nr1yTO/786Y=",
+ "node_modules/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==",
"dev": true,
- "requires": {
+ "dependencies": {
"asynckit": "^0.4.0",
- "combined-stream": "^1.0.6",
+ "combined-stream": "^1.0.8",
"mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
}
},
- "getpass": {
- "version": "0.1.7",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/getpass/-/getpass-0.1.7.tgz",
- "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+ "node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
"dev": true,
- "requires": {
- "assert-plus": "^1.0.0"
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
}
},
- "grammarkdown": {
- "version": "2.0.12",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/grammarkdown/-/grammarkdown-2.0.12.tgz",
- "integrity": "sha1-qpXMaP1Uh4BD94JhJ7CwBOjWc4E=",
+ "node_modules/grammarkdown": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/grammarkdown/-/grammarkdown-3.3.2.tgz",
+ "integrity": "sha512-inNbeEotDr7MENqoZlms3x4gBzvK73wR2NGpNVnw4oEZcsq2METUbAh0J3VWtEqd9t2+U3poEqiJ9CDgBXr5Tg==",
"dev": true,
- "requires": {
- "prex": "^0.4.2"
+ "dependencies": {
+ "@esfx/async-canceltoken": "^1.0.0-pre.13",
+ "@esfx/cancelable": "^1.0.0-pre.13",
+ "@esfx/disposable": "^1.0.0-pre.13"
+ },
+ "bin": {
+ "grammarkdown": "bin/grammarkdown"
}
},
- "har-schema": {
- "version": "2.0.0",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/har-schema/-/har-schema-2.0.0.tgz",
- "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
- "dev": true
+ "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"
+ }
},
- "har-validator": {
- "version": "5.1.3",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/har-validator/-/har-validator-5.1.3.tgz",
- "integrity": "sha1-HvievT5JllV2de7ZiTEQ3DUPoIA=",
+ "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,
- "requires": {
- "ajv": "^6.5.5",
- "har-schema": "^2.0.0"
+ "engines": {
+ "node": ">=12.0.0"
}
},
- "has-ansi": {
- "version": "2.0.0",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/has-ansi/-/has-ansi-2.0.0.tgz",
- "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+ "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,
- "requires": {
- "ansi-regex": "^2.0.0"
+ "dependencies": {
+ "whatwg-encoding": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12"
}
},
- "has-color": {
- "version": "0.1.7",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/has-color/-/has-color-0.1.7.tgz",
- "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=",
+ "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
},
- "he": {
- "version": "1.2.0",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/he/-/he-1.2.0.tgz",
- "integrity": "sha1-hK5l+n6vsWX922FWauFLrwVmTw8=",
- "dev": true
+ "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"
+ }
},
- "highlight.js": {
- "version": "9.15.10",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/highlight.js/-/highlight.js-9.15.10.tgz",
- "integrity": "sha1-exjtdckDSMBF7vntCMoTGaIhmtI=",
- "dev": true
+ "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"
+ }
},
- "html-encoding-sniffer": {
- "version": "1.0.2",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz",
- "integrity": "sha1-5w2EuU2lOqN14R/jo1G+ZkLKRvg=",
+ "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,
- "requires": {
- "whatwg-encoding": "^1.0.1"
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "html-escape": {
- "version": "1.0.2",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/html-escape/-/html-escape-1.0.2.tgz",
- "integrity": "sha1-X6eHwFaAkP4zLtWzz0qk9kZCGnQ=",
- "dev": true
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "http-signature": {
- "version": "1.2.0",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/http-signature/-/http-signature-1.2.0.tgz",
- "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
+ "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,
- "requires": {
- "assert-plus": "^1.0.0",
- "jsprim": "^1.2.2",
- "sshpk": "^1.7.0"
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=",
+ "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,
- "requires": {
- "safer-buffer": ">= 2.1.2 < 3"
+ "engines": {
+ "node": ">=0.12.0"
}
},
- "is-typedarray": {
- "version": "1.0.0",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
+ "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==",
"dev": true
},
- "isstream": {
- "version": "0.1.2",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/isstream/-/isstream-0.1.2.tgz",
- "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
+ "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
},
- "js-yaml": {
- "version": "3.13.1",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/js-yaml/-/js-yaml-3.13.1.tgz",
- "integrity": "sha1-r/FRswv9+o5J4F2iLnQV6d+jeEc=",
+ "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,
- "requires": {
+ "dependencies": {
"argparse": "^1.0.7",
"esprima": "^4.0.0"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
}
},
- "jsbn": {
- "version": "0.1.1",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/jsbn/-/jsbn-0.1.1.tgz",
- "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
- "dev": true
- },
- "jsdom": {
- "version": "11.10.0",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/jsdom/-/jsdom-11.10.0.tgz",
- "integrity": "sha1-pCzVToiJXcdl8D8VuAekdJYqw7U=",
- "dev": true,
- "requires": {
- "abab": "^1.0.4",
- "acorn": "^5.3.0",
- "acorn-globals": "^4.1.0",
- "array-equal": "^1.0.0",
- "cssom": ">= 0.3.2 < 0.4.0",
- "cssstyle": ">= 0.2.37 < 0.3.0",
- "data-urls": "^1.0.0",
- "domexception": "^1.0.0",
- "escodegen": "^1.9.0",
- "html-encoding-sniffer": "^1.0.2",
- "left-pad": "^1.2.0",
- "nwmatcher": "^1.4.3",
- "parse5": "4.0.0",
- "pn": "^1.1.0",
- "request": "^2.83.0",
- "request-promise-native": "^1.0.5",
- "sax": "^1.2.4",
- "symbol-tree": "^3.2.2",
- "tough-cookie": "^2.3.3",
- "w3c-hr-time": "^1.0.1",
- "webidl-conversions": "^4.0.2",
- "whatwg-encoding": "^1.0.3",
- "whatwg-mimetype": "^2.1.0",
- "whatwg-url": "^6.4.0",
- "ws": "^4.0.0",
- "xml-name-validator": "^3.0.0"
- }
- },
- "json-schema": {
- "version": "0.2.3",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/json-schema/-/json-schema-0.2.3.tgz",
- "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
- "dev": true
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha1-afaofZUTq4u4/mO9sJecRI5oRmA=",
- "dev": true
+ "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",
+ "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"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "peerDependencies": {
+ "canvas": "^2.5.0"
+ },
+ "peerDependenciesMeta": {
+ "canvas": {
+ "optional": true
+ }
+ }
},
- "json-stringify-safe": {
- "version": "5.0.1",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
- "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
+ "node_modules/lodash.camelcase": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
+ "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==",
"dev": true
},
- "jsprim": {
+ "node_modules/merge2": {
"version": "1.4.1",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/jsprim/-/jsprim-1.4.1.tgz",
- "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
"dev": true,
- "requires": {
- "assert-plus": "1.0.0",
- "extsprintf": "1.3.0",
- "json-schema": "0.2.3",
- "verror": "1.10.0"
+ "engines": {
+ "node": ">= 8"
}
},
- "left-pad": {
- "version": "1.3.0",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/left-pad/-/left-pad-1.3.0.tgz",
- "integrity": "sha1-W4o6d2Xf4AEmHd6RVYnngvjJTR4=",
- "dev": true
- },
- "levn": {
- "version": "0.3.0",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/levn/-/levn-0.3.0.tgz",
- "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+ "node_modules/micromatch": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
"dev": true,
- "requires": {
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2"
+ "dependencies": {
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
}
},
- "lodash": {
- "version": "4.17.19",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz",
- "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==",
- "dev": true
- },
- "lodash.sortby": {
- "version": "4.7.0",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
- "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=",
- "dev": true
- },
- "mime-db": {
- "version": "1.40.0",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/mime-db/-/mime-db-1.40.0.tgz",
- "integrity": "sha1-plBX6ZjbCQ9zKmj2wnbTh9QSbDI=",
- "dev": true
- },
- "mime-types": {
- "version": "2.1.24",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/mime-types/-/mime-types-2.1.24.tgz",
- "integrity": "sha1-tvjQs+lR77d97eyhlM/20W9nb4E=",
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
"dev": true,
- "requires": {
- "mime-db": "1.40.0"
+ "engines": {
+ "node": ">= 0.6"
}
},
- "nomnom": {
- "version": "1.8.1",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/nomnom/-/nomnom-1.8.1.tgz",
- "integrity": "sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc=",
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
"dev": true,
- "requires": {
- "chalk": "~0.4.0",
- "underscore": "~1.6.0"
- },
"dependencies": {
- "ansi-styles": {
- "version": "1.0.0",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/ansi-styles/-/ansi-styles-1.0.0.tgz",
- "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=",
- "dev": true
- },
- "chalk": {
- "version": "0.4.0",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/chalk/-/chalk-0.4.0.tgz",
- "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=",
- "dev": true,
- "requires": {
- "ansi-styles": "~1.0.0",
- "has-color": "~0.1.0",
- "strip-ansi": "~0.1.0"
- }
- },
- "strip-ansi": {
- "version": "0.1.1",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/strip-ansi/-/strip-ansi-0.1.1.tgz",
- "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=",
- "dev": true
- }
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
}
},
- "nwmatcher": {
- "version": "1.4.4",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/nwmatcher/-/nwmatcher-1.4.4.tgz",
- "integrity": "sha1-IoVjHzSpXw0Dlc2QDJbtObWPNG4=",
+ "node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"dev": true
},
- "oauth-sign": {
- "version": "0.9.0",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/oauth-sign/-/oauth-sign-0.9.0.tgz",
- "integrity": "sha1-R6ewFrqmi1+g7PPe4IqFxnmsZFU=",
+ "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
},
- "optionator": {
- "version": "0.8.2",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/optionator/-/optionator-0.8.2.tgz",
- "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
- "dev": true,
- "requires": {
- "deep-is": "~0.1.3",
- "fast-levenshtein": "~2.0.4",
- "levn": "~0.3.0",
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2",
- "wordwrap": "~1.0.0"
- }
- },
- "parse5": {
- "version": "4.0.0",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/parse5/-/parse5-4.0.0.tgz",
- "integrity": "sha1-bXhlbj2o14tOwLkG98CO8d/j9gg=",
- "dev": true
- },
- "performance-now": {
- "version": "2.1.0",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/performance-now/-/performance-now-2.1.0.tgz",
- "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
+ "node_modules/parse5": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
+ "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
"dev": true
},
- "pn": {
+ "node_modules/picocolors": {
"version": "1.1.0",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/pn/-/pn-1.1.0.tgz",
- "integrity": "sha1-4vTO8OIZ9GPBeas3Rj5OHs3Muvs=",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz",
+ "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==",
"dev": true
},
- "prelude-ls": {
- "version": "1.1.2",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/prelude-ls/-/prelude-ls-1.1.2.tgz",
- "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
- "dev": true
+ "node_modules/picomatch": {
+ "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"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
},
- "prex": {
- "version": "0.4.6",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/prex/-/prex-0.4.6.tgz",
- "integrity": "sha1-6y95OkgNysqLWROfuMh9p7h/YBk=",
+ "node_modules/prex": {
+ "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,
- "requires": {
- "@esfx/cancelable": "^1.0.0-pre.0",
- "@esfx/disposable": "^1.0.0-pre.0"
+ "dependencies": {
+ "@esfx/cancelable": "^1.0.0 || >=1.0.0-pre.13",
+ "@esfx/disposable": "^1.0.0 || >=1.0.0-pre.13"
}
},
- "promise-debounce": {
+ "node_modules/promise-debounce": {
"version": "1.0.1",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/promise-debounce/-/promise-debounce-1.0.1.tgz",
- "integrity": "sha1-btdvj3nQFE/b0BzBVYnOV/nXHng=",
+ "resolved": "https://registry.npmjs.org/promise-debounce/-/promise-debounce-1.0.1.tgz",
+ "integrity": "sha512-jq3Crngf1DaaOXQIOUkPr7LsW4UsWyn0KW1MJ+yMn5njTJ+F1AuHmjjwJhod9HuoNSSMspSLS9PS3V7BrexwjQ==",
"dev": true
},
- "psl": {
- "version": "1.4.0",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/psl/-/psl-1.4.0.tgz",
- "integrity": "sha1-XdJhVs22n6H9uKsZkWZ9P4DO18I=",
+ "node_modules/psl": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
+ "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==",
"dev": true
},
- "punycode": {
- "version": "2.1.1",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha1-tYsBCsQMIsVldhbI0sLALHv0eew=",
- "dev": true
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
},
- "qs": {
- "version": "6.5.2",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/qs/-/qs-6.5.2.tgz",
- "integrity": "sha1-yzroBuh0BERYTvFUzo7pjUA/PjY=",
+ "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
},
- "request": {
- "version": "2.88.0",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/request/-/request-2.88.0.tgz",
- "integrity": "sha1-nC/KT301tZLv5Xx/ClXoEFIST+8=",
- "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.0",
- "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.4.3",
- "tunnel-agent": "^0.6.0",
- "uuid": "^3.3.2"
- },
- "dependencies": {
- "punycode": {
- "version": "1.4.1",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/punycode/-/punycode-1.4.1.tgz",
- "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
- "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",
+ "url": "https://github.com/sponsors/feross"
},
- "tough-cookie": {
- "version": "2.4.3",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/tough-cookie/-/tough-cookie-2.4.3.tgz",
- "integrity": "sha1-U/Nto/R3g7CSWvoG/587FlKA94E=",
- "dev": true,
- "requires": {
- "psl": "^1.1.24",
- "punycode": "^1.4.1"
- }
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
}
- }
+ ]
},
- "request-promise-core": {
- "version": "1.1.2",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/request-promise-core/-/request-promise-core-1.1.2.tgz",
- "integrity": "sha1-M59qq6vK/bMceZ/xWHADNjAdM0Y=",
+ "node_modules/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==",
"dev": true,
- "requires": {
- "lodash": "^4.17.11"
+ "engines": {
+ "node": ">=6"
}
},
- "request-promise-native": {
- "version": "1.0.7",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/request-promise-native/-/request-promise-native-1.0.7.tgz",
- "integrity": "sha1-pJhopiS96lBp8SUdCoNuDYmqLFk=",
+ "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/reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
"dev": true,
- "requires": {
- "request-promise-core": "1.1.2",
- "stealthy-require": "^1.1.1",
- "tough-cookie": "^2.3.3"
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
}
},
- "safe-buffer": {
- "version": "5.2.0",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/safe-buffer/-/safe-buffer-5.2.0.tgz",
- "integrity": "sha1-t02uxJsRSPiMZLaNSbHoFcHy9Rk=",
- "dev": true
+ "node_modules/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==",
+ "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"
+ }
+ ],
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
},
- "safer-buffer": {
+ "node_modules/safer-buffer": {
"version": "2.1.2",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
"dev": true
},
- "sax": {
- "version": "1.2.4",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/sax/-/sax-1.2.4.tgz",
- "integrity": "sha1-KBYjTiN4vdxOU1T6tcqold9xANk=",
- "dev": true
+ "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"
+ },
+ "engines": {
+ "node": ">=10"
+ }
},
- "source-map": {
+ "node_modules/source-map": {
"version": "0.6.1",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true,
- "optional": true
+ "optional": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "sprintf-js": {
+ "node_modules/sprintf-js": {
"version": "1.0.3",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
"dev": true
},
- "sshpk": {
- "version": "1.16.1",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/sshpk/-/sshpk-1.16.1.tgz",
- "integrity": "sha1-+2YcC+8ps520B2nuOfpwCT1vaHc=",
- "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://artifactory.secureserver.net/artifactory/api/npm/node-virt/stealthy-require/-/stealthy-require-1.1.1.tgz",
- "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=",
- "dev": true
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "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,
- "requires": {
- "ansi-regex": "^2.0.0"
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "supports-color": {
- "version": "2.0.0",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
- "dev": true
- },
- "symbol-tree": {
+ "node_modules/symbol-tree": {
"version": "3.2.4",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/symbol-tree/-/symbol-tree-3.2.4.tgz",
- "integrity": "sha1-QwY30ki6d+B4iDlR+5qg7tfGP6I=",
+ "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
+ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
"dev": true
},
- "tough-cookie": {
- "version": "2.5.0",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/tough-cookie/-/tough-cookie-2.5.0.tgz",
- "integrity": "sha1-zZ+yoKodWhK0c72fuW+j3P9lreI=",
+ "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,
- "requires": {
- "psl": "^1.1.28",
- "punycode": "^2.1.1"
+ "dependencies": {
+ "array-back": "^4.0.1",
+ "deep-extend": "~0.6.0",
+ "typical": "^5.2.0",
+ "wordwrapjs": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8.0.0"
}
},
- "tr46": {
- "version": "1.0.1",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/tr46/-/tr46-1.0.1.tgz",
- "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=",
+ "node_modules/table-layout/node_modules/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==",
"dev": true,
- "requires": {
- "punycode": "^2.1.0"
+ "engines": {
+ "node": ">=8"
}
},
- "tslib": {
- "version": "1.10.0",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/tslib/-/tslib-1.10.0.tgz",
- "integrity": "sha1-w8GflZc/sKYpc/sJ2Q2WHuQ+XIo=",
- "dev": true
+ "node_modules/table-layout/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"
+ }
},
- "tunnel-agent": {
- "version": "0.6.0",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
- "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+ "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==",
"dev": true,
- "requires": {
- "safe-buffer": "^5.0.1"
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
}
},
- "tweetnacl": {
- "version": "0.14.5",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/tweetnacl/-/tweetnacl-0.14.5.tgz",
- "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
- "dev": true
+ "node_modules/tough-cookie": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz",
+ "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==",
+ "dev": true,
+ "dependencies": {
+ "psl": "^1.1.33",
+ "punycode": "^2.1.1",
+ "universalify": "^0.2.0",
+ "url-parse": "^1.5.3"
+ },
+ "engines": {
+ "node": ">=6"
+ }
},
- "type-check": {
- "version": "0.3.2",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/type-check/-/type-check-0.3.2.tgz",
- "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+ "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,
- "requires": {
- "prelude-ls": "~1.1.2"
+ "dependencies": {
+ "punycode": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=12"
}
},
- "underscore": {
- "version": "1.6.0",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/underscore/-/underscore-1.6.0.tgz",
- "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=",
+ "node_modules/tslib": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz",
+ "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==",
"dev": true
},
- "uri-js": {
- "version": "4.2.2",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/uri-js/-/uri-js-4.2.2.tgz",
- "integrity": "sha1-lMVA4f93KVbiKZUHwBCupsiDjrA=",
+ "node_modules/typical": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz",
+ "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==",
"dev": true,
- "requires": {
- "punycode": "^2.1.0"
+ "engines": {
+ "node": ">=8"
}
},
- "uuid": {
- "version": "3.3.3",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/uuid/-/uuid-3.3.3.tgz",
- "integrity": "sha1-RWjwIW54dg7h2/Ok0s9T4iQRKGY=",
- "dev": true
- },
- "verror": {
- "version": "1.10.0",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/verror/-/verror-1.10.0.tgz",
- "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
+ "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,
- "requires": {
- "assert-plus": "^1.0.0",
- "core-util-is": "1.0.2",
- "extsprintf": "^1.2.0"
+ "engines": {
+ "node": ">= 4.0.0"
}
},
- "w3c-hr-time": {
- "version": "1.0.1",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz",
- "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=",
+ "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,
- "requires": {
- "browser-process-hrtime": "^0.1.2"
+ "dependencies": {
+ "querystringify": "^2.1.1",
+ "requires-port": "^1.0.0"
}
},
- "webidl-conversions": {
- "version": "4.0.2",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
- "integrity": "sha1-qFWYCx8LazWbodXZ+zmulB+qY60=",
- "dev": true
+ "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==",
+ "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.",
+ "dev": true,
+ "dependencies": {
+ "browser-process-hrtime": "^1.0.0"
+ }
},
- "whatwg-encoding": {
- "version": "1.0.5",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz",
- "integrity": "sha1-WrrPd3wyFmpR0IXWtPPn0nET3bA=",
+ "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,
- "requires": {
- "iconv-lite": "0.4.24"
+ "dependencies": {
+ "xml-name-validator": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=12"
}
},
- "whatwg-mimetype": {
- "version": "2.3.0",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz",
- "integrity": "sha1-PUseAxLSB5h5+Cav8Y2+7KWWD78=",
- "dev": true
+ "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==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
},
- "whatwg-url": {
- "version": "6.5.0",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/whatwg-url/-/whatwg-url-6.5.0.tgz",
- "integrity": "sha1-8t8Cv/F2/WUHDfdK1cy7WhmZZag=",
+ "node_modules/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==",
"dev": true,
- "requires": {
- "lodash.sortby": "^4.7.0",
- "tr46": "^1.0.1",
- "webidl-conversions": "^4.0.2"
+ "dependencies": {
+ "iconv-lite": "0.6.3"
+ },
+ "engines": {
+ "node": ">=12"
}
},
- "wordwrap": {
- "version": "1.0.0",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/wordwrap/-/wordwrap-1.0.0.tgz",
- "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
- "dev": true
+ "node_modules/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==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
},
- "ws": {
- "version": "4.1.0",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/ws/-/ws-4.1.0.tgz",
- "integrity": "sha1-qXm119TaaL9U7+BAiWfDJIaacok=",
+ "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,
- "requires": {
- "async-limiter": "~1.0.0",
- "safe-buffer": "~5.1.0"
+ "dependencies": {
+ "tr46": "^3.0.0",
+ "webidl-conversions": "^7.0.0"
},
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/wordwrapjs": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz",
+ "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==",
+ "dev": true,
"dependencies": {
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=",
- "dev": true
+ "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/ws": {
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
+ "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
+ "dev": true,
+ "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": {
- "version": "3.0.0",
- "resolved": "https://artifactory.secureserver.net/artifactory/api/npm/node-virt/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
- "integrity": "sha1-auc+Bt5NjG5H+fsYH3jWSK1FfGo=",
+ "node_modules/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==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "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
}
}
diff --git a/package.json b/package.json
index c2f7b0b..cb55c00 100644
--- a/package.json
+++ b/package.json
@@ -3,7 +3,7 @@
"name": "proposal-upsert",
"description": "ECMAScript Proposal, specs, and reference implementation for Map.prototype.upsert",
"scripts": {
- "build": "ecmarkup spec.emu index.html"
+ "build": "ecmarkup --load-biblio @tc39/ecma262-biblio --verbose spec.emu index.html --lint-spec"
},
"homepage": "https://github.com/tc39/template-for-proposals#readme",
"repository": {
@@ -12,6 +12,7 @@
},
"license": "MIT",
"devDependencies": {
- "ecmarkup": "^3.11.5"
+ "@tc39/ecma262-biblio": "^2.1.2771",
+ "ecmarkup": "^19.1.0"
}
}
diff --git a/spec.emu b/spec.emu
index b6f8f05..7bb00cf 100644
--- a/spec.emu
+++ b/spec.emu
@@ -4,55 +4,71 @@
-title: Map.prototype.emplace
+title: Map.prototype.getOrInsert
stage: 2
-contributors: Erica Pramer
+contributors: Jonas Haukenes, Daniel Minor
Introduction
- Given a `key` and a handler object, the `emplace` method will either remap an existing entry, insert a new entry from a mapping function, or both. `emplace` will return
- the updated or inserted value.
+ Given a `key` and a value, the `getOrInsert` method will return the existing value if it exists, or otherwise
+ insert the provided default value and return that value.
+ Similarly, given a `key` and a callback function, the `getOrInsert` method will return the existing value if it
+ exists, or otherwise insert the returned value of the callback function, and return that value.
-
- Map.prototype.emplace ( _key_, _handler_ )
- When the emplace method is called the following steps are taken:
+
+ Map.prototype.getOrInsert ( _key_, _value_ )
+ When the getOrInsert method is called the following steps are taken:
1. Let _M_ be the *this* value.
1. Perform ? RequireInternalSlot(_M_, [[MapData]]).
- 1. Let _entries_ be the List that is _M_.[[MapData]].
- 1. For each Record { [[Key]], [[Value]] } _e_ that is an element of _entries_, do
- 1. If _e_.[[Key]] is not empty and SameValueZero(_e_.[[Key]], _key_) is *true*, then
- 1. If HasProperty(_handler_, "update") is *true*, then
- 1. Let _updateFn_ be ? Get(_handler_, "update").
- 1. Let _updated_ be ? Call(_updateFn_, _handler_, « e.[[Value]], _key_, _M_ »).
- 1. Set _e_.[[Value]] to _updated_.
- 1. Return _e_.[[Value]].
- 1. Let _insertFn_ be ? Get(_handler_, "insert").
- 1. Let _inserted_ be ? Call(_insertFn_, _handler_, « e.[[Value]], _key_, _M_ »).
- 1. Set _e_.[[Value]] to _inserted_.
- 1. Return _e_.[[Value]].
+ 1. For each Record { [[Key]], [[Value]] } _p_ of _M_.[[MapData]], do
+ 1. If _p_.[[Key]] is not empty and SameValueZero(_p_.[[Key]], _key_) is *true*, return _p_.[[Value]].
+ 1. Set _p_.[[Value]] to _value_.
+ 1. Return _p_.[[Value]].
-
- WeakMap.prototype.emplace ( _key_, _handler_ )
- When the emplace method is called the following steps are taken:
+
+ Map.prototype.getOrInsertComputed ( _key_, _callbackfn_ )
+ When the getOrInsertComputed method is called the following steps are taken:
+
+ 1. Let _M_ be the *this* value.
+ 1. Perform ? RequireInternalSlot(_M_, [[MapData]]).
+ 1. If IsCallable(_callbackfn_) is false, throw a *TypeError* exception.
+ 1. For each Record { [[Key]], [[Value]] } _p_ of _M_.[[MapData]], do
+ 1. If _p_.[[Key]] is not empty and SameValueZero(_p_.[[Key]], _key_) is *true*, return _p_.[[Value]].
+ 1. Let _value_ be ? Call(_callbackfn_, _key_).
+ 1. Set _p_.[[Value]] to _value_.
+ 1. Return _p_.[[Value]].
+
+
+
+
+ WeakMap.prototype.getOrInsert ( _key_, _value_ )
+ When the getOrInsert method is called the following steps are taken:
1. Let _M_ be the *this* value.
1. Perform ? RequireInternalSlot(_M_, [[WeakMapData]]).
- 1. Let _entries_ be the List that is _M_.[[WeakMapData]].
- 1. For each Record { [[Key]], [[Value]] } _e_ that is an element of _entries_, do
- 1. If _e_.[[Key]] is not empty and SameValueZero(_e_.[[Key]], _key_) is *true*, then
- 1. If HasProperty(_handler_, "update") is *true*, then
- 1. Let _updateFn_ be ? Get(_handler_, "update").
- 1. Let _updated_ be ? Call(_updateFn_, _handler_, « e.[[Value]], _key_, _M_ »)
- 1. Set _e_.[[Value]] to _updated_.
- 1. Return _e_.[[Value]].
- 1. Let _insertFn_ be ? Get(_handler_, "insert").
- 1. Let _inserted_ be ? Call(_insertFn_, _handler_, « e.[[Value]], _key_, _M_ »)
- 1. Set _e_.[[Value]] to _inserted_.
- 1. Return _e_.[[Value]].
+ 1. For each Record { [[Key]], [[Value]] } _p_ of _M_.[[MapData]], do
+ 1. If _p_.[[Key]] is not empty and SameValueZero(_p_.[[Key]], _key_) is *true*, return _p_.[[Value]].
+ 1. Set _p_.[[Value]] to _value_.
+ 1. Return _p_.[[Value]].
+
+
+ WeakMap.prototype.getOrInsertComputed ( _key_, _callbackfn_ )
+ When the getOrInsertComputed method is called the following steps are taken:
+
+ 1. Let _M_ be the *this* value.
+ 1. Perform ? RequireInternalSlot(_M_, [[WeakMapData]]).
+ 1. If IsCallable(_callbackfn_) is false, throw a *TypeError* exception.
+ 1. For each Record { [[Key]], [[Value]] } _p_ of _M_.[[MapData]], do
+ 1. If _p_.[[Key]] is not empty and SameValueZero(_p_.[[Key]], _key_) is *true*, return _p_.[[Value]].
+ 1. Let _value_ be ? Call(_callbackfn_, _key_).
+ 1. Set _p_.[[Value]] to _value_.
+ 1. Return _p_.[[Value]].
+
+
\ No newline at end of file