refactor: behavior tests

This commit is contained in:
cha0s 2021-01-03 23:40:26 -06:00
parent c5615643ed
commit 38f7b6b4e4
5 changed files with 449 additions and 38 deletions

View File

@ -28,6 +28,7 @@
"lodash.mapvalues": "^4.6.0"
},
"devDependencies": {
"@avocado/entity": "^2.0.0",
"@neutrinojs/airbnb-base": "^9.4.0",
"@neutrinojs/copy": "9.4.0",
"@neutrinojs/mocha": "^9.4.0",

View File

@ -40,8 +40,7 @@ class Actions {
this.promise.tick(elapsed);
return;
}
// Actions execute immediately until a promise is made, or they're all
// executed.
// Actions execute immediately until a promise is made, or they're all executed.
// eslint-disable-next-line no-constant-condition
while (true) {
// Run the action.

View File

@ -6,6 +6,10 @@ import Actions from '../actions';
import compile from '../compilers/compile';
import Context from '../context';
const {
SIDE,
} = process.env;
const decorate = compose(
StateProperty('currentRoutine', {
track: true,
@ -15,6 +19,28 @@ const decorate = compose(
export default (latus) => class Behaved extends decorate(Trait) {
#context;
#currentRoutine;
#routines;
constructor(...args) {
super(...args);
this.#context = new Context(
{
entity: [this.entity, 'entity'],
},
latus,
);
this.#currentRoutine = undefined;
this.#routines = mapValues(
this.params.routines,
(routine) => new Actions(compile(routine, latus)),
);
this.updateCurrentRoutine(this.state.currentRoutine);
}
static behaviorTypes() {
return {
context: {
@ -24,6 +50,10 @@ export default (latus) => class Behaved extends decorate(Trait) {
};
}
get context() {
return this.#context;
}
static defaultParams() {
return {
routines: {},
@ -63,38 +93,10 @@ export default (latus) => class Behaved extends decorate(Trait) {
};
}
static type() {
return 'behaved';
}
constructor(entity, params, state) {
super(entity, params, state);
this._context = new Context(
{
entity: [this.entity, 'entity'],
},
latus,
);
this._currentRoutine = undefined;
this._routines = mapValues(
this.params.routines,
(routine) => new Actions(compile(routine, latus)),
);
this.updateCurrentRoutine(this.state.currentRoutine);
}
destroy() {
this._context.destroy();
this._currentRoutine = undefined;
this._routines = undefined;
}
get context() {
return this._context;
}
updateCurrentRoutine(currentRoutine) {
this._currentRoutine = this._routines[currentRoutine];
this.#context.destroy();
this.#currentRoutine = undefined;
this.#routines = undefined;
}
listeners() {
@ -111,12 +113,28 @@ export default (latus) => class Behaved extends decorate(Trait) {
};
}
methods() {
return {
jumpToRoutine: (routine, index) => {
this.updateCurrentRoutine(routine);
this.#currentRoutine.index = 'number' === typeof index ? index : 0;
},
};
}
tick(elapsed) {
if (AVOCADO_SERVER) {
if (this._currentRoutine && this.entity.isBehaving) {
this._currentRoutine.tick(this._context, elapsed);
if ('client' !== SIDE) {
if (this.#currentRoutine && this.entity.isBehaving) {
this.#currentRoutine.tick(this.#context, elapsed);
}
}
}
updateCurrentRoutine(currentRoutine) {
this.#currentRoutine = this.#routines[currentRoutine];
super.currentRoutine = currentRoutine;
}
};

View File

@ -0,0 +1,151 @@
import {resource} from '@avocado/resource';
import {Latus} from '@latus/core';
import {expect} from 'chai';
import {
buildExpression,
buildExpressions,
buildInvoke,
buildValue,
} from '../src/builders';
const {name} = require('../package.json');
const asyncWait = () => new Promise((resolve) => setTimeout(resolve, 0));
describe(name, () => {
let latus;
let Entity;
beforeEach(async () => {
latus = Latus.mock([
['@avocado/behavior', `${__dirname}/../src`],
'@avocado/entity',
'@avocado/resource',
'@avocado/traits',
]);
await Promise.all(latus.invokeFlat('@latus/core/starting'));
({fromResourceType: {Entity}} = resource(latus));
});
describe('Traits', () => {
describe('Behaved', () => {
let entity;
beforeEach(async () => {
entity = await Entity.load({
traits: {
Behaved: {
params: {
routines: {
initial: buildExpressions([
buildInvoke(
['entity', 'forceMovement'],
[
buildValue([10, 0]),
],
),
buildInvoke(
['Timing', 'wait'],
[
buildValue(1),
],
),
]),
another: buildExpressions([
buildInvoke(
['entity', 'forceMovement'],
[
buildValue([20, 0]),
],
),
]),
one: buildExpressions([
buildInvoke(
['entity', 'forceMovement'],
[
buildValue([30, 0]),
],
),
buildInvoke(
['Timing', 'wait'],
[
buildValue(0),
],
),
buildInvoke(
['entity', 'jumpToRoutine'],
[
buildValue('two'),
],
),
]),
two: buildExpressions([
buildInvoke(
['entity', 'forceMovement'],
[
buildValue([40, 0]),
],
),
buildInvoke(
['entity', 'jumpToRoutine'],
[
buildValue('one'),
],
),
]),
},
},
},
Mobile: {},
Positioned: {},
},
});
});
it('exists', async () => {
expect(entity.is('Behaved')).to.be.true;
});
it('runs routines', async () => {
expect(entity.position).to.deep.equal([0, 0]);
entity.tick(0);
await asyncWait();
expect(entity.position).to.deep.equal([10, 0]);
entity.tick(1);
await asyncWait();
expect(entity.position).to.deep.equal([10, 0]);
entity.isBehaving = false;
entity.tick(1);
await asyncWait();
expect(entity.position).to.deep.equal([10, 0]);
entity.isBehaving = true;
entity.tick(1);
await asyncWait();
expect(entity.position).to.deep.equal([20, 0]);
});
it('can change routines', async () => {
entity.currentRoutine = 'another';
expect(entity.position).to.deep.equal([0, 0]);
entity.tick(0);
await asyncWait();
expect(entity.position).to.deep.equal([20, 0]);
});
it('allows routines to set routine', async () => {
entity.currentRoutine = 'one';
expect(entity.position).to.deep.equal([0, 0]);
entity.tick(0);
await asyncWait();
expect(entity.currentRoutine).to.equal('one');
expect(entity.position).to.deep.equal([30, 0]);
entity.tick(0);
await asyncWait();
expect(entity.currentRoutine).to.equal('one');
expect(entity.position).to.deep.equal([30, 0]);
entity.tick(0);
await asyncWait();
expect(entity.currentRoutine).to.equal('two');
expect(entity.position).to.deep.equal([30, 0]);
entity.tick(0);
await asyncWait();
expect(entity.currentRoutine).to.equal('one');
expect(entity.position).to.deep.equal([70, 0]);
});
});
});
});

View File

@ -2,6 +2,18 @@
# yarn lockfile v1
"@avocado/behavior@2.0.0":
version "2.0.0"
resolved "https://npm.i12e.cha0s.io/@avocado%2fbehavior/-/behavior-2.0.0.tgz#6012a83233beb48ab85d965a1834097961cd7fda"
integrity sha512-f2uTKGXFY0aLxS7VCh7+6q8S7HhkRLnl8tEdNpmqUIlXR7fglm/CCIk5ueZJ2sYCnnBfloptdU31ir8PTCGOBw==
dependencies:
"@avocado/core" "2.0.0"
"@avocado/traits" "^2.0.0"
"@latus/core" "2.0.0"
debug "4.3.1"
deepmerge "^4.2.2"
lodash.mapvalues "^4.6.0"
"@avocado/core@2.0.0", "@avocado/core@^2.0.0":
version "2.0.0"
resolved "https://npm.i12e.cha0s.io/@avocado%2fcore/-/core-2.0.0.tgz#193488e95ae8d6dcae4125adb7a62ee127e370b0"
@ -9,7 +21,69 @@
dependencies:
debug "4.3.1"
"@avocado/resource@^2.0.0":
"@avocado/entity@^2.0.0":
version "2.0.0"
resolved "https://npm.i12e.cha0s.io/@avocado%2fentity/-/entity-2.0.0.tgz#f5ab7b518fd24dbcab56e544e244b9d3063297fc"
integrity sha512-bdjghsEKCHMw3VtQFDYwv9TyC/0byPP62NmYZndvuDxosw9CqCIOuT0RMJRkyy03LMralMzcy3nvvM4MOQHFEQ==
dependencies:
"@avocado/behavior" "2.0.0"
"@avocado/core" "2.0.0"
"@avocado/graphics" "^2.0.0"
"@avocado/math" "2.0.0"
"@avocado/resource" "2.0.0"
"@avocado/s13n" "2.0.0"
"@avocado/timing" "2.0.0"
"@avocado/traits" "^2.0.0"
"@latus/core" "2.0.0"
"@latus/socket" "2.0.0"
debug "4.3.1"
deepmerge "^4.2.2"
lodash.without "^4.4.0"
"@avocado/graphics@2.0.0", "@avocado/graphics@^2.0.0":
version "2.0.0"
resolved "https://npm.i12e.cha0s.io/@avocado%2fgraphics/-/graphics-2.0.0.tgz#cbb8907c96a6386fe98f7abe138a389e0267f7ee"
integrity sha512-vPHr/GBZZuGcRzlXVOuWMTLHfv+hlySsG0ItUJWbP8E6ZMruqG4smgC9QypqYYpvIB0Y1iN+xDJRAhmgF0r4/w==
dependencies:
"@avocado/core" "2.0.0"
"@avocado/input" "2.0.0"
"@avocado/math" "2.0.0"
"@avocado/resource" "2.0.0"
"@avocado/traits" "^2.0.0"
"@latus/core" "^2.0.0"
"@latus/socket" "2.0.0"
"@pixi/constants" "^5.3.6"
"@pixi/core" "^5.3.6"
"@pixi/display" "^5.3.6"
"@pixi/filter-advanced-bloom" "^3.2.0"
"@pixi/filter-color-matrix" "^5.3.6"
"@pixi/graphics" "^5.3.6"
"@pixi/settings" "^5.3.6"
"@pixi/sprite" "^5.3.6"
"@pixi/text" "^5.3.6"
debug "4.3.1"
image-size "^0.9.3"
"@avocado/input@2.0.0":
version "2.0.0"
resolved "https://npm.i12e.cha0s.io/@avocado%2finput/-/input-2.0.0.tgz#fb02293506a390c109b0662e25cc48049163faf9"
integrity sha512-bfhhlFAwNnVdDjhDOHG5zr7TwBnlr3kD9s16nAgvDOV+wijUw+1N3cpbj2NEyXxhATsmvCQ6I7Jyzik32jYX3A==
dependencies:
"@latus/core" "2.0.0"
"@latus/socket" "2.0.0"
debug "4.3.1"
"@avocado/math@2.0.0":
version "2.0.0"
resolved "https://npm.i12e.cha0s.io/@avocado%2fmath/-/math-2.0.0.tgz#0b46612f7b1dca75e0d3d94937d0680ffdb84544"
integrity sha512-S8iPJduKeURqrVc/co2SGkJkDgxwdH85lsoi9TaKfWkJIWvkAtLREZNLS+Tgu0CrrTahzszN4Anng8mV53+ZVQ==
dependencies:
"@avocado/core" "2.0.0"
"@latus/core" "^2.0.0"
d3-quadtree "^2.0.0"
debug "4.3.1"
"@avocado/resource@2.0.0", "@avocado/resource@^2.0.0":
version "2.0.0"
resolved "https://npm.i12e.cha0s.io/@avocado%2fresource/-/resource-2.0.0.tgz#7cbc44874386c067d58bcfc8a5ba4c42e3261565"
integrity sha512-qpYip27Ih6dfYo7E5ZbqjKuYtKMo4WytullPSTJcuyZ892dRbEKHEqbzH/z65W39wtuVfTVpwVBJV7SCRYnRpw==
@ -20,7 +94,7 @@
deepmerge "^4.2.2"
uuid "^8.3.2"
"@avocado/s13n@^2.0.0":
"@avocado/s13n@2.0.0", "@avocado/s13n@^2.0.0":
version "2.0.0"
resolved "https://npm.i12e.cha0s.io/@avocado%2fs13n/-/s13n-2.0.0.tgz#a32e92c197e2915b1b7049d1926bb6d6c14a8f35"
integrity sha512-GMl0CwYz4eZV3PnDlaCnd5CseKtwdza6zG5TWy2g+5xBi+OcOwjKRAqKI4gOiiaJcGYtxnXJvSajdE12fhZGmA==
@ -30,6 +104,20 @@
debug "4.3.1"
msgpack-lite "^0.1.26"
"@avocado/timing@2.0.0":
version "2.0.0"
resolved "https://npm.i12e.cha0s.io/@avocado%2ftiming/-/timing-2.0.0.tgz#8cc6e50449da6b8fa7473befc147b86b45540d5e"
integrity sha512-PK70bGLbbFTqy2ieibeaoEQQNRFZK1sqGlLfg/SafjEHXdX8Dzm3kxh6mgudOiPDtBwo1M8jl1IQi6aYJEGXIA==
dependencies:
"@avocado/core" "2.0.0"
"@avocado/graphics" "2.0.0"
"@avocado/math" "2.0.0"
"@avocado/resource" "2.0.0"
"@avocado/traits" "^2.0.0"
"@latus/core" "2.0.0"
"@latus/socket" "2.0.0"
debug "4.3.1"
"@avocado/traits@^2.0.0":
version "2.0.0"
resolved "https://npm.i12e.cha0s.io/@avocado%2ftraits/-/traits-2.0.0.tgz#eb8dbefdb96e0680caab79ccb5b7bb57a9bf5c35"
@ -1101,6 +1189,121 @@
babel-merge "^3.0.0"
deepmerge "^1.5.2"
"@pixi/constants@5.3.7", "@pixi/constants@^5.3.6":
version "5.3.7"
resolved "https://npm.i12e.cha0s.io/@pixi%2fconstants/-/constants-5.3.7.tgz#a2e1789a98deb3713cfcb3eba3db84588bc9161e"
integrity sha512-MBcgIM/mSqonFezkCI9080IqNlc0wb8S9QJ5otBdseOWUQa/ua2jF7Jd1sCBGmi0IzS9/NOHFXzZVTdS7AC7Ow==
"@pixi/core@5.3.7", "@pixi/core@^5.3.6":
version "5.3.7"
resolved "https://npm.i12e.cha0s.io/@pixi%2fcore/-/core-5.3.7.tgz#a8d65ca17f0c4ef8c0c5a22d31b9e02a4ab73b93"
integrity sha512-WBhU2f5aJSVVaFP55FFBFKjKlRf5fYGxgA/U3kD4yD4Y3d3d6V3MIZv+o0VX+kBs1Eq7ePZqEv2smDrlzzMEjQ==
dependencies:
"@pixi/constants" "5.3.7"
"@pixi/math" "5.3.7"
"@pixi/runner" "5.3.7"
"@pixi/settings" "5.3.7"
"@pixi/ticker" "5.3.7"
"@pixi/utils" "5.3.7"
"@pixi/display@5.3.7", "@pixi/display@^5.3.6":
version "5.3.7"
resolved "https://npm.i12e.cha0s.io/@pixi%2fdisplay/-/display-5.3.7.tgz#b661d2ecfd2a67f213665a0698acd29e17eee8fe"
integrity sha512-ma1JyLe5vaEgmaOR+anvj5YOKqT9OEWnboIe7NVmwGF1CZ7JFnB12rsRulHUsSaFG9bP5xjvroAZjFg/WvyGLw==
dependencies:
"@pixi/math" "5.3.7"
"@pixi/settings" "5.3.7"
"@pixi/utils" "5.3.7"
"@pixi/filter-advanced-bloom@^3.2.0":
version "3.2.0"
resolved "https://npm.i12e.cha0s.io/@pixi%2ffilter-advanced-bloom/-/filter-advanced-bloom-3.2.0.tgz#c345adebf6605d814fb7ff8fda2292ed3d04ec01"
integrity sha512-t5WlbFGewxYQ8biRsgQCW/j7vNwQxYVDv3DpHJ7PghNdYlD2OKQ7b6bgcUzFQcsbJ2fm/8e+dSKI17zCK5idMg==
dependencies:
"@pixi/filter-kawase-blur" "3.2.0"
"@pixi/filter-color-matrix@^5.3.6":
version "5.3.7"
resolved "https://npm.i12e.cha0s.io/@pixi%2ffilter-color-matrix/-/filter-color-matrix-5.3.7.tgz#230cafe46bde36e25441b13f3ac5dd8e8fee4311"
integrity sha512-Z12cxoHx9uMh3CZ0PLVRzsaFHHF/CfU3J83KI9k+Bg/DFOh/J/5EToCd44jYJbMKp3nvXcO1EJyZ3wwC/IsyfQ==
dependencies:
"@pixi/core" "5.3.7"
"@pixi/filter-kawase-blur@3.2.0":
version "3.2.0"
resolved "https://npm.i12e.cha0s.io/@pixi%2ffilter-kawase-blur/-/filter-kawase-blur-3.2.0.tgz#f3fe6e3c17d191ae353959768c1170e85b2ad1dc"
integrity sha512-IO1UKn/XLvnV+ya4r1UOC9fTfXZjWvH9m6eQ/U+moBsQN5I5FihQfXCu586X4jb9VHNu3gFl7SUzirobhBfgtA==
"@pixi/graphics@^5.3.6":
version "5.3.7"
resolved "https://npm.i12e.cha0s.io/@pixi%2fgraphics/-/graphics-5.3.7.tgz#36ae80e2508e0a9c61ce454807d517d370d90a74"
integrity sha512-+6+bT/AC29a1Hw5XDxsH1UqBsXSqcna7wNTTrBQ02owotIJtyRc6w48f5qxzhxycumyVCR87IV5tAtdwX3xhag==
dependencies:
"@pixi/constants" "5.3.7"
"@pixi/core" "5.3.7"
"@pixi/display" "5.3.7"
"@pixi/math" "5.3.7"
"@pixi/sprite" "5.3.7"
"@pixi/utils" "5.3.7"
"@pixi/math@5.3.7":
version "5.3.7"
resolved "https://npm.i12e.cha0s.io/@pixi%2fmath/-/math-5.3.7.tgz#066e7ea149fd38db8d8a9584aac5f41d02b36bdd"
integrity sha512-WnjUwX7rkxR36F0xknpsNd9BsfQosV0BbyFE0Il88IURBM3Tu9X4tC7RGJDgWU+aXw23HgHu0j+MWJrCVCM2fA==
"@pixi/runner@5.3.7":
version "5.3.7"
resolved "https://npm.i12e.cha0s.io/@pixi%2frunner/-/runner-5.3.7.tgz#78ed2c92b392b8c099d2e4557dded7faa921446b"
integrity sha512-kt5apNb21HAvpBaDaPRs33k2O0VzrKe13w4we8iftCpXX8w68ErAY1lH68vmtDNrxnlHg4M9nRgEoMeiHlo2RA==
"@pixi/settings@5.3.7", "@pixi/settings@^5.3.6":
version "5.3.7"
resolved "https://npm.i12e.cha0s.io/@pixi%2fsettings/-/settings-5.3.7.tgz#b661883231bf2a1ff5260c214bd0c4b438759841"
integrity sha512-g6AoRSGWxU34gtKSQwX2AMQoLUv86L/5iIXRsqo+X4bfUSCenTci1X7ueVrSIbo39dxh6IOpriZF2Yk3TeHG5w==
dependencies:
ismobilejs "^1.1.0"
"@pixi/sprite@5.3.7", "@pixi/sprite@^5.3.6":
version "5.3.7"
resolved "https://npm.i12e.cha0s.io/@pixi%2fsprite/-/sprite-5.3.7.tgz#c6edf3d4a9928868696b62e35a60ded27d167058"
integrity sha512-Bjl+NOOvigEzUsm1cDr1KmBUpPSWO8pDXpUPTi+v2N75gwRfTycmj5f2TU0QmMW3Gc6sv0CB0AkL7dkMPwPb8g==
dependencies:
"@pixi/constants" "5.3.7"
"@pixi/core" "5.3.7"
"@pixi/display" "5.3.7"
"@pixi/math" "5.3.7"
"@pixi/settings" "5.3.7"
"@pixi/utils" "5.3.7"
"@pixi/text@^5.3.6":
version "5.3.7"
resolved "https://npm.i12e.cha0s.io/@pixi%2ftext/-/text-5.3.7.tgz#cb71b2576bdc1f66fb79977d281f9575dd06d3d5"
integrity sha512-WVAc31MDgHTvP0dJNWsvLVJhjeVGZ3NrLpHcH9iIAd6HVO5Z+i+fk4zvodD+Y7jWU0psx8ZD8xe1wy8ECfbCBA==
dependencies:
"@pixi/core" "5.3.7"
"@pixi/math" "5.3.7"
"@pixi/settings" "5.3.7"
"@pixi/sprite" "5.3.7"
"@pixi/utils" "5.3.7"
"@pixi/ticker@5.3.7":
version "5.3.7"
resolved "https://npm.i12e.cha0s.io/@pixi%2fticker/-/ticker-5.3.7.tgz#c331b270042d507fe18543ae435a9a857a8fd5ae"
integrity sha512-ZEXiJwPtuPeWa0QmRODF5qK0+ugZu/xeq7QxCvFOCc3NFVBeGms4g92HPucOju9R7jcODIoJxtICALsuwLAr9w==
dependencies:
"@pixi/settings" "5.3.7"
"@pixi/utils@5.3.7":
version "5.3.7"
resolved "https://npm.i12e.cha0s.io/@pixi%2futils/-/utils-5.3.7.tgz#55fe2a2fbf0fba842da5a602576ce68c498e7e16"
integrity sha512-f8zAeHHURxfwBr8MZiXEIwY2h9wbS6vN0ypvapGvKFOexZ1EInTs35FhEiRWzLEPLHyn1RgCdKzR2zl++E4tIw==
dependencies:
"@pixi/constants" "5.3.7"
"@pixi/settings" "5.3.7"
earcut "^2.1.5"
eventemitter3 "^3.1.0"
url "^0.11.0"
"@types/anymatch@*":
version "1.3.1"
resolved "https://npm.i12e.cha0s.io/@types%2fanymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a"
@ -2489,6 +2692,11 @@ cyclist@^1.0.1:
resolved "https://npm.i12e.cha0s.io/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9"
integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=
d3-quadtree@^2.0.0:
version "2.0.0"
resolved "https://npm.i12e.cha0s.io/d3-quadtree/-/d3-quadtree-2.0.0.tgz#edbad045cef88701f6fee3aee8e93fb332d30f9d"
integrity sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw==
debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9:
version "2.6.9"
resolved "https://npm.i12e.cha0s.io/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
@ -2789,6 +2997,11 @@ duplexify@^3.4.2, duplexify@^3.6.0:
readable-stream "^2.0.0"
stream-shift "^1.0.0"
earcut@^2.1.5:
version "2.2.2"
resolved "https://npm.i12e.cha0s.io/earcut/-/earcut-2.2.2.tgz#41b0bc35f63e0fe80da7cddff28511e7e2e80d11"
integrity sha512-eZoZPPJcUHnfRZ0PjLvx2qBordSiO8ofC3vt+qACLM95u+4DovnbYNpQtJh0DNsWj8RnxrQytD4WA8gj5cRIaQ==
ee-first@1.1.1:
version "1.1.1"
resolved "https://npm.i12e.cha0s.io/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
@ -3239,6 +3452,11 @@ event-lite@^0.1.1:
resolved "https://npm.i12e.cha0s.io/event-lite/-/event-lite-0.1.2.tgz#838a3e0fdddef8cc90f128006c8e55a4e4e4c11b"
integrity sha512-HnSYx1BsJ87/p6swwzv+2v6B4X+uxUteoDfRxsAb1S1BePzQqOLevVmkdA15GHJVd9A9Ok6wygUR18Hu0YeV9g==
eventemitter3@^3.1.0:
version "3.1.2"
resolved "https://npm.i12e.cha0s.io/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7"
integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==
eventemitter3@^4.0.0:
version "4.0.7"
resolved "https://npm.i12e.cha0s.io/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f"
@ -4056,6 +4274,13 @@ ignore@^4.0.6:
resolved "https://npm.i12e.cha0s.io/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
image-size@^0.9.3:
version "0.9.3"
resolved "https://npm.i12e.cha0s.io/image-size/-/image-size-0.9.3.tgz#f7efce6b0a1649b44b9bc43b9d9a5acf272264b6"
integrity sha512-5SakFa79uhUVSjKeQE30GVzzLJ0QNzB53+I+/VD1vIesD6GP6uatWIlgU0uisFNLt1u0d6kBydp7yfk+lLJhLQ==
dependencies:
queue "6.0.1"
import-fresh@^3.0.0, import-fresh@^3.2.1:
version "3.3.0"
resolved "https://npm.i12e.cha0s.io/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
@ -4404,6 +4629,11 @@ isexe@^2.0.0:
resolved "https://npm.i12e.cha0s.io/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
ismobilejs@^1.1.0:
version "1.1.1"
resolved "https://npm.i12e.cha0s.io/ismobilejs/-/ismobilejs-1.1.1.tgz#c56ca0ae8e52b24ca0f22ba5ef3215a2ddbbaa0e"
integrity sha512-VaFW53yt8QO61k2WJui0dHf4SlL8lxBofUuUmwBo0ljPk0Drz2TiuDW4jo3wDcv41qy/SxrJ+VAzJ/qYqsmzRw==
isobject@^2.0.0:
version "2.1.0"
resolved "https://npm.i12e.cha0s.io/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
@ -4626,6 +4856,11 @@ lodash.omit@^4.5.0:
resolved "https://npm.i12e.cha0s.io/lodash.omit/-/lodash.omit-4.5.0.tgz#6eb19ae5a1ee1dd9df0b969e66ce0b7fa30b5e60"
integrity sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA=
lodash.without@^4.4.0:
version "4.4.0"
resolved "https://npm.i12e.cha0s.io/lodash.without/-/lodash.without-4.4.0.tgz#3cd4574a00b67bae373a94b748772640507b7aac"
integrity sha1-PNRXSgC2e643OpS3SHcmQFB7eqw=
lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20:
version "4.17.20"
resolved "https://npm.i12e.cha0s.io/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52"
@ -5850,6 +6085,13 @@ querystringify@^2.1.1:
resolved "https://npm.i12e.cha0s.io/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6"
integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==
queue@6.0.1:
version "6.0.1"
resolved "https://npm.i12e.cha0s.io/queue/-/queue-6.0.1.tgz#abd5a5b0376912f070a25729e0b6a7d565683791"
integrity sha512-AJBQabRCCNr9ANq8v77RJEv73DPbn55cdTb+Giq4X0AVnNVZvMHlYp7XlQiN+1npCZj1DuSmaA2hYVUUDgxFDg==
dependencies:
inherits "~2.0.3"
randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0:
version "2.1.0"
resolved "https://npm.i12e.cha0s.io/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"